
Azure、ADFS、OWA、O365、Teamsにおけるユーザー列挙とパスワードブルートフォース、およびLinkedin上のメール収集
このプロジェクトはもともとGolangの学習と、ペネトレーションテストで遭遇したユーザー列挙やブルートフォースのさまざまな方法を探求し、それらをまとめるために書かれました。エラーがあれば、遠慮なくIssueを作成してください。できる限り修正やツールの改善を行います。
新しいものはありませんが、既存の手法を1つのツールにまとめました。
以下のスクリーンショットは最新ではなく、コマンドラインが変更されています
推奨されるモジュールはo365で、ユーザー列挙とパスワードのブルートフォース/スプレーに使用します。アカウントロックアウトを回避するために追加情報を取得したり、パスワードは正しいが期限切れであること、MFAが有効であることなどがわかります。
このモジュールは、ユーザー列挙モジュールで検証する前に、メールアドレスのリストを取得するために使用します。Linkedinで会社を検索し、その会社で働いているすべての人が指定された形式で返されます。
プロフィールは表示されないため、ユーザーに通知が届くことはありませんのでご注意ください。
Linkedinのセッションクッキーli_atとJSESSIONIDが必要です。

このモジュールは、ユーザー列挙モジュールで検証する前に、メールアドレスのリストを取得するために使用します。会社名をGoogleとBingでドークを使って検索し、その会社で働いている人を見つけます(site:linkedin.com/in+"%s")。結果のタイトルを解析し、指定された形式でメールアドレスを出力します。

Azureモジュールは、テナントのユーザーを列挙するためにのみ利用可能です。認証リクエストはhttps://autologon.microsoftazuread-sso.comに対して行われ、詳細な応答により、アカウントが存在しないか、MFAが必要か、アカウントがロックされているかなどが示されます。

ADFSモジュールは、パスワードのブルートフォースまたはスプレーにのみ利用可能です。認証リクエストはhttps://<target>/adfs/ls/idpinitiatedsignon.aspx?client-request-id=<randomGUID>&pullStatus=0に送信されます。エラーメッセージにより、パスワードが期限切れであることが通知される場合があります。

このモジュールは、ユーザーの列挙とパスワードのブルートフォース/スプレーを可能にします。
いくつかのモードが利用可能です:office、oauth2、onedrive(未実装)。認証を行わないofficeモードを推奨します。Oauth2はAADSTSエラーコードを通じて追加情報を取得できます(MFA有効、アカウントロック、アカウント無効など)。

ユーザー列挙と同様に、oauth2とautodiscover(未実装)の2つのモードが利用可能です。Oauth2が推奨されるモードで、AADSTSエラーコードにより多くの情報を取得できます。

このモジュールは、ユーザーの列挙とパスワードのブルートフォース/スプレーを可能にします。現在、NTLMおよび基本認証をサポートしています。
列挙は認証リクエストによって行われます。存在しないユーザーの認証は、有効なユーザーよりも時間がかかります。まず、無効なユーザーの平均応答時間を計算し、その後、各認証リクエストの応答時間を比較します。

アカウントロック機構に関する情報が返されないため、実装できないことに注意してください。

このモジュールは、検索機能を使用してユーザーを列挙できます。
デフォルトでは、ある組織は別の組織から到達可能です。名前、姓、プレゼンスステータス、不在メッセージなどの情報を取得できます。メッセージが送信されない場合、対象ユーザーは自分が検索されたことに気づきません。これは、ターゲットのメールアドレスリストを密かに検証したり、不在ユーザーを検出したりするのに役立ちます。

SMTPサーバーはユーザー列挙の脆弱性に対して脆弱である可能性があります。3つの異なる手法でユーザー列挙が可能です。キーワードはRCPT TO、VRFY、EXPNです。このモジュールは指定されたドメインのMXを検索し、デフォルトでは3つのメソッドをテストして有効なユーザーを見つけます。
