SMB中继——内网渗透

0x01 SMB协议

SMB概述:

SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。

SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。

SMB使用了NetBIOS的应用程序接口 (ApplicationProgram Interface,简称API),一般端口使用为139,445。

SMB是应用层(和表示层)协议,使用C/S架构,其工作的端口与其使用的协议有关。

0x02 NTLM hash& Net-NTLM hash

NTLM(V1/V2)的hash是存放在安全账户管理(SAM)数据库以及域控的NTDS.dit数据库中,获取该Hash值可以直接进行Pass the Hash攻击。

Net-NTLM(V1/V2)的hash值是基于用户密码的NTLM hash计算出来的,用于网络中的认证,步骤如下:

  • 客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前保存登录用户名和对应的密码 hash。

  • 服务器接收到请求后,生成一个 16 位的随机数 (被称为 Challenge也就是挑战码), 明文返回客户端。使用存储的登录用户密码 hash 加密 Challenge,获得 Challenge1。

  • 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,获得 Challenge2(这个结果被称为 response),将 response 发送给服务器。

  • 服务器接收客户端加密后的 response,比较 Challenge1 和 response,如果相同,验证成功。

  • 在 NTLM 认证中,NTLM 响应分为 NTLM v1,NTLM v2,NTLM session v2三种协议,不同协议使用不同格式的 Challenge 和加密算法,所以也就存在不同协议的 Net-NTLM hash,即 Net-NTLM v1 hash,Net-NTLM v2 hash。

0x03 NTLM和SMB的关系

SMB的认证可以基于NTLM协议或者kerberos协议,前者使用了hash,后者使用了ticket,是构成SMB的PtH和PtT攻击的基础。

NTLM 并没有定义它所依赖的传输层协议。NTLM 消息的传输完全依赖于使用 NTLM 的上层协议来决定,可以是SMB,也可以是TCP,亦或HTTP。

从攻击角度来看:

  • 可以利用NTLM哈希值进行“哈希传递”攻击

  • 无法利用Net-NTLM哈希值来进行“哈希传递”攻击

0x04 SMB中继攻击

1、获取NTLMv2哈希值

(1)使用Responder工具

Responder工具可以污染LLMNR和NBT-NS请求。

在目录下的Responder.conf可以配置启用的模块,开启Responder开始嗅探

responder -I eth0

(最新版的responder取消了-f参数)

SMB中继——内网渗透_第1张图片

然后在受害机上对目标机器进行访问共享,输入\\192.168.192.157

SMB中继——内网渗透_第2张图片

会自动弹出认真对话框之后我们看到responder已经嗅探到了NTLMv2 hash

SMB中继——内网渗透_第3张图片

(2)原理解析

如果网络中的任何用户试图访问共享哪个机器没有IP或用户类型共享名称不正确,该机器将触发LLMNR请求到网络,Responder将通过说我是那台机器来回答该请求,请提供给我NTLMv2哈希并访问资源。

SMB中继——内网渗透_第4张图片

当机器触发LLMNR请求时,Responder响应该请求并从域中捕获用户的NTLMv2的哈希值,并且在logs目录下生成txt文件。

2、攻击方式

(1)hashcat爆破密码

Hashcat是一个用来破解哈希值的工具,支持CPU/GPU散列破解,并支持多种哈希格式

当我们获取到NTLMv2的hash值后可以采用hashcat进行爆破,但是hashcat进程缓慢而且hashcat是根据字典爆破的,如果字典不够强大是不可能爆破成功的。

(2)通过MultiRelay.py进行中继

前提条件是目标机器关闭SMB签名

首先用Responder中的RunFinger.py脚本来识别主机是否关闭SMB签名,大部分机器默认关闭

Windows server关闭SMB签名命令

SMB中继——内网渗透_第5张图片

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f

这里可以看到两台机器的SMB签名都是关闭状态,我们就可以对其发起NTMLv2中继攻击直接运行MultiRelay脚本进行中继。

SMB中继——内网渗透_第6张图片

然后修改Responder的配置文件,不让其对hash进行抓取。

SMB中继——内网渗透_第7张图片

然后重启启动Responder.py,进行毒化responder -I eth0,然后在机器上传递一个SMB流量即可获得shell。

MultiRelay还集成了Mimikatz,可以抓取密码,和尝试cs上线。

0x05 参考链接

  1. https://tttang.com/archive/1548/#toc_responder

  2. https://www.jianshu.com/p/9627962db4da

声明

以上内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。

你可能感兴趣的:(内网渗透,安全,网络安全)