作者: Mike Gualtieri
博客: https://www.mike-gualtieri.com
推特: https://twitter.com/mlgualtieri
GitHub: https://github.com/mlgualtieri/NTLMRawUnhide
相关文章: https://www.mike-gualtieri.com/posts/live-off-the-land-and-crack-the-ntlmssp-protocol
NTLMRawUnhide.py 是一个 Python3 脚本,用于解析网络数据包捕获文件并以可破解格式提取 NTLMv2 哈希值。该工具旨在直接从原生 Windows 二进制程序(如 NETSH.EXE 和 PKTMON.EXE)生成的文件中提取 NTLMv2 哈希值,无需进行格式转换。
支持以下二进制网络数据包捕获文件格式:
用法:NTLMRawUnhide.py -i <输入文件> [-o <输出文件>] [-f] [-h] [-q] [-v]
主要选项:
-f, --follow 持续“跟随”(即“实时读取”)输入文件中的新数据
-h, --help 显示帮助
-i, --input <输入文件> 二进制数据包数据输入文件
(.pcap, .pcapng, .cap, .etl, 及其他格式?)
-o, --output <输出文件> 输出文件,用于记录发现的任何 NTLM 哈希值
-q, --quiet 保持安静,仅输出发现的 NTLM 哈希值。--quiet 会同时禁用详细输出(如果指定了 -v)
-v, --verbose 详细输出
从 examples/capture.pcap 中提取 NTLMv2 哈希值:
python3 NTLMRawUnhide.py -i examples/capture.pcap
同样的操作,但启用详细输出:
python3 NTLMRawUnhide.py -i examples/capture.pcap -v
从 examples/capture.pcap 中提取 NTLMv2 哈希值,并持续监视文件以获取新哈希值(类似 tail -f):
python3 NTLMRawUnhide.py -i examples/capture.pcap -f
从 examples/capture.pcap 中提取 NTLMv2 哈希值,并将提取的哈希值写入 /tmp/hashes.txt:
python3 NTLMRawUnhide.py -i examples/capture.pcap -o /tmp/hashes.txt
要创建兼容的数据包捕获文件,可使用以下任意方法:
将捕获过滤器设置为 "tcp port 445";保存为 .pcapng 格式
tcpdump -i eth0 -w capture.pcap "port 445"
netsh.exe trace start persistent=yes capture=yes TCP.AnyPort=445 tracefile=C:\Users\Public\capture.etl
netsh.exe trace stop
pktmon.exe filter add SMB -p 445
:: 列出所有过滤器
pktmon.exe filter list
:: 查找网络适配器的 ID(示例:Id: 9)
pktmon.exe comp list
:: pktmon.exe start --etw -p 0 -c [适配器 ID]
pktmon.exe start --etw -p 0 -c 9
:: 将在当前目录创建 PktMon.etl 文件
pktmon.exe stop
:: 清理
pktmon.exe filter remove
构建此工具时,以下 URL 提供了很大帮助: NTLM 身份验证协议与安全支持提供程序 http://davenport.sourceforge.net/ntlm.html