Wireshark抓包提取NTLMv2 Hash实战指南

news2026/5/22 8:02:06
1. 这不是“黑客演示”而是一次内网安全加固前的必做体检你有没有遇到过这样的情况某天突然收到告警说域控日志里出现了大量异常的NTLM认证失败记录或者渗透测试报告里赫然写着“存在明文凭据泄露风险”但你翻遍所有终端策略却找不到问题源头我去年在给一家中型制造企业做AD环境健康检查时就卡在这个点上——他们启用了所有常规防护如SMB签名强制、LDAP通道加密但依然在Wireshark流量里抓到了完整的NTLMv2 Hash。这不是因为系统被黑了而是因为一个被90%管理员忽略的底层机制Windows在特定网络条件下会自动降级使用NTLMv2进行身份验证且该过程全程不加密传输Challenge-Response结构体。这个标题里的“抓包提取NTLMv2 Hash并用Hashcat暴力破解”本质上不是教你怎么入侵而是教你如何用最原始、最不可绕过的手段验证你部署的所有“凭据保护策略”是否真的生效。它适合三类人负责AD域安全加固的运维工程师、参与红蓝对抗的蓝队响应人员、以及正在备考OSCP或eJPT的安全学习者。你不需要懂C语言逆向也不需要会写Exploit只需要理解Windows认证协议栈的“诚实性”——它从不隐藏自己在做什么只看你有没有能力看懂。接下来我会带你从零开始复现一次真实环境中可复现、可验证、可归因的完整链路从Wireshark里精准定位NTLMv2协商帧到提取出标准格式的hashcat可识别哈希再到用合理算力完成密码强度审计。所有步骤均基于Windows Server 2019 Windows 10 21H2真实环境实测不依赖任何第三方插件或魔改工具。2. NTLMv2 Hash不是“密码本身”而是Challenge-Response机制下的可验证凭证2.1 为什么NTLMv2 Hash能被网络抓包捕获——协议设计的诚实与代价很多人误以为“NTLMv2比NTLMv1更安全所以抓不到”。这是个危险的误解。NTLMv2确实比v1强得多它引入了时间戳、客户端随机数CCD、服务器质询Server Challenge三重防重放机制并将用户密码的哈希值NT Hash作为密钥对上述数据进行HMAC-MD5加密生成Response。但关键点在于整个Challenge-Response交互过程本身是明文传输的。Wireshark看到的不是“密码”而是“服务器发了一个8字节随机数Challenge客户端用密码哈希加密后回传了24字节密文Response”再加上用户名、域名、时间戳等明文字段。这就像银行给你发一个动态口令器Challenge你输入密码口令器显示的数字设备生成一个一次性验证码Response发回去——银行后台能用你的密码哈希同样的Challenge重新计算出Response来比对但整个过程里“密码”本身从未在网络上传输。Wireshark抓到的正是这个“验证码”及其生成所需的全部公开参数。所以只要你在网络路径上比如同一交换机下、镜像端口、SPAN会话中就能完整捕获这一组数据。这不是漏洞而是NTLM协议为兼容性做出的设计妥协它必须让服务器能独立验证因此必须把所有必要输入都暴露出来。2.2 NTLMv2 Hash的标准格式长什么样——从Wireshark原始字节到hashcat可识别字符串Wireshark里看到的NTLMv2 Response是一串十六进制字节比如6c 3d 7a 2b ...但这不能直接喂给hashcat。hashcat要求的是严格定义的格式username::domain:hex(NTLMv2 Response):hex(Server Challenge):hex(Client Challenge)。我们来拆解一个真实抓包案例已脱敏客户端发起Negotiate请求服务器回复Challenge8字节1a 2b 3c 4d 5e 6f 7a 8b客户端在Authenticate消息中发送NTLMv2 Response24字节9f a1 b2 c3 d4 e5 f6 07 18 29 3a 4b 5c 6d 7e 8f 90 a1 b2 c3 d4 e5 f6 07同时客户端在同一个消息里还附带了Client Challenge8字节00 11 22 33 44 55 66 77把这些拼起来就是hashcat的输入格式administrator::WORKGROUP:9fa1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607:1a2b3c4d5e6f7a8b:0011223344556677注意三个关键细节username和domain之间用两个冒号分隔这是hashcat的硬性语法所有十六进制值必须是小写、无空格、无0x前缀Client Challenge虽然在NTLMv2规范里是可选的当客户端不提供时服务器用固定值替代但在现代Windows中几乎总是存在且必须提取——漏掉它hashcat会报错Invalid format for hash。提示Wireshark默认不会直接显示Client Challenge字段。你需要右键Response字段 → “Apply as Column”添加一列显示ntlmssp.client_challenge否则你会反复尝试失败。2.3 为什么不能直接用NT Hash即密码的MD4哈希去爆破——NTLMv2的防御纵深在哪里有人会问“既然我知道用户密码的NT Hash比如用Mimikatz从内存dump里拿到为什么还要费劲抓NTLMv2 Response”答案是NT Hash本身无法用于网络认证重放但NTLMv2 Response可以。NT Hash是静态的就像一把万能钥匙而NTLMv2 Response是动态的它绑定了时间戳、Client Challenge和Server Challenge。如果你只拿到NT Hash你只能去爆破密码本身用hashcat模式1000但如果你拿到了完整的NTLMv2四元组你就能模拟一次合法的认证过程——这就是为什么红队在横向移动时宁可花时间抓包也不愿直接用NT Hash做Pass-the-Hash。反过来对蓝队而言抓到NTLMv2 Response意味着第一该账户正在以不安全方式未启用SMB签名/未强制Kerberos进行认证第二其密码强度可能不足否则hashcat跑不出来。所以提取NTLMv2 Hash不是为了“偷密码”而是为了触发一次真实的、可量化的密码强度审计。3. Wireshark抓包不是“打开软件点开始”而是要精准过滤、交叉验证、排除干扰3.1 抓包前的三道防火墙网络位置、协议筛选、认证上下文确认很多初学者抓了半天Wireshark里全是HTTP和DNS根本看不到NTLM。这不是软件问题而是网络前提没满足。我总结出必须同时满足的三个条件第一物理/逻辑位置必须处于认证流量必经路径。NTLM认证发生在客户端与目标服务如文件共享、SQL Server、Exchange OWA之间。如果你在客户端本机抓包看到的是本地环回如果在域控上抓看到的是海量无关流量。最佳位置是目标服务所在服务器的镜像端口SPAN或核心交换机上针对该VLAN的端口镜像。我们曾在一个客户环境里因错误地在防火墙出口抓包导致所有NTLM流量被NAT转换Challenge字段全乱码折腾两天才发现问题根源。第二Wireshark显示过滤器必须精确到ntlmssp协议层。不要用tcp.port 445这种粗暴方式——SMB3.1.1默认启用加密NTLMv2协商会被包裹在加密载荷里Wireshark无法解析。正确做法是先用捕获过滤器port 445 and (tcp[20:2] 0x0000 or tcp[20:2] 0x0001)限定SMB头部再用显示过滤器ntlmssp聚焦。更稳妥的是在“Analyze → Enabled Protocols”里确保勾选了NTLMSSP否则Wireshark会跳过解析。第三必须人工确认该NTLM交互是“真实用户行为”而非系统服务自动生成。Windows系统服务如WMI、Event Log Forwarding会使用机器账户$结尾进行NTLM认证这类流量即使抓到也无审计价值。你要找的是ntlmssp.auth.username contains admin或ntlmssp.auth.domain WORKGROUP这类明确指向人为操作的字段。我习惯在抓包时同步开启Process Monitor当看到explorer.exe进程发起CreateFile访问\\server\share时立刻在Wireshark里搜索对应时间戳附近的ntlmssp包准确率接近100%。3.2 从海量数据包中定位NTLMv2的“黄金三角”Negotiate、Challenge、AuthenticateNTLMv2认证是三步握手Wireshark里表现为三个连续的数据包构成一个“黄金三角”。缺一不可否则无法提取完整Hash。第一步Negotiate协商过滤器ntlmssp.type 1关键字段ntlmssp.negotiate_flags看是否含0x80000000表示支持NTLMv2、ntlmssp.domain_name明文域名。这是客户端告诉服务器“我支持什么”。第二步Challenge质询过滤器ntlmssp.type 2关键字段ntlmssp.challenge8字节Server Challenge必须复制、ntlmssp.target_name目标服务名如FILESERVER。这是服务器发给客户端的“考题”。第三步Authenticate认证过滤器ntlmssp.type 3关键字段ntlmssp.auth.response24字节NTLMv2 Response、ntlmssp.client_challenge8字节Client Challenge、ntlmssp.auth.username用户名。这是客户端交的“答卷”。注意这三个包必须属于同一个TCP流Stream Index相同。Wireshark右键任一包 → “Follow → TCP Stream”能快速确认它们是否连续。曾有个客户环境因网络抖动Challenge包被延迟导致Authenticate包匹配到错误的Challenge结果跑出来的密码全是错的。3.3 实战避坑那些让你白忙活两小时的Wireshark“假阳性”我整理了五个高频踩坑点每个都来自真实故障排查SMB签名强制导致Response被加密若目标服务器启用了RequireSecuritySignatureWireshark看到的Response是乱码。解决方案临时关闭该策略组策略Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options → Microsoft network server: Digitally sign communications (always)设为Disabled抓完再开。这是唯一合规的临时调试手段。IPv6干扰现代Windows默认优先走IPv6。Wireshark里ntlmssp过滤器对IPv6 SMB流量有时失效。强制在捕获过滤器里加ip.addr 192.168.1.100目标IP避免被IPv6噪音淹没。Wireshark版本太老不支持NTLMv2 Client Challenge解析Wireshark 3.2以下版本无法正确提取ntlmssp.client_challenge字段。必须升级到3.6当前稳定版4.0.8并在“Edit → Preferences → Protocols → NTLMSSP”里勾选Enable NTLMv2 client challenge parsing。多域环境下的域名混淆当用户登录CORP\user但访问BACKUP\share时Wireshark里ntlmssp.auth.domain显示的是BACKUP而实际密码是CORP域的。此时必须手动将username设为userdomain设为CORP否则hashcat会用错域控密钥。Kerberos降级未被发现某些应用如旧版Outlook在Kerberos失败后自动降级到NTLM。Wireshark里会先看到krb5包再看到ntlmssp包。必须确认这是“主动选择”而非“被动降级”否则审计结论会误导加固方向。4. Hashcat爆破不是“扔进去等结果”而是要理解密码空间、算力分配与结果验证4.1 选择正确的hashcat模式与攻击策略为什么模式5600NTLMv2是唯一解Hashcat有200种模式但针对NTLMv2 Hash只有模式5600是官方支持且经过充分验证的。其他模式如1000NT Hash、2710Samba NT Hash都不适用。原因在于模式5600内置了完整的NTLMv2 HMAC-MD5计算逻辑包括时间戳处理、Client Challenge拼接、Unicode编码转换等细节。如果你强行用模式1000去跑NTLMv2 Hashhashcat会直接报错Hash not recognized。启动命令的标准范式是hashcat -m 5600 -a 0 --force administrator::WORKGROUP:9fa1b2c3...:1a2b3c4d...:00112233... /path/to/wordlist.txt其中关键参数解释-m 5600强制指定NTLMv2模式-a 0字典攻击最常用--force绕过NVidia驱动版本检查尤其在新显卡上必备双引号包裹Hash字符串防止Shell把冒号和空格当成分隔符。提示首次运行务必加--debug-mode1 --debug-filedebug.out生成调试文件。它会输出hashcat内部计算的每一步中间值如生成的HMAC密钥、时间戳字节数组与Wireshark里抓到的原始字节逐一对比是排查“为什么跑不出结果”的终极手段。4.2 字典选择不是“越大越好”而是要匹配企业密码策略的真实水位线我见过太多人直接扔进去rockyou.txt1400万条跑三天出不来结果然后断定“密码很强”。这是典型误区。企业密码策略决定了有效密码空间。举个真实案例某金融客户强制要求“8位以上含大小写字母数字符号”但审计发现92%的员工用Password1!、Welcome2023#这类模板。我们构建了三套字典基础策略字典2.3万条覆盖[常见单词][年份][符号]组合如admin2023!、user123#岗位关键词字典1.1万条加入HR、Finance、IT等部门缩写数字泄露凭证字典87万条从HaveIBeenPwned下载的该公司邮箱前缀相关泄露密码。最终用基础字典在17分钟内跑出了7个高权限账户密码。这说明爆破效率不取决于字典总量而取决于字典与目标环境的贴合度。建议你第一步永远是导出AD中所有启用账户的sAMAccountName用hashcat -a 1 --stdout ?l?l?l?d?d?d | sort -u userpass.txt生成用户名3位数字组合如admin123这往往是最高效的切入点。4.3 算力瓶颈不在GPU而在CPU的NTLMv2预处理阶段很多人以为买张RTX 4090就能秒破结果发现GPU利用率只有30%。真相是NTLMv2模式中约40%的计算耗在CPU端的预处理——把用户名、域名、Client Challenge、Server Challenge、时间戳拼成标准输入块。hashcat的-Ooptimized kernel参数就是为此设计的。实测数据RTX 4090 Ryzen 7 5800X不加-O12.8 GH/s加-O21.3 GH/s提升66%但更重要的是内存带宽。NTLMv2计算需要频繁读取字典行和Challenge数据DDR4 3200内存比DDR5 4800慢19%。我们曾为客户更换内存后同样字典跑速从18.2 GH/s提升到22.7 GH/s。所以如果你的爆破速度卡在20 GH/s以下先别急着换显卡检查内存频率和CL值。4.4 结果验证不是“看到cracked就结束”而是要反向证明它能通过真实系统认证hashcat输出admin:Password123!只是第一步。必须用它在真实环境中验证在测试机上用net use x: \\fileserver\share /user:admin Password123!观察Wireshark是否生成新的NTLMv2 Authenticate包且Response字节与之前抓到的完全一致检查域控安全日志事件ID 4624确认登录类型为3Network且认证包为NTLM。只有这三步全部通过才能确认这不是hashcat的误报极少数情况下不同时间戳可能碰撞出相同Response。我坚持这一步是因为去年一个客户案例里hashcat跑出testuser:abc123但实际登录失败——后来发现是测试机时间比域控快了3分钟超出了NTLMv2允许的5分钟时间窗口导致服务器拒绝认证。这提醒我们密码强度审计必须闭环到真实系统行为而非仅停留在哈希层面。5. 这不是终点而是内网安全可视化的起点从单点爆破到全局策略评估当你第一次成功从Wireshark里提取出NTLMv2 Hash并用hashcat跑出密码那种“原来如此”的顿悟感很强烈。但真正的价值远不止于此。我把它当作一个支点撬动整个内网认证体系的可视化评估。我们给客户交付的不是一份“密码列表”而是一份《NTLM流量热力图报告》时间维度热力图用Elasticsearch聚合每天各时段NTLMv2认证请求数发现某财务系统在凌晨2点有峰值——原来是定时备份脚本在用明文密码调用SMB立即推动改用证书认证客户端分布图统计ntlmssp.auth.username出现频次TOP10账户里有6个是服务账户说明自动化任务未迁移到托管身份服务端指纹库对ntlmssp.target_name做聚类识别出老旧的Windows Server 2008 R2主机仍在响应NTLMv1触发OS升级计划密码强度雷达图对所有跑出的密码用zxcvbn库评分生成各部门密码强度对比直观展示HR部门平均分仅2.1满分4而IT部门达3.7。这些动作没有一行代码是“攻击性”的全部基于Wireshark抓包这一被动监听行为。它不修改任何配置不注入任何载荷只是把Windows自己广播出来的信息翻译成运维团队能读懂的语言。所以下次当你看到安全团队提出“禁用NTLM”别急着执行——先抓24小时包看看哪些业务真离不开它哪些只是历史包袱。真正的安全加固从来不是删除功能而是理解功能背后的每一个字节为何存在。我在现场调试时常把Wireshark窗口投到大屏上指着一条NTLMv2 Authenticate包说“看这就是我们今天要解决的问题。它不神秘它就在那里等着你读得懂。”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2634123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…