現代のサイバーセキュリティにおいて、Microsoft 365(以下、M365とする)やAzureといったクラウド環境への攻撃は、その複雑さとスピードを増しており、侵害発生時の迅速な証拠収集が鍵となります。Microsoft-Extractor-Suiteは、Invictus Incident Response社が開発した、M365やAzure内の多様なソースから必要なデータをシームレスに収集し、収集プロセスを劇的に加速させるための強力なPowerShellツールです[1][2]。
本記事では、Microsoft-Extractor-Suiteの機能、インストール方法やログ収集方法について紹介します。
Microsoft-Extractor-Suiteとは
Microsoft-Extractor-Suiteは、Microsoftの様々なソースから必要なデータを効率的に収集するために設計された、オープンソースのPowerShellモジュールです。
通常、M365やAzureの調査には「Microsoft Purview コンプライアンスポータル」や「Azure Monitor」、「Microsoft Entra ID 管理センター」など、複数のプラットフォームを各画面にて確認する必要があり、個別のPowerShellモジュール(ExchangeOnlineManagement, Microsoft.Graph, Azなど)を使い分ける必要があります。
Microsoft-Extractor-Suiteを利用することで、Entra ID、Azure、M365といった環境から、単一のインターフェースを通して包括的な証拠収集を可能にすることができます。
収集可能なログの種類
Microsoft-Extractor-Suiteによって、収集することが可能なログを紹介します[3][4][5][6][7]。
表1 Microsoft-Extractor-Suiteで収集可能なログの種類
※取得には監査ログを有効化する必要があります。
- 監査 (標準):180日
- 監査 (プレミアム):10年間
- 無料:7日
- P1/P2:30日
ユーザの管理、グループの変更、アプリケーションの設定更新といった、ディレクトリ内でのあらゆる操作(作成、更新、削除など)を追跡するために不可欠なリソースです。
- 無料:7日
- P1/P2:30日
(90日を超える保持や高度な分析が必要な場合は、診断設定などを作成する必要あり)
インストール&ログ収集準備
Microsoft-Extractor-SuiteによってEntra IDやM365環境でログ収集をする際に、以下の3点の設定が必要となります。
-
ツールを実行する端末にPowerShellモジュールのインストール
- ExchangeOnlineManagement - Microsoft 365の機能を利用するために必要
- Microsoft.Graph - Graph API の機能に必要
- Az - Azureの機能を利用するために必要
-
ツールを実行するユーザに適切な権限の割り当て(表2 各機能での必要な権限(一部))
-
ログ収集するために必要なGraph API権限をもつアプリケーションの設定(表3 Graph API権限の割り当て一覧(一部))
ツールを実行する端末に必要なPowerShellモジュールのインストール
PowerShellを管理者権限で実行し、Microsoft-Extractor-Suiteの使用に必要なモジュールを以下のコマンドを入力してインストールします。
Install-Module -Name Microsoft.Graph
Install-Module -Name Az
表2 各機能での必要な権限(一部)
次に、Microsoft-Extractor-Suiteを実行するために、ユーザへの適切な権限の割り当て(表2参照)および、ログ収集に必要なGraph API権限を持つアプリケーションの設定(表3参照)の設定例を示します。
ログ収集するために必要な権限を持つアカウントの設定例
1. Microsoft 365 管理センター (https://admin.microsoft.com/) で新しいユーザ アカウントを作成します。
2. 新規ユーザに「Global Reader」ロールを割り当てます。
3. Azureポータル (https://portal.azure.com/)に移動します。
4. サブスクリプションの「アクセス制御(IAM)」に移動して「ロールの割り当ての追加」を選択し「閲覧者」を2.で作成した新規ユーザに付与します。
※Log Analyticsワークスペースやトレージアカウントなどのサービス単体でのアクセス権限管理も可能です。
※上記項目は検証のための権限が付与されているため、実運用での適切な権限ではありません。適宜、最小権限での権限付与を推奨します。
必要なGraph API権限を持つアプリケーション
1. アプリケーションを登録します:
a. グローバル管理者または管理者権限を持つユーザで Azure ポータルにログインします(https://portal.azure.com/)。
b. Microsoft Entra IDに移動します。
c. アプリ登録を選択し、「新規登録」をクリックします。
d.アプリケーションの名前を入力し、「登録」をクリックします。
表示されている「アプリケーション(クライアント)ID」、「ディレクトリ(テナント)ID」はログ収集する際に必要なためメモをしておきます。
2. クライアントシークレットを生成します:
a.アプリケーションの「証明書とシークレット」セクションに移動します。
b.クライアントシークレットを作成し、有効期限を適切な期間に設定します。
3. API権限の割り当て:
a.アプリケーションの「API権限」セクションに移動します。
b.「権限を追加」をクリックし、作成したアプリケーションに対して、ログ収集をするために必要な表3のGraph API権限(アプリケーション権限)を割り当てます。
表3 Graph API権限の割り当て一覧(一部)
ログ収集手順
Microsoft-Extractor-Suiteを使用して、実際にログを収集していきます。
Unified Audit Log
Microsoft365への接続手順を以下に示します。
1. 管理者権限で起動したPowerShellを起動して以下のコマンドを実行します。
2. 以下のコマンドを実行して資格情報オブジェクトを作成します。
3. 2. の実施後にクライアントIDとクライアントシークレットを求めるダイアログが表示されます。
「アプリの登録」にて登録したアプリケーションのクライアントIDとシークレットを指定して「OK」を押下します。
- ユーザ名:アプリケーション(クライアント)ID
- パスワード:クライアントシークレットのシークレット「値」
4. Microsoft 365に接続するコマンドを実行します。
次にUnified Audit Logのログ取得方法を以下に示します。
※デフォルトでは過去180日分のログがダウンロードされます。オプション「-startDate」を利用することでログの取得対象期間の開始日時を指定することができます。
成功すると「Export Details」の「Output Directory」に取得したログが格納されています。
Entra IDサインインログ
Entra ID サインインログは、Unified Audit Logログ同様、Microsoft365への接続を行います。
次にEntraID サインインログのログ取得方法を以下に示します。
※デフォルトでは過去30日間のログがダウンロードされます。
Azureアクティビティログ
Azureへの接続方法を以下に示します。
1. PowerShellを起動して以下のコマンドを実行します。
2. Azureへの接続のコマンドを実行します。
3. サインインに使用するアカウントの選択を求められるため、作成した新規ユーザの資格情報を選択して「続行」を押下します。
ユーザが表示されない場合は、「職場または学校アカウント」を選択し「続行」を押下してログイン処理に進みます。
4. 次にAzureアクティビティログのログ取得方法を以下に示します。
※デフォルトでは過去90日間のログがダウンロードされます。
おわりに
今回紹介した Microsoft-Extractor-Suiteは、単一のフレームワークで M365 や Azure から包括的なデータ抽出を可能にすることができるため、複雑なクラウドインフラから迅速に「証跡」を引き出すための優秀なツールとなっています。手動のデータ収集作業を自動化・効率化することで、より高度な「分析と判断」に時間を割くことが可能になります。
本記事が、皆様のより堅牢なセキュリティ運用の助けとなれば幸いです。
参考文献
[1] Microsoft-Extractor-Suite 4.0.2
https://www.powershellgallery.com/packages/Microsoft-Extractor-Suite/4.0.2
[2] Microsoft Extractor Suite documentation
https://microsoft-365-extractor-suite.readthedocs.io/en/latest/index.html
[3] データ保持のMicrosoft Entra
https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/reference-reports-data-retention
[4] Azure Monitorのアクティビティ ログ
https://learn.microsoft.com/ja-jp/azure/azure-monitor/platform/activity-log?tabs=azure-cli%2Clog-analytics%2Ccsv-azure-cli#send-to-azure-storage
[5] Exchange Online での監視、レポート、メッセージ追跡
https://learn.microsoft.com/ja-jp/exchange/monitoring/monitoring
[6] NECセキュリティブログ~ Microsoft 365 SharePoint Onlineのフォレンジック~
https://group.nec/jp/ja/solutions/cybersecurity/blog/250214/index.html#h-e4f709f0
[7] Microsoft Purview の監査ソリューションについて説明します
https://learn.microsoft.com/ja-jp/purview/audit-solutions-overview
執筆者プロフィール
油布 翔平(ゆふ しょうへい)
担当領域:リスクハンティング
監視サービスの検討/導入やEDR製品の検証/分析の業務を経て、現在は脆弱性診断やインシデントレスポンス対応に従事。