![如何在 Wireshark 中将流量解码为 NTLM 协议?](https://linux22.com/image/658779/%E5%A6%82%E4%BD%95%E5%9C%A8%20Wireshark%20%E4%B8%AD%E5%B0%86%E6%B5%81%E9%87%8F%E8%A7%A3%E7%A0%81%E4%B8%BA%20NTLM%20%E5%8D%8F%E8%AE%AE%EF%BC%9F.png)
我正在尝试调试NTLM
身份验证问题。我的想法之一是捕获网络流量并查看它。在我的例子中,NTLM
身份验证是通过非标准端口 (6901) 进行的。当然,Wireshark 无法检测到它。但是有不 NTLM
(NTLMSSP
) 协议在列表中在Decode as
菜单中。我不能这样做这里。
有没有办法让 Wireshark 将流量解码为NTLM
?
或者我需要修改捕获的流量,例如更改TCP
端口或其他方式?
答案1
我不太确定 NTLMSSP 实际上使用了哪些端口,但您可以尝试这个 Lua 脚本将 NTLMSSP 解剖器注册到您的自定义端口。
local tcp_port_table = DissectorTable.get("tcp.port")
local tcp_ntlmssp_dis = tcp_port_table:get_dissector(445)
tcp_port_table:add(6901, tcp_ntlmssp_dis)
将其保存到文件(例如 ntlmssp.lua)并告诉 Wireshark 加载它,例如
$ wireshark -X lua_script:ntlmssp.lua -r trace.pcap
您可能需要将端口 445 更改为真正需要的端口,或者通过添加其他行(如)来注册其他端口tcp_port_table:get_dissector(4711)
。如果您还需要 UDP,请对 UDP 执行相同操作。
答案2
Alexander Janssen 的 LUA 脚本无法运行,因为它通过端口号 (445 - SMB/CIFS) 获取协议,但可以修改为按名称注册 NTLMSSP 解析器,如下所示:
local tcp_port_table = DissectorTable.get("tcp.port")
local tcp_ntlmssp_dis = Dissector.get("ntlmssp")
tcp_port_table:add(6901, tcp_ntlmssp_dis)
6901 是 NTLMSSP 服务正在运行的端口。对于 NTLMSSP 以外的协议,可以使用以下列表中的任何内容https://www.wireshark.org/docs/dfref/应该可以代替“ntlmssp”。
上周,我在分析流向不同自定义 NTLMSSP 服务的流量时成功测试了这一点。