Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

NTLMSSP

NTLMSSP 是 Microsoft 用于通过 NTLM 协议进行身份验证的协议。

开放规范: [MS-NLMP]

NTLM 加密流量的解密

只要你向 Wireshark 提供所需的 secrets,Wireshark 就知道如何解密 NTLM 加密流量。随后它可以解密 NTLM exchanges:包括 NTLM challenge/response 以及后续协议 payloads(例如可能使用从 NTLM authentication 派生的 keys 加密的 DCE/RPC)。

以下是在提供 password 或 hash 之前,DRSUAPI (DCE/RPC) session 开始处的 NTLM authentication 的样子:

而在提供 password/hash 之后,请注意以蓝色突出显示的附加信息:

然后,在提供 password/hash 之前,DsGetDomainControllerInfo request payload 不可读,因为它是 “encrypted stub data”:

但在提供 password/hash 之后,它变成了 “decrypted stub data”(由于 bug #19000 (closed),此截图中的 decrypted data 无效;该问题已在 v4.0.6 中修复,并 backported to v3.6.14)

通过在 keytab 文件中提供 NT hash

如果你只有账户的 NT hash(又称 “NTLM hash”),仍然可以通过在 keytab 文件中提供该 hash 来解密 NTLM 加密流量(是的,这很令人意外,因为 keytab 文件通常用于 Kerberos,但它确实可用!)。你可以参考这个 Decrypt Kerberos/NTLM “encrypted stub data” in Wireshark 教程,其中说明了如何创建 keytab 文件并将其传递给 Wireshark。这个技术也在这个 Capture-the-Flag challenge write-up 中有所解释:Insomni'Hack Teaser 2023 - Autopsy

通过在 “NT Password” 设置中提供明文密码

“NT Password” 设置可以包含一个密码。转到 Edit -> Preferences -> Protocols -> NTLMSSP。只需在 “NT Password” 字段中输入用户密码。

根据源代码,仅支持 ASCII passwords(原因是 Unicode encoding 的方法很简单)。如果你只有 NTLM hash:见上文。

原始页面图片

before_nt_password
before_nt_password
after_nt_password
after_nt_password
encrypted_stub
encrypted_stub
decrypted_stub
decrypted_stub

相关 Wireshark Wiki 页面

网络分析技术档案