【技术分享】丢掉PSEXEC来横向渗透

0. 前言


在 渗透测试时,很多人还是在使用PSEXEC类工具。PSEXEC类的工具有各种语言的实现,如Metasploit的psexec psexec_psh,Impacket psexec,pth-winexe,Empire Invoke-Psexec,最早Sysinternals公司pstools工具包当中的psexec。 

这些工具都非常出色,但经过这么多年的发展,在各种防御软件环境下psexec类工具很多时候已经无法开展渗透测试工作。

在win下要想执行命令有几种方法:

IPC上传at&schtasks远程执行

PSEXEC 这也是用的最多,但是会留下痕迹

WMI 最安全方法,没有任何知觉,所有window系统启用服务,但防火墙开启将会无法连接

PsRemoting posershel远程执行命令

 

1. PSEXEC


PSEXEC执行原理

通过ipc$连接,然后释放psexesvc.exe到目标机器。

通过服务管理SCManager远程创建psexecsvc服务,并启动服务。

客户端连接执行命令,服务端启动相应的程序并执行回显数据。

这里描述的是Sysinternals中的psexec,不过MSF、Impacket、pth 工具中的psexec用的都是同种思路。

为什么丢弃PSEXEC

psexec类工具会释放文件,特征明显,专业的杀毒软件都能检测到。

需要安装服务,会留下日志,并且退出时偶尔会出现服务不能删除的情况。

需要开启admin$ 445端口共享。

在事后攻击溯源时,调查人员会通过日志信息来推测出你的攻击过程。但是它的优点在于,能直接给我们提供目标主机的system权限。

http://p4.qhimg.com/t0107a9c944ec158195.png

http://p8.qhimg.com/t01e98cfeeef7bf34dd.png

 

2. 使用WMI来执行命令


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

最开始我不太喜欢WMI,因为通过WMI执行的命令是没有回显的,这会带来很大的不便。不过在HES2014上有研究者提出了回显的思路,加上psexec类的攻击已被很多的杀软查杀,研究下WMI攻击还是很有必要的。

《WMI SHELL》 - new way to get shells on remote Windows machines using only the WMI service

 

1
2
3
4
5
常见的WMI攻击工具有这些
PTH-WMIS (最早wmi攻击的工具,单条命令执行,无回显,需要pth-smbget配合读取结果)
impackets wmiexec(Linux跨window经常用)
wmiexec.vbs (国人制造 为了回显会写文件)
Invoke-WmiCommand&Invoke-PowerShellWmi

window本地的测试工具wmic默认情况下是无法得到回显的,显然这不是我们想要的

1
wmic /node:192.168.38.137 /user:administrator /password:123456 process call create cmd.exe

http://p1.qhimg.com/t01490d7dff151d628c.png

使用wmiexec.vbs执行命令测试。 

http://p2.qhimg.com/t01e091cdfff09a1efa.png

使用impackets wmiexec执行命令测试,执行命令可以回显。在Linux跨window渗透时候经常使用。

1
wmiexec.py administrator:pass@192.168.38.137

http://p5.qhimg.com/t01a575c58c388c654c.png

 

3. 使用PsRemoting来执行命令


PowerShell 远程命令执行基于WinRM。WinRM指的是Windows远程管理服务,它会监听HTTP(5985)、HTTPS(5986),不过此服务除了 Windows Server 2012及R2默认启用外,其他默认都是禁用的。管理员为了方便对服务器的远程管理,也许将此端口开启,这种事就像内网弱口令一样,做渗透嘛,什么奇迹都 有可能发生。 

利用PowerShell渗透可以绕过杀软、绕过白名单防护设备,并且还可以得到返回的数据,简直是杀人越货神器。但由于默认禁用的原因,在内网渗透测试时,我暂时还未使用过这种技术。

1
Enter-PSSession 192.168.38.137 -Credential  administrator

http://p6.qhimg.com/t01461f7ac28d4c5d6c.png

 

4. 总结


其实说了这么多,在内网渗透的时候更推荐使用WMI。WMI的好处有很多,但WMI也不是万能的,还是需要根据具体的网络环境来调整渗透手法,渗透测试过程中要牢记擦掉自己痕迹,不使用ARP等动静特别大攻击手法。

对于不知道psexec执行会留下什么痕迹的同学可以看看 http://bobao.360.cn/learning/detail/3186.html。昨天刚和同事讨论研究完psexec的执行过程后便发现这篇文章,但是它没有讲清其执行原理。

posted @ 2016-11-22 19:22  linuxsec  阅读(497)  评论(0编辑  收藏  举报