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架构,其工作的端口与其使用的协议有关。
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。
SMB的认证可以基于NTLM协议或者kerberos协议,前者使用了hash,后者使用了ticket,是构成SMB的PtH和PtT攻击的基础。
NTLM 并没有定义它所依赖的传输层协议。NTLM 消息的传输完全依赖于使用 NTLM 的上层协议来决定,可以是SMB,也可以是TCP,亦或HTTP。
从攻击角度来看:
可以利用NTLM哈希值进行“哈希传递”攻击
无法利用Net-NTLM哈希值来进行“哈希传递”攻击
1、获取NTLMv2哈希值
(1)使用Responder工具
Responder工具可以污染LLMNR和NBT-NS请求。
在目录下的Responder.conf可以配置启用的模块,开启Responder开始嗅探
responder -I eth0
(最新版的responder取消了-f参数)
然后在受害机上对目标机器进行访问共享,输入\\192.168.192.157
会自动弹出认真对话框之后我们看到responder已经嗅探到了NTLMv2 hash
(2)原理解析
如果网络中的任何用户试图访问共享哪个机器没有IP或用户类型共享名称不正确,该机器将触发LLMNR请求到网络,Responder将通过说我是那台机器来回答该请求,请提供给我NTLMv2哈希并访问资源。
当机器触发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签名命令
reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f
这里可以看到两台机器的SMB签名都是关闭状态,我们就可以对其发起NTMLv2中继攻击直接运行MultiRelay脚本进行中继。
然后修改Responder的配置文件,不让其对hash进行抓取。
然后重启启动Responder.py,进行毒化responder -I eth0,然后在机器上传递一个SMB流量即可获得shell。
MultiRelay还集成了Mimikatz,可以抓取密码,和尝试cs上线。
https://tttang.com/archive/1548/#toc_responder
https://www.jianshu.com/p/9627962db4da
声明
以上内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。
长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。