精华 丢掉PSEXEC使用wmi来横向渗透
发布于 2 年前 阅读权限 无需登录 作者 sanr 6548 次浏览 来自 Hunting专场

前言:

很多人在渗透测试的时候还是使用PSEXEC式工具, PSEXEC式的工具有国外大牛写了各种语言的,如Metasploit的psexec psexec_psh,Impacket psexec,pth-winexe,Empire Invoke-Psexec,最原始Sysinternals的工具PSEXEC模块。这些工具的工作非常出色,但是经过这么多年的发展,psexec类的工具在现在各种防御软件环境下,很多时候无法开展渗透测试工作。

在win下要想执行命令有几种方法 1、ipc上传at&schtasks远程执行 2、psexec 这也是用的最多,但是会留下痕迹 3、wmi 最安全方法,没有任何知觉,所有window系统启用服务,但防火墙开启将会无法连接 4、PsRemoting posershel远程执行命令

PSEXEC执行原理

1、通过ipc$连接,然后释放psexesvc.exe到目标机器。
2、通过服务管理SCManager远程创建psexecsvc服务,并启动服务。
3、客户端连接执行命令,服务端启动相应的程序并执行回显数据。
 这里所指是Sysinternals的psexec,但是msf Impacket pth 工具中的psexec都大同小异,用的都是都是这种思路。

为什么丢弃PSEXEC

psexec类工具动静大,专业点的的杀毒软件就能检测到,并且偶尔退出的时候服务不能删除,需要开启admin$共享,即使在可以使用psexec进行渗透测试,但是安装服务也会留下明显的日志,而且服务没有删除的风险更大,这样对于攻击事后溯源来说,调查人员会通过日志等信息来推测出你的攻击过程。但是它的优点在于,能直接给我们提供目标的system权限 clipboard.png clipboard (1).png

使用WMI来执行命令

WMI 的全称是 Windows Management Instrumentation,它出现在所有的 Windows 操作系统中,并由一组强大的工具集合组成,用于管理本地或远程的 Windows 系统,攻击者使用wmi来进行攻击,但Windows系统默认不会在日志中记录这些操作,可以做到无日志,攻击脚本无需写入到磁盘,增加了隐蔽性,越来越多的apt事件中使用WMI进行攻击,利用WMI可以进行信息收集、探测,反病毒和虚拟机检测,命令执行,权限持久化等操作。

我最早也不喜欢wmi,因为wmi执行命令是没有回显的,没有回显显然不是我们想要的,不过老外在hes2014提出了回显的思路,在加上psexec式的攻击很多的杀软已开始查杀,在这种情况下wmi攻击还是很有必要的。 http://2014.hackitoergosum.org/slides/day1_WMI_Shell_Andrei_Dumitrescu.pdf PTH-WMIS (最早wmi攻击的工具,单条命令执行,无回显,需要pth-smbget配合读取结果) impackets wmiexec(Linux跨window经常用)
wmiexec.vbs (h3he) Invoke-WmiCommand&Invoke-PowerShellWmi window本地wmic测试结果,默认情况下是无法得到回显的,显然这不是我们想要的,在渗透过程中,没有回显是特别糟糕。 wmic /node:192.168.38.137 /user:administrator /password:123456 process call create cmd.exe clipboard (2).png 使用wmiexec.vbs执行命令测试。 clipboard (3).png 使用impackets wmiexec执行命令测试,wmiexec执行命令可以回显的,并且在Linux跨window的渗透的时候经常使用。 wmiexec.py administrator:[email protected] clipboard (4).png

使用PsRemoting来执行命令

PsRemoting远程命令执行基于WinRM,WinRM指的是Windows远程管理服务,它会监听http(5985);https(5986)端口,Windows Server2012中该功能是默认启动,但2008或2008 R2则默认是禁用的,但是不排除管理员为了方便他们对服务器进行远程管理,会将这个端口开启。

通过Enable-PSRemoting打开PS远程管理,启动了Kerberos认证。这个方法只适合两台电脑在相同域或信任域内的指定电脑(名字可以带后缀).但它不支持跨域、域外或IP地址。

如果在工作组环境中,必须设置信任,重启Winrm,才可以进行远程管理。

利用powershell渗透可以绕过杀软,绕过白名单防护设备,并且是交互式。杀人越货神器。

但是由于默认禁用的原因,我在内网渗透测试的时候,没有使用过这种技术。

Enter-PSSession 192.168.38.137 -Credential administrator clipboard (5).png

总结

内网渗透更推荐的时候更推荐使用wmi,wmi的好处我已经说过了,但是wmi并不是万能的,根据自身的网络环境来调整渗透手法,做渗透测的过程中擦掉自己痕迹,不使用arp等动静特别大攻击手法。

16 回复

赞 学习了

大哥牛逼

大哥牛逼

从防御角度: Psexec创建服务就可以作为一个简单的日志审计点,同时在NT6后引UAC在渗透过程中也需要考虑。 从攻击角度: 我随意总结下几个项目 msf的模块 http://www.rapid7.com/db/modules/exploit/windows/smb/psexec smbexec https://github.com/pentestgeek/smbexec winexe http://sourceforge.net/projects/winexe/ etc … 事实上偶像mubix牛曾在他的议题《Dirty Little Secrets They Didn’t Teach You In Pentest Class》讲到过很多类似技巧 :)

@admin iswin爱划水大哥别老跟着发牛逼了啊

@darksnake 管理员估计是个彩笔啊老是发牛逼牛逼的,这个才是我的号啊!

@darkray 我实验过一些类似psexec的东西,这里从防御的角度来说的话,那么关键是你怎么去检测创建服务的合法性啊,psexec默认好像是psexec开头,其它的都是随机的貌似,怎么检测?

pth 全系列: pth-net pth-rpcclient pth-smbclient pth-smbget pth-winexe pth-wmic pth-wmis https://github.com/byt3bl33d3r/pth-toolkit

在有杀软件的情况下,现在psexec会经常遇到"拒绝访问"的错误。用wmiexec.py就没这个问题,而且还可以通过反弹代理对目标内网进行访问,只是运行的程序不能是阻塞挂起的,不然就会断开连接并且在此程序未结束前不能再连接上。

这篇文章很应景啊

powershell,psexec,wmi 组合使用

psexec在使用过程中会在远程创建服务啊

厉害了!!!

wmi干活有时候挺给力。

回到顶部