如何在 Wireshark 中将流量解码为 NTLM 协议?

如何在 Wireshark 中将流量解码为 NTLM 协议?

我正在尝试调试NTLM身份验证问题。我的想法之一是捕获网络流量并查看它。在我的例子中,NTLM身份验证是通过非标准端口 (6901) 进行的。当然,Wireshark 无法检测到它。但是有 NTLMNTLMSSP) 协议在列表中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 服务的流量时成功测试了这一点。

相关内容