NTLMRecon 是 Sachin Kamath(AKA pwnfoo)所编写原始 NTLMRecon 工具的 Golang 版本。NTLMRecon 可用于对目标 Web 服务器进行暴力破解,以识别常见支持 NTLM 身份验证的应用程序端点。这些端点包括 Exchange Web Services 端点,后者通常可用于绕过多重身份验证。
该工具支持从暴露的 NTLM 身份验证端点收集元数据,包括计算机名、Active Directory 域名以及 Active Directory 林名。这些信息无需事先认证即可获取,只需向服务器发送 NTLM NEGOTIATE_MESSAGE 数据包,并检查目标服务器返回的 NTLM CHALLENGE_MESSAGE 即可。我们还随此工具发布了一篇博文,讨论了其开发动机以及我们在 Chariot 中如何更高级地收集元数据。
我们希望能在 Chariot(我们的外部攻击面管理和持续自动化红队平台)中执行暴力破解并自动识别暴露的 NTLM 身份验证端点。我们的主要后端扫描基础设施是用 Golang 编写的,因此我们不想下载并调用 Python 版的 NTLMRecon 工具来收集这些信息。我们还希望更好地控制所收集信息的详细程度。
可以使用以下命令安装 NTLMRecon 工具。或者,你也可以从 GitHub 的 releases 标签页下载预编译的二进制文件。
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
以下命令可用于调用 NTLM 侦察工具并发现暴露的 NTLM 身份验证端点:
NTLMRecon -t https://autodiscover.contoso.com
以下命令可用于调用 NTLM 侦察工具并发现暴露的 NTLM 端点,同时以 JSON 格式输出收集到的元数据:
NTLMRecon -t https://autodiscover.contoso.com -o json
以下命令可用于在测试需要自定义 Host 头的端点时指定该头部:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
以下命令可用于启用调试输出以进行故障排除:
NTLMRecon -t https://autodiscover.contoso.com -debug
以下是从服务器返回的 NTLM CHALLENGE_MESSAGE 中收集数据的 JSON 输出示例:
{
"url": "https://autodiscover.contoso.com/EWS/",
"ntlm": {
"netbiosComputerName": "MSEXCH1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "na.contoso.local",
"dnsComputerName": "msexch1.na.contoso.local",
"forestName": "contoso.local"
}
}
➜ ~ NTLMRecon -t https://adfs.contoso.com -o json | jq
{
"url": "https://adfs.contoso.com/adfs/services/trust/2005/windowstransport",
"ntlm": {
"netbiosComputerName": "MSFED1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "corp.contoso.com",
"dnsComputerName": "MSEXCH1.corp.contoso.com",
"forestName": "contoso.com"
}
}
➜ ~ NTLMRecon -t https://autodiscover.contoso.com
https://autodiscover.contoso.com/Autodiscover
https://autodiscover.contoso.com/Autodiscover/AutodiscoverService.svc/root
https://autodiscover.contoso.com/Autodiscover/Autodiscover.xml
https://autodiscover.contoso.com/EWS/
https://autodiscover.contoso.com/OAB/
https://autodiscover.contoso.com/Rpc/
➜ ~
我们在开发此工具时的方法论是针对首次发布的目标,实现最基础版本的功能。该项目旨在创建一个初版工具,以便集成到 Chariot 中,然后通过社区贡献和反馈推动进一步的工具改进或功能添加。以下是一些可为 NTLMRecon 添加的额外功能想法:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/