安全研究 >> 安全研究详情

安全实验室 | 内网渗透—横向移动方法总结(下)

作者: 美创科技安全实验室发布日期: 11月06日

上一篇我们介绍了内网渗透中横向移动的前两种攻击方法:利用IPC和Windows系统服务。通过以上两个方式,我们成功的进行了简单的内网横向移动。本期我们将继续介绍横向移动的其余方法,而且是更加贴近实战的方式,话不多说,直接开始!


01、利用PsExec工具进行横向渗透


1)PsExec工具介绍


PsExec 是 windows 下非常好的一款远程命令行工具。PsExec的使用不需要对方主机开方3389端口,只需要对方开启admin$共享 (该共享默认开启)。但是,假如目标主机开启了防火墙,PsExec也是不能使用的,会提示找不到网络路径。由于PsExec是Windows提供的工具,所以杀毒软件将其列在白名单中。


工具连接:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec


2)攻击流程


目标机上开启了admin$共享,且未开启防火墙,导致跳板机可以与目标机建立ipc$连接,同时释放二进制文件psexecsvc.exe到目标机中,然后在跳板机上通过执行运行PsExec,会为目标机远程创建一个PsExec服务并启动,接下来攻击者只需在跳板机上利用PsExec的远程命令构造一个交互shell即可实现横向移动。


3)攻击复现


跳板机:192.168.20.35(Windows10)

目标机:192.168.210.102(Windows 10)


首先攻击者在跳板机上建立与目标机的IPC连接。



其次攻击者使用PsExec.exe工具,向目标机传送远程命令(远程创建一个PsExec的服务,执行远程指令并回显数据),其中-accepteula参数是因为第一次执行PsExec时会弹出确认框,而使用该参数就可以在静默模式下运行而不会被发现,-s参数是以system权限运行该进程,获得一个system权限的交互式shell,实现横向移动。


执行命令:PsExec.exe-accepteula \\<目标机IP> -s cmd.exe



在使用PsExec执行远程命令时,会在目标机中创建一个新的服务,如下图。在结束交互后,PsExec服务会自动删除,但是在创建以及删除时会产生大量日志信息,所以可以基于此对攻击者进行溯源。



02、利用WMI进行横向渗透


1)WMI工具介绍


WMI是“Windows Management Instrumentation”的缩写,WMI是从Windows98开始,系统自带的一系列工具集。WMI提供了/node选项,可以通过135端口上的RPC服务进行远程访问,或者执行远程命令。


由于刚刚讲过的PsExec在内网中大杀四方后,很多安全厂商开始将PsExec加入了黑名单,所以攻击者暴露的可能性陡然增加。但是根据研究情况来看,Windows操作系统默认不会将WMI的操作记录到日志当中,而且因为采用的是无文件攻击,所以导致WMI具有极高的隐蔽性。由此,越来越多的APT开始使用WMI进行攻击,利用WMI可以进行信息收集、探测、反病毒、虚拟机检测、命令执行、权限持久化等操作。


2)攻击流程


目标机上开启了135端口和445端口,攻击者可以直接在跳板机上利用WMI命令,远程执行指令,例如开启目标机的远程桌面服务、或者结合ipc+type的方式实现命令交互(WMI执行远程命令没法回显)、或者利用WMIEXEC.py(强化版WMI)获得交互式shell,实现横向移动。


当然在整个攻击过程中,如果攻击者无法直接在跳板机上操作,则需要进行一下socks代理,将攻击机上的流量转发到跳板机上,进而传达到目标机上,具体的操作过程可以参考前几篇文章《利用EarthWorm实现内网穿透》。


3)攻击复现


攻击机:192.168.210.38(KaliLinux)

跳板机:192.168.20.35(Windows10)

目标机:192.168.210.102(Windows 10)


攻击者利用WMIC执行远程命令,查看目标机上的进程信息。

wmic /node:<目标机IP>/user:<name> /password:<password> process list brief



攻击者利用WMIC并结合ipc+type执行远程交互指令。攻击者通过WMIC命令启动目标机上的cmd程序,执行命令并将结果保存在C:\result.txt文件中,然后利用type命令读取目标机上result.txt文件的内容,实现交互。


wmic /node:192.168.183.130/user:administrator /password:Liu78963 process call create "cmd.exe /c<命令> > C:\result.txt"



Type \\192.168.210.102\c$\result.txt



攻击者利用wmiexec.py,通过提交目标机的用户名及密码,即可直接获得一个交互式shell,成功进行横向移动。Wmiexec.py脚本是impacket工具包中的一个工具,是一个强化版的wmic,同时还支持socks代理。执行以下命令即可:

Python wmiexec.py<username>:<password>@<目的IP>



03利用哈希传递攻击进行横向移动


1)攻击简介


哈希传递攻击也称为PTH(Pass The Hash),是一种在内网渗透中很重要的一种横向移动方法,通过PTH攻击者可以在不需要知道明文密码的情况下,利用NTLM Hash和LM HASH直接登录目标机或者反弹Shell。而且需要注意的是,这里的目标机通常是域控(DC)。


其实PTH攻击的产生原因非常简单,因为在域环境中,域管理员是可以利用域账号管理每一台域内主机的,如果管理员利用域账号登陆了某一台主机,则该主机的lsass.exe就会像往常一样,将登录者的账号记录下来(有关lsass.exe的介绍可以翻看《获得域内单机Hash密码方法总结》),但是需要注意的是在Windows Server 2012 以前,lsass.exe是可以记录明文密码的,攻击者就不需要通过PTH进行移动了,只有在Win Server 2012以后的版本,lsass.exe无法获得明文密码,攻击者可以利用某些手段,获得Hash 密码,如果碰巧这就是域管理员所使用的密码hash的话,那么攻击者就可以利用该Hash伪装成域管理员登陆域控或者其他主机。


2)攻击复现


跳板机:192.168.154.10(Windows7)

目标机:192.168.154.30(Windows2008 R2)(域控DOMORE.ME)


攻击者利用Mimikatz进行PTH攻击

攻击者在控制了域内某台跳板机后,从攻击机上传一个Mimikatz到跳板机上,通过执行以下命令可以获得本机账号,如果域管理员曾经使用域账号登陆过这台机器,Mimikatz就可以获得域账号的密码Hash,如下:



在获取密码Hash之后,执行以下命令,就可以将域账号的Hash密码传递到域控当中

sekurlsa::pth /user:<用户名> /domain:<IP或者域名> /ntlm:<域账号的Hash值>


利用此方法,不仅可以登陆域控,也可以登陆域内其他主机,如果输入的是域名则会传递到域控当中,如果输入的是域内机器主机IP则会传递到相应主机中。


执行完上述命令后,会回弹一个shell,利用该shell可以无需用户名和密码远程访问域控或其他域内主机。



04、利用票据传递攻击进行横向移动


1)攻击简介


票据传递攻击也成为PTT,之前我们讲的PTH是基于NTLM认证的,除了这种认证方法外,还有一种认证方法是基于Kerberos协议的,而PTT就是基于Kerberos协议进行攻击。除了协议不同外,两种攻击方法还有一个不同点那就是所需目标机的权限不同。在渗透测试中,想要成功进行PTH攻击,必须获得目标机器的管理权限,而PTT则不需要。


具体关于Kerberos的认证协议是怎么工作的,这个我会放到下一期单独讲解。简单来说,Kerberos提供了两个重要的东西:黄金票据、白银票据,用来维持用户对域控的权限。其中还有许许多多的认证信息伴随着两个票据的产生,其中有一个叫做PAC(Privilege Attribute Certificate)的东西,是我们着重要关注的对象。


PAC又叫特权属性证书,是用来验证客户端的访问权限的。其中有个经典的漏洞就是利用了他,MS14-068,该漏洞允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意的PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。普通用户可以通过呈现具有改变了PAC的Kerberos TGT来获得票证,进而伪造票据获得管理员权限。


2)攻击复现


跳板机:192.168.154.20(WindowsServer 2008)

目标机:192.168.154.30(WindowsServer 2012)(域控DOMORE.ME)


攻击者在跳板机上,查询该台机器在域内的SID值,whoami /all



攻击者利用MS14-068的EXP,生成基于该SID的票据,执行以下命令

ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器ip地址 -p 域成员密码


EXP的下载项目为:

https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068



可以看到所生成的票据,后缀为ccache



攻击者在跳板机上打开Mimikatz,首先清楚当前机器中所有凭证,如果有域成员凭证会影响凭证伪造。Kerberos::purge



执行以下命令,将票据注入到内存当中:

mimikatz # kerberos::ptc 票据文件



注入成功后,可以与域控直接建立远程连接,执行命令等操作,如下


服务热线:400-811-3777
Copyright ©2005-2020 杭州美创科技有限公司. All Rights Reserved. 浙ICP备12021012号-1 网站地图