NECサイバーセキュリティ戦略統括部セキュリティ技術センターの加来です。
Microsoft 365はMicrosoft社が提供しているクラウドサービスで、メールや予定表の機能を持つExchange Online、ドキュメントの共有やポータルサイトの作成が可能なSharePoint Online等のビジネスシーンで活用できるアプリケーションが多数存在します。本ブログでは、Microsoft組織アカウントが侵害された際に、SharePoint Onlineにて想定される不審なアクティビティを検証環境で実施して、その際に記録された痕跡を共有します。
SharePoint Onlineの機能
SharePoint Online[1]には、組織内での情報共有・共同作業を実施するために必要な機能が備わっています。その中でもサイトの作成・ドキュメントの共同編集・リストでの情報管理をここでは簡単に説明します。
サイトの作成
SharePoint Onlineではサイトという単位のワークスペースが使用されています。利用者はまずサイトを作成して、そのサイト上にメンバーを追加、ドキュメントの配置、リストの作成などを実施していきます。
ドキュメントの共同編集
サイトのメンバー間でドキュメントを共同編集することができます。OneDriveでもファイルを管理することはできますが、OneDriveは基本的に個人で使うことを想定しているため、SharePointの方が共有の設定が煩雑にならずに済みます。
リストでの情報管理
リストという機能でも情報を管理することができます。リストは簡易的なデータベースのようなイメージで、Microsoft 365の他のアプリケーションと親和性が高いという特徴があります。
本ブログでは、このサイト・ドキュメント・リストに対する操作の痕跡を確認していきます。
シナリオ
2025年1月22日に攻撃者が架空の従業員Sato TaroのMicrosoft組織アカウントを侵害した後に以下の表の操作を実施したと仮定して、その際に記録された痕跡を確認します。Sato Taroはサイト「test-site」の所有者権限を保有しています。
調査に活用するログ
今回の調査では、EntraIDサインインログ[2]とUnified Audit Log(統合監査ログ)を活用します。
EntraIDサインインログ
Microsoft365のサービスを使用する際にはMicrosoft組織アカウントが必要になります。組織アカウントはMicrosoft EntraIDというサービスで管理されており、EntraIDでの認証に関連する痕跡はEntraIDサインインログに記録されます。
Unified Audit Log
Unified Audit Logは、Microsoft365の各アプリケーションに対して行われた操作を統合的に確認することができるログです。SharePoint Onlineの他にExchange OnlineやOneDrive for Business等のアプリケーションのログも確認できます。RecordTypeというフィールドで記録されるログが種類ごとに分類されており、公式ドキュメント[3]でRecordTypeを確認すると様々なアプリケーションのログが記録されることが分かります。
またOperationというフィールドに操作の内容が記録されているため、Operationフィールドを確認するとどんな操作を実行したか特定することができます。公式ドキュメント[4]にOperationの一覧がまとめられています。
ログの保持期間
各ログの保持期間は以下の表の通り、契約しているライセンスによって異なります。
ログの収集手順
今回ログ収集にはMicrosoft-Extractor-Suite[7]を使います。ドキュメント[8]も整備されており、おすすめのログ収集ツールです。
手順を以下に示します。
1. PowerShellを起動して、こちら[9]の手順に従い必要なモジュールをインストール
2.以下のコマンドレットでサインイン
Connect-M365
Connect-Azure
3. 以下のコマンドレッドで対象期間のEntraIDサインインログを収集
Get-EntraSignInLogs -startDate 2025-01-23 -endDate 2025-01-24 -OutputDir .\Output
4. 以下のコマンドレッドで対象期間のUnified Audit Logを収集
Get-UAL -StartDate 1/23/2025 -EndDate 1/24/2025 -Output JSON -OutputDir .\Output
5. OutputフォルダにEntraIDサインインログ「SignInLogs-20250123-20250124.json」、Unified Audit Log「UAL-2025012300000000-20250123150000.json」が保存されていることを確認
痕跡
収集したEntraIDサインインログとUnified Audit Logを解析していきます。今回監査対象となっているSato TaroのMicrosoft組織アカウントは「高度な監査」を有効化しているアカウントになります[10]。
サインインの痕跡
EntraIDサインインログ、Unified Audit Logの両方にサインインの痕跡は記録されています。Unified Audit Logでは認証以外の痕跡も記録されていたため、RecordTypeを「15(AzureActiveDirectoryStsLogon)」、Operationを「UserLoggedIn」にすると今回のシナリオのサインインの痕跡を発見することができました。不審なサインインのイベントを発見した際は、以下の表のようなフィールドの値を控えておくことが大切です。これらの値を使ってログをフィルタリングすることで、後の調査を効率的に進めることができます。例えば、Unified Audit LogのUserIdフィールドはSato Taroのメールアドレス「staro@<snip>.onmicrosoft.com」であったため、以降のUnified Audit Logの解析ではUserIdが「staro@<snip>.onmicrosoft.com」のレコードに注目するといった具合です。
サイトに対する操作の痕跡
以降はUnified Audit Logのみ確認していきます。シナリオで記載したアクティビティに対応するRecordType、Operation、その他操作に関連するフィールドの値を表形式で記載します。各フィールドの定義は公式ドキュメント[11]をご確認ください。確認したレコードのRecordTypeは2(ExchangeItem)、4(SharePoint)、8(AzureActiveDirectory)でした。
ModifiedProperties.NewValue:test-site
(ModifiedProperties.Name=Group.DisplayName)
※ 検索イベントについてOperation「SearchQueryInitiatedSharePoint」を記録させることができれば、検索キーワード込みで検索のログを確認することができます。デフォルトでは無効であったため記録されませんでしたが、以下のコマンドを実行すると記録されました
[12]。また今回はもともと有効にしていましたが、「高度な監査」も有効化する必要があります。
Set-Mailbox <ユーザー名> -AuditOwner @{Add="SearchQueryInitiated"}
上記操作を実施した後、以下の表のような記録を確認しました。
ドキュメントに対する操作の痕跡
ドキュメントに対する操作の痕跡をまとめたものを以下の表に示します。確認したレコードのRecordTypeは2(ExchangeItem)、6(SharePointFileOperation)、14(SharePointSharingOperation)でした。
SourceFileName: Secret.docx
SourceFileName: Secret.docx
SourceFileName: Secret.docx
TargetUserOrGroupName: <外部ユーザーのメールアドレス>#ext#@<snip>.onmicrosoft.com
SourceFileName: Confidential.docx
SourceFileName: Confidential.docx
SourceFileName: Confidential.docx
DestinationRelativeUrl: Shared Documents
DestinationFileName: PrivateInfo.docx
SourceFileName: PrivateInfo.docx
DestinationRelativeUrl: Shared Documents/test_copy
DestinationFileName: PrivateInfo.docx
SourceFileName: PrivateInfo.docx
DestinationRelativeUrl: Shared Documents/test_move
DestinationFileName: PrivateInfo.docx
SourcefileName: PrivateInfo.docx
SourceFileName: PrivateInfo.docx
リストに対する操作の痕跡
リストに対する操作の痕跡をまとめたものを以下の表に示します。確認したレコードのRecordTypeは2(ExchangeItem)、36(SharePointListOperation)でした。
ListUrl: /sites/test-site/Lists/ClientList
ListUrl: /sites/test-site/Lists/ClientList
ListItemUniqueId: <リストItemのユニークID(GUID形式)>
※ Listをエクスポートした際のログは今回の検証では記録されませんでした。ドキュメントでリストに対する操作一覧を確認してもエクスポートの記載はない
[13](2025/2/3時点)ため、今回はスキップします。
まとめ
最後まで読んでいただきありがとうございました。今回検証してみて分かりましたが、Unified Audit Logはドキュメントが充実しているため、一度ログの形式に慣れてしまえばドキュメントを確認しつつ幅広い攻撃に対応できると筆者は考えます。皆様が調査をされる際の一助になれば幸いです。
参考文献
[1] SharePoint公式サイト
https://www.microsoft.com/ja-jp/microsoft-365/sharepoint/collaboration/
[2] Microsoft Entra サインイン ログとは
https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/concept-sign-ins
[3] Office 365 管理アクティビティAPIのスキーマ(AuditLogRecordType)
https://learn.microsoft.com/ja-jp/office/office-365-management-api/office-365-management-activity-api-schema#auditlogrecordtype
[4] 監査ログアクティビティ
https://learn.microsoft.com/ja-jp/purview/audit-log-activities
[5] Microsoft Entraのデータ保持(アクティビティレポート)
https://learn.microsoft.com/ja-jp/entra/identity/monitoring-health/reference-reports-data-retention#activity-reports
[6] Microsoft Purviewの監査ソリューションについて説明します
https://learn.microsoft.com/ja-jp/purview/audit-solutions-overview
[7] Microsoft-Extractor-Suite(Github)
https://github.com/invictus-ir/Microsoft-Extractor-Suite
[8] Microsoft Extractor Suiteドキュメント
https://microsoft-365-extractor-suite.readthedocs.io/en/latest/index.html
[9] Microsoft Extractor Suiteドキュメント(モジュールのインストール)
https://microsoft-365-extractor-suite.readthedocs.io/en/latest/installation/Installation.html#installation
[10] 監査ソリューションの概要(手順 4: ユーザーの監査 (Premium) を設定する)
https://learn.microsoft.com/ja-jp/purview/audit-get-started#step-4-set-up-audit-premium-for-users
[11] 監査ログの詳細なアクティビティ プロパティ
https://learn.microsoft.com/ja-jp/purview/audit-log-detailed-properties
[12] 監査ソリューションの概要(手順 3: SearchQueryInitiated イベントを有効にする)
https://learn.microsoft.com/ja-jp/purview/audit-get-started#step-3-enable-searchqueryinitiated-events
[13] 監査ログアクティビティ(SharePoint リスト アクティビティ)
https://learn.microsoft.com/ja-jp/purview/audit-log-activities#sharepoint-list-activities
執筆者プロフィール
加来 大輔(かく だいすけ)
セキュリティ技術センター リスクハンティングチーム
NECがお客様に納品したシステムに対するインシデント対応、Web診断などの業務に従事。
RISS、CISSP Associate、CEHを保持。