SMB协议作为windows环境下最为常见的一种协议,在历史上出现过无数的通过SMB协议进行网络攻击利用的案例,包括针对SMB协议本身以及通过SMB协议实施网络攻击。
本文将介绍一种SMB协议的常见利用方式,即通过windows的服务调用将远程主机上的mimikatz程序设置为定时任务,作为我的专栏《SMB攻击流量数据包分析》中的一篇,这里,为日常安全运营,护网HVV,重保过程中遇到的关于类似的流量分析提供参考。
mimikatz
mimikatz 是用C语言编写一个Windows命令行工具,用于提取内存中的明文密码,hash和kerberos票据,是非常著名的网络安全工具,详见,这里。如下是使用mimikatz在本地提取内存中的明文密码:
图1
mimikatz既然本地可以执行,那么远程也是可以被调用的,例如在之前的文章就介绍了psexec连接远程主机的命令行,详见之前的文章《PsExec使用过程介绍》,这里。因此在命令行中是可以启动mimikatz程序的,如下:
图2
本文介绍的是通过windows的定时任务接口,远程将mimikatz设置为定时任务。
数据包
本文使用的数据包为使用windows Microsoft AT-Scheduler Service服务将远程主机上的mimikatz设置为定时任务,对应的数据包链接这里。
逆向分析
连接概况
拿到任何一个数据包,需要总体观察该数据包的通信情况,统计->会话,统计->流量图 对该数据20171220_smb_at_schedule.pcap进行整体分析,如下图:
图3
图4
从TCP会话表和流量图可以得出以下的信息:
- 该数据包只有一条流,是为了便于分析经过裁剪的数据包。
- 五元组(192.168.10.31,49266,192.168.10.30,445,TCP)产生了3K,20个数据包的通信流量。
- 整个会话的持续时长为12秒 。
- 该会话上主要以SMB,DCERPC等应用层协议服务为主。
- 深入之后还会发现通过DCERPC调用了windows的ATSVC等服务,添加了定时任务。
SMB请求ATSVC
由于这是一个经过裁剪的数据包,发现数据包中并没有SMB协议协商和用户认证的过程,该流的前四个数据包表示的是SMB层次和ATSVC服务进行握手和协商,如下:
图5
图6
由图5图6可知:
- ATSVC虽然是一个服务,但是图5中,使用file ID表示该服务。这与Linux系统中一切皆文件的思想是匹配的。
- 在成功获取ATSVC服务的响应,192.168.10.31又请求了该文件的一些属性。通过这些属性可以了解到该服务并不是一个目录等信息。
- 由于第4个数据包的响应中没有文件ID的信息,192.168.10.31收到响应之后是如何知道对应哪个请求的呢,这个就是message ID的作用,不同请求的message ID 是不同的。详见之前的文章《SMB 协议详解之-process/user/session/tree/message/file ID原理和数据包分析技巧》,这里。
上述ATSVC是The Task Scheduler Remoting Protocol 的一个过程调用,是微软一个细分的方法调用接口,该协议用来远程管理定时任务,详细链接这里,如下:
图7
DCERPC绑定请求
SMB协议对于ATSVC的请求只是远程调用这个服务层次完成握手,关于要使用ATSVC服务的哪个方法,一般需要使用DCERPC协议完成细粒度的方法的调用。关于RPC协议的介绍,详见我的专栏之前的文章《DCE/RPC协议详解之-数据包请求响应过程》,这里。如下为具体哪一个方法调用之前的DCERPC的握手过程:
图8
图9
可以看到通过RPC的协商,绑定了远端服务64位的 \PIPE\atsvc 管道服务。
添加定时任务请求
上述的DCE/RPC完成对应的接口管道绑定之后,就会请求对应的方法,如下:
图10
图11
图10和图11可知:
- 调用了ATSVC中的几jobadd方法 。
- 对应的servername为\admin-pc。
- 定时任务对应的执行命令为C:\mimikatz.exe。
- 执行之间为47100000,对应的时间为。
- 远端状态响应为success,表示定时任务设置成功。
关闭不同层次连接
可以看到上图4中最后会主动关闭一些不同层次连接请求,主动的关闭服务的连接是一个比较好的习惯。即使不关闭连接,服务端往往在超时之后,也会主动释放服务端资源进行服务的关闭。
以上就是通过对于设置mimikatz为远程定时任务数据包的逆向分析,了解到数据包执行了哪些具体的命令和操作。可以看到通过对于数据包的逆向,知道了主机 192.168.10.31向远程主机192.168.10.30设置了定时执行的命令C:\mimikatz。在响应的过程中可以,检查该目录是否存在该程序,然后清除定时任务以及清除该文件等。希望上述的逆向分析对你日常工作有所帮助。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。