内网渗透场景中,攻击者在拿到机器有效凭据后,常会进行横向移动获取更多机器资源。impacket工具包是安全评估人员使用频率较高的工具之一,其中实现了包括SMB、RPC、NTLM、Kerberos等大量的Windows通信协议,基于这些底层实现我们可以在内网中和其他机器资源建立通信。本文旨在通过分析其中和内网横向相关的几个工具脚本特征,增进对其执行机制的了解。这样不仅有助于更有效地运用和拓展这些工具,还可能为安全分析人员在应急响应和溯源分析工作中提供一些有益的思路。
一、通过smbexec横向
1、使用条件
445端口通、默认共享开启
2、执行过程
接收到用户输入的凭据后,脚本通过SMB协议和远程主机进行NTLM认证以建立会话通信。然后通过DCE/RPC连接到远程主机的服务控制管理器SCM并创建服务,服务以一个8字符长的随机字符串命名(如JJoJCtel)。每次执行远程命令会通过该服务创建一个临时的批处理文件,批处理文件以一个8字符长的随机字符串命名(如IMrcUCUS.bat)。攻击者输入的命令在远程主机执行后,通过执行这个批处理文件将命令输出内容重定向到远程主机的C$共享目录的__output文件中,通过读取文件内容获得命令回显,命令执行完后会将本次创建的临时批处理文件删除。
3、sysmon特征
注册表修改事件
进程创建事件
执行批处理文件
二、通过psexec横向
1、使用条件
445端口通、默认共享开启
2、执行过程
接收到用户输入的凭据后,脚本通过SMB协议和远程主机进行NTLM认证以建立会话通信。然后通过DCE/RPC连接到远程主机的服务控制管理器SCM并创建服务,服务以一个4字符长的随机字符串命名(如hqJq)。接着通过ADMIN$共享上传一个exe作为服务执行的载体,这个exe以一个8字符长的随机字符串命名(如uzZcsFOp.exe)。通过服务调用exe进而调用远程cmd执行命令,执行命令过程中,脚本会创建一个RemComMessage结构体封装要执行的命令,然后会创建并写入命名管道来触发远程服务去执行封装好的命令,并通过命名管道回传命令执行结果。命令执行完正常退出后,将创建的服务和exe文件删除。
3、sysmon特征
文件创建事件
注册表修改事件
注册表修改事件
管道创建事件
进程创建事件
三、通过wmiexec横向
1、使用条件
135和445端口通、默认共享开启
2、执行过程
接收到用户输入的的凭据后,脚本通过SMB协议和远程主机进行NTLM认证以建立会话通信。然后和远程主机创建一个DCOM连接,通过DCOM连接创建一个WMI实例,进而调用Win32_Process类方法来创建命令执行的进程。攻击者输入的命令在远程主机执行后,命令执行的结果被重定向到远程主机的ADMIN$共享目录的一个文件中,该文件以执行命令的时间戳及随机数命名,通过读取文件内容获得命令回显。
3、sysmon特征
进程创建事件
4、默认共享关闭
如果远程主机默认共享关闭,通过135端口也可以执行命令获取回显
①使用wmic创建远程cmd进程执行命令,并将命令执行结果输出到command.txt文件中wmic/node:IP/user:Administrator /password:123@qaz process callcreate "cmd.exe /c whoami >c:command.txt"②如果默认共享关闭,则打开远程主机的C$共享wmic/node:IP/user:Administrator /password:123@qaz processcallcreate "cmd.exe /c net share c$=c:"③建立IPC$连接用于读取文件net use \IPipc$/user:Administrator 123@qaz④读取C$共享下的command.txt文件获取命令执行结果type \IPc$command.txt⑤删除创建的文件wmic/node:IP/user:Administrator /password:123@qaz processcallcreate "cmd.exe /c del c:command.txt"⑥关闭C$共享wmic/node:IP/user:administrator/password:123@qaz processcallcreate "cmd.exe /c net share c$ /del"⑦删除IPC$连接net use \IPipc$ del
可以自己写一个脚本来实现上面整个过程:
四、通过dcomexec横向
1、使用条件
135和445端口通、默认共享开启
2、执行过程
接收到用户输入的凭据后,脚本通过SMB协议和远程主机进行NTLM认证以建立会话通信。然后通过DCE/RPC连接到远程主机,并创建一个DCOM连接用于命令执行。脚本提供了3个DCOM对象ShellWindows、ShellBrowserWindow、MMC20,我们选择MMC20作为DCOM对象通过MMC执行远程命令。通过MMC20对象在远程主机创建一个mmc.exe进程,利用该进程进一步创建cmd.exe进程执行攻击命令。攻击者输入的命令在远程主机执行后,命令执行的结果被重定向到远程主机的ADMIN$共享目录的一个文件中,通过读取文件内容获得命令回显。
3、sysmon特征
进程创建事件
进程创建事件
五、通过atexec横向
1、使用条件
445端口通、默认共享开启
2、执行过程
接收到用户输入的凭据后,脚本通过SMB协议和远程主机进行NTLM认证以建立会话通信。然后通过DCE/RPC连接到远程主机的计划任务服务并创建一个临时任务,任务以一个8字符长的随机字符串命名(如gGjNPKZf)。攻击者执行的命令会被封装在XML配置文件中,提交给计划任务服务执行。远程命令被执行后,命令执行的结果被重定向到C:WindowsTemp下的一个以当前任务名命名的临时文件中(如gGjNPKZf.tmp),然后通过读取ADMIN$共享的Temp目录文件内容获得命令执行回显。
3、sysmon特征
文件创建事件
进程创建事件
进程创建事件
原文始发于微信公众号(安全驾驶舱):【内网安全】impacket横移常用工具分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论