
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のリリースタブからプリコンパイルされたバイナリをダウンロードすることもできます。
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
以下のコマンドを使用してNTLM reconユーティリティを起動し、公開されたNTLM認証エンドポイントを検出できます。
NTLMRecon -t https://autodiscover.contoso.com
以下のコマンドを使用してNTLM reconユーティリティを起動し、公開された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/