本文在禁用SMB签名的情况下,研究滥用SMB协议的横向移动技术。
SMB签名是一种安全机制,对SMB数据包进行数字签名,加强其真实性和完整性 —— 客户端/服务器知道他们接收的传入SMB数据包属于受信任的来源,在传输过程中未被篡改,防止中间人攻击。
如果禁用SMB签名,则可以拦截/篡改数据包或把数据包中继到另一个系统,这正是本文要讲的内容。
01
环境
10.0.0.5-运行Kali Linux和SMB中继工具的攻击者
10.0.0.2-受害者1; 他们的凭据会中继给受害者2
10.0.0.6-受害者2; 用受害者1的凭据在受害者2上运行代码
**注意:**受害者1的凭据必须是受害者2上的本地管理员,或者是管理员/域管理员组的成员,这样攻击才会奏效。
以下是攻击进程:
10.0.0.2 - 验证至-> 10.0.0.5 -中继到->10.0.0.6用受害者1(10.0.0.2)凭据执行代码
02
执行
检查端点上的SMB签名是否已禁用:
nmap -p 445 10.0.0.6 -sS --script smb-security-mode.nse
得知受害者2@10.0.0.6已禁用SMB签名且易受到SMB中继攻击后,我们创建一个简单的HTML文件,一旦打开该文件,受害者1就会被迫对攻击者的计算机进行身份验证:
<html>
**注意:**还有其他强制身份验证的方法,可在以下链接中获取所需的技术。
https://www.ired.team/offensive-security/initial-access/t1187-forced-authentication
同时,启用SMBRelayx工具,该工具会侦听传入的SMB身份验证请求,将其中继到受害者2@10.0.0.6,在目标主机上执行命令:ipconfig
smbrelayx.py -h 10.0.0.6 -c "ipconfig"
**注意:**smbrelayx可以和-e选项一起使用,攻击者执行其有效载荷文件,如meterpreter可执行文件。
以下动图是这个技术的应用过程 —— 左边 —— victim1@10.0.0.2打开我们之前制作的恶意html,让它对攻击者系统进行身份验证(右侧)。一旦进行身份验证,它会中继到victim2@10.0.0.6,执行ipconfig并执:
动图里出现的停止帧突出显示了代码确实是在10.0.0.6上执行:
03
观察和缓解
Smbrelayx.py在Microsoft-Windows-Sysmon / Operational中为防御者留下了足迹 —— 父映像是services.exe,命令行有详细的信息,但命令行参数容易伪造出来:
为了减少这种类型的攻击,最好就是设置Microsoft网络客户端策略,如果可以的话,执行GPO:始终对通信进行数字签名来启用:
通过上述更改,执行相同的攻击,我们会收到Signature is REQUIRED的错误消息,横向移动受阻:
之前执行的nmap扫描也显示 signing is required的信息:
nmap -p 445 10.0.0.6 -sS --script smb-security-mode
参考:
木星安全实验室(MxLab),由中国网安·广州三零卫士成立,汇聚国内多名安全专家和反间谍专家组建而成,深耕工控安全、IoT安全、红队评估、反间谍、数据保护、APT分析等高级安全领域,木星安全实验室坚持在反间谍和业务安全的领域进行探索和研究。