Compact
true
担当領域:リスクハンティング
監視サービスの検討/導入やEDR製品の検証/分析の業務を経て、現在は脆弱性診断やインシデントレスポンス対応に従事。

現代のサイバーセキュリティにおいて、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で収集可能なログの種類

ログの種類
1
1
ログの説明
1
2
Column3
1
1
ログの保持期間
1
1
Unified Audit Log
1
1
Microsoft365の各アプリケーションに対して行われた操作を統合的に確認することができるログです。
※取得には監査ログを有効化する必要があります。
1
2
Column3
1
1
  • 監査 (標準):180日
  • 監査 (プレミアム):10年間
1
1
Entra IDサインインログ
1
1
ユーザやアプリケーションがMicrosoft Entra テナントにアクセスする際のサインインアクティビティのログです。
1
2
Column3
1
1
  • 無料:7日
  • P1/P2:30日
1
1
Entra ID監査ログ
1
1
Microsoft Entra IDの テナント内で発生したシステムアクティビティの履歴を記録したログです。
ユーザの管理、グループの変更、アプリケーションの設定更新といった、ディレクトリ内でのあらゆる操作(作成、更新、削除など)を追跡するために不可欠なリソースです。
1
2
Column3
1
1
  • 無料:7日
  • P1/P2:30日
1
1
Azureアクティビティログ
1
1
Azure リソースに対して実行された管理操作(コントロール プレーン操作)を記録するログです。
1
2
Column3
1
1
90日
(90日を超える保持や高度な分析が必要な場合は、診断設定などを作成する必要あり)
1
1
NSGフローログ
1
1
Azure仮想ネットワーク内を流れるIPトラフィックに関する情報(送信元/送信先IP、ポート、プロトコル、許可/拒否など)を記録するログです。
1
2
Column3
1
1
ストレージアカウントなどで保持する必要あり。
1
1
VNetフローログ
1
1
Azure仮想ネットワーク内を流れるIPトラフィックに関する情報(送信元/送信先IP、ポート、プロトコル、許可/拒否など)を記録するログです。
1
2
Column3
1
1
ストレージアカウントなどで保持する必要あり。
1
1

インストール&ログ収集準備

Microsoft-Extractor-SuiteによってEntra IDやM365環境でログ収集をする際に、以下の3点の設定が必要となります。

ツールを実行する端末に必要なPowerShellモジュールのインストール

PowerShellを管理者権限で実行し、Microsoft-Extractor-Suiteの使用に必要なモジュールを以下のコマンドを入力してインストールします。

Install-Module -Name Microsoft-Extractor-Suite
Install-Module -Name Microsoft.Graph
Install-Module -Name Az
1
1

表2 各機能での必要な権限(一部)

機能性
必要な権限(役割)
Unified Audit Log
2
1
AuditLogs
1
1
Column1
1
1
AuditLogsQuery.Read.All
1
1
Admin Audit Log
AuditLogs
Entra ID Logs
5
1
Reports Reader
1
1
Column1
Security Reader
Column1
Security Administrator
Column1
Global Reader (sign-in logs only)
Column1
Global Administrator
User/Admin information
4
1
User.Read.All
1
1
Column1
1
1
Directory.AccessAsUser.All
1
1
Column1
1
1
User.ReadBasic.all
1
1
Column1
1
1
Directory.Read.All
1
1
Device information
2
1
Device.Read.All
1
1
Column1
1
1
Directory.Read.All
1
1
Group information
2
1
Group.Read.All
1
1
Column1
1
1
Directory.Read.All
1
1
Security Alerts
1
1
SecurityEvents.Read.All
1
1

次に、Microsoft-Extractor-Suiteを実行するために、ユーザへの適切な権限の割り当て(表2参照)および、ログ収集に必要なGraph API権限を持つアプリケーションの設定(表3参照)の設定例を示します。

ログ収集するために必要な権限を持つアカウントの設定例

1. Microsoft 365 管理センター (https://admin.microsoft.com/) で新しいユーザ アカウントを作成します。

100

2. 新規ユーザに「Global Reader」ロールを割り当てます。
3. Azureポータル (https://portal.azure.com/)に移動します。
4. サブスクリプションの「アクセス制御(IAM)」に移動して「ロールの割り当ての追加」を選択し「閲覧者」を2.で作成した新規ユーザに付与します。

100

※Log Analyticsワークスペースやトレージアカウントなどのサービス単体でのアクセス権限管理も可能です。
※上記項目は検証のための権限が付与されているため、実運用での適切な権限ではありません。適宜、最小権限での権限付与を推奨します。

必要なGraph API権限を持つアプリケーション

1. アプリケーションを登録します:
a. グローバル管理者または管理者権限を持つユーザで Azure ポータルにログインします(https://portal.azure.com/)。
b. Microsoft Entra IDに移動します。
c. アプリ登録を選択し、「新規登録」をクリックします。

100

d.アプリケーションの名前を入力し、「登録」をクリックします。
表示されている「アプリケーション(クライアント)ID」、「ディレクトリ(テナント)ID」はログ収集する際に必要なためメモをしておきます。

100

2. クライアントシークレットを生成します:
a.アプリケーションの「証明書とシークレット」セクションに移動します。
b.クライアントシークレットを作成し、有効期限を適切な期間に設定します。

100

3. API権限の割り当て:

a.アプリケーションの「API権限」セクションに移動します。

100

b.「権限を追加」をクリックし、作成したアプリケーションに対して、ログ収集をするために必要な表3のGraph API権限(アプリケーション権限)を割り当てます。

表3 Graph API権限の割り当て一覧(一部)

権限
1
1
説明
1
1
Application.Read.All
1
1
すべてのアプリケーションの読み取り
1
1
AuditLog.Read.All
1
1
すべての監査ログデータの読み取り
1
1
AuditLogsQuery.Read.All
すべてのサービスからの監査ログデータの読み取り
Directory.Read.All
ディレクトリデータの読み取り
User.Read.All
すべてのユーザの完全なプロフィールの読み取り
Group.Read.All
アプリによるグループ一覧の取得を許可
Device.Read.All
すべてのデバイス情報の読み取り
SecurityEvents.Read.All
セキュリティ イベントとアラートの読み取り
100

ログ収集手順

Microsoft-Extractor-Suiteを使用して、実際にログを収集していきます。

Unified Audit Log

Microsoft365への接続手順を以下に示します。
1. 管理者権限で起動したPowerShellを起動して以下のコマンドを実行します。

powershell -ep bypass
1
1

2. 以下のコマンドを実行して資格情報オブジェクトを作成します。

$clientsecret = Get-Credential
1
1

3. 2. の実施後にクライアントIDとクライアントシークレットを求めるダイアログが表示されます。
「アプリの登録」にて登録したアプリケーションのクライアントIDとシークレットを指定して「OK」を押下します。

100

4. Microsoft 365に接続するコマンドを実行します。

Connect-MgGraph -TenantId "<ディレクトリ(テナント)ID>" -ClientSecret $clientsecret
1
1
100

次にUnified Audit Logのログ取得方法を以下に示します。

Get-UALGraph -SearchName test -startDate "YYYY-MM-DDTHHssZ"
1
1

※デフォルトでは過去180日分のログがダウンロードされます。オプション「-startDate」を利用することでログの取得対象期間の開始日時を指定することができます。
成功すると「Export Details」の「Output Directory」に取得したログが格納されています。

100

Entra IDサインインログ

Entra ID サインインログは、Unified Audit Logログ同様、Microsoft365への接続を行います。
次にEntraID サインインログのログ取得方法を以下に示します。

Get-GraphEntraSignInLogs YYYY-MM-DD
1
1

※デフォルトでは過去30日間のログがダウンロードされます。

100

Azureアクティビティログ

Azureへの接続方法を以下に示します。
1. PowerShellを起動して以下のコマンドを実行します。

powershell -ep bypass
1
1

2. Azureへの接続のコマンドを実行します。

Connect-AzAccount
1
1

3. サインインに使用するアカウントの選択を求められるため、作成した新規ユーザの資格情報を選択して「続行」を押下します。
ユーザが表示されない場合は、「職場または学校アカウント」を選択し「続行」を押下してログイン処理に進みます。

50

4. 次にAzureアクティビティログのログ取得方法を以下に示します。

Get-ActivityLogs
1
1

※デフォルトでは過去90日間のログがダウンロードされます。

100

おわりに

今回紹介した 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

執筆者プロフィール

50

油布 翔平(ゆふ しょうへい)
担当領域:リスクハンティング

監視サービスの検討/導入やEDR製品の検証/分析の業務を経て、現在は脆弱性診断やインシデントレスポンス対応に従事。