利用netsh抓取连接文件服务器的NET NTLM Hash

之前文章分析本地认证NTLM及网络认证Net NTLM,这篇文章来实现不依赖外部工具抓取NTLM哈希,并通过脚本自动还原Hashcat能爆破的密文
1、内网渗透——WINDOWS认证机制之NTLM

问题:

如果获得了内网一个文件服务器的权限,如何获得更多用户的口令?

解决思路:

如果获得了内网一个文件服务器的权限,那么内网中的其他主机在使用界面尝试访问该服务器时,首先会将本机的密码Hash发送至服务器进行验证,在服务器端抓取数据包能够获得NTLM Response,对NTLM Response的格式进行解析,提取特定信息,使用Hashcat尝试字典破解或者暴力破解,就有可能还原出用户本机的明文口令

所以,接下来需要解决第一个问题: 如何在文件服务器上抓取数据包?

参考:3gstudent
参考:netsh使用

Windows平台下进行网络抓包的方法

两台WIN7主机,远程主机关闭防火墙并开启共享

本地主机执行抓包程序:

netsh trace start  capture=yes persistent=yes traceFile="c:\\test\\snmp1.etl" overwrite=yes correlation=no protocol=tcp ipv4.address=192.168.217.130 keywords=ut:authentication  

参数说明:

capture=yes: 开启抓包功能
persistent=yes: 系统重启不关闭抓包功能,只能通过Netsh trace stop关闭
traceFile: 指定保存记录文件的路径
overwrite=yes: 如果文件存在,那么对其覆盖
correlation=no: 不收集关联事件
protocol=tcp: 抓取TPC协议
ipv4.address=192.168.217.130 : 限定只抓和服务器IP相关的数据包
keywords=ut:authentication: 关键字为ut:authentication

注:win10可使用report=disabled,禁止收集系统的配置文件信息,增加抓包速度

在这里插入图片描述
访问远程主机共享

net use \\192.168.217.130 /u:admin 123456
netsh trace stop

在这里插入图片描述
老工具微软不维护,使用微软官方推荐的开源项目将etl文件转化为pcapng文件
github:microsoft/etl2pcapng
在这里插入图片描述
wireshark查看转化之后的包,另存为pcap形式

在这里插入图片描述
下来编写脚本从pcap中需要的字段,再通过hashcat爆破
1、对目的端口进行判断,选出SMB协议的数据包
2、筛选出NTLMv2 Response数据包
3、通过当前数据包获得username、domain、HMAC-MD5和blob
4、通过前一数据包获得Server challenge
具体实现:

1.选出SMB协议的数据包
目的端口为445

packets[p]['TCP'].dport == 445

2.筛选出NTLMv2 Response数据包
TCP payload包含特殊字符串NTLMSSP

packets[p]['Raw'].load.find('NTLMSSP') != -1

3.获得通过当前数据包获得username、domain、HMAC-MD5和blob
HMAC-MD5和blob为固定位置,直接通过固定偏移即可获得

username和domain为固定格式,2字节表示Length,2字节表示Maxlen,4字节表示偏移,值得注意的2字节长度实际上为int型数据,在读取时高低位要互换

例如读取出16进制数据为4601,实际计算的是0146转换成10进制的值,为326

DomainLength1 = int(TCPPayload[Flag+28:Flag+28+1].encode("hex"),16)
DomainLength2 = int(TCPPayload[Flag+28+1:Flag+28+1+1].encode(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值