Microsoft 365 フォレンジック調査のメモ

Microsoft 365 フォレンジック調査のメモ。

Unified Audit Log (UAL)

Entra ID、Exchange、SharePoint、OneDrive、Teams関連のアクティビティが記録される。ログの調査方法についてはこちらを参照。

以下はUALの主要なフィールド。

  • Workload: ログを生成したアプリケーション名を表す。 例)SharePoint
  • Record Type: Operation (後述)の論理グループを数字で表す。 例)6 (SharePointFileOperation)
  • Operation: 具体的な操作内容を表す。例)FileAccessed

UALには以下の3つの方法でアクセスできる。

  • Microsoft Purview Compliance Portal: Webポータル。UALをさっと確認したい場合に向いている。ログをCSVとしてエクスポートした場合、肝心のデータはJSON形式でAuditDataというひとつのカラムに全てぶち込まれているので、Microsoft ExcelやLibreOffice Calcを使った調査には向いていない。
  • Search-UnifiedAuditLog: PowerShellのコマンドレット。最大で5000レコードまで取得可能。-resultsizeを指定しないと100レコードまでしか取得されない。コマンドの例はこちらを参照。
  • Microsoft 365 Management API: API。大規模なUALの収集に向いている。(APIで定期的にUALを収集してSIEMへとインポートする)

Exchange

注意すべきExchange関連のオペレーション

  • MailItemsAccessed: メールが閲覧もしくはアクセスされたことを示す。
  • New-InboxRule: 新しい受信ルールが作成されたことを示す。攻撃者は本来のユーザーに攻撃活動を悟られないように、特定のメールを削除したり、別フォルダへ移動するような受信ルールを作成することが多々ある。
  • Set-InboxRule: 既存の受信ルールが編集されたことを示す。
  • UpdateInboxRules: 受信ルールの作成、編集、または削除を示す。

MoveToDeletedItems vs SoftDelete vs HardDelete

  • MoveToDeletedItems: メールがDeleted Itemsフォルダに移動したことを示す。
  • SoftDelete: メールが完全に削除された、もしくはDeleted Itemsフォルダから削除されたことを示す。SoftDeleteされたメールはRecoverable Itemsフォルダに移動する。
  • HardDelete: メールがRecoverable Itemsフォルダから削除されたことを示す。

Bind vs Sync

  • Bind: OWA、 IMAP、 POP3などの新しいバージョンのOutlookクライアントがメールにアクセスした場合に記録されるレコードで、アクセスしたメールのメッセージIDが記録される。メッセージIDを調べることで、どのメールがアクセスされたか確認できる。Record Typeは50
  • Sync: 古いバージョンのOutlookクライアントとMicrosoft Exchangeのフォルダが同期した際に記録されるレコード。Bindと異なりメッセージIDは記録されないので、どのメールがアクセスされたかを確認することはできないどのフォルダが同期されたかは確認できる。Record Typeは2

Message Trace vs Content Search

Exchange (メール) 関連のイベントを突っ込んで調査したい場合は、Message TraceContent Searchを活用する。

  • Message Trace: Exchange Admin Center -> Message Traceより、メールの送信者、受信者、メッセージIDに基づいた検索が可能。例えば、evil@mail.comから送信されたメールを抽出するなど。メールの配送状態(受信されたか、破棄されたか、隔離されたかなど)のサマリーを確認できる。
  • Content Search: Microsoft Purview Compliance Portal -> Content Searchより、メールのヘッダーのみならず、メール本文のキーワード検索が可能。また、メールのプレビューを参照したり、メールそのものをダウンロードすることも出来る。

SharePoint

注意すべきSharePoint関連のオペレーション

  • FileAccessed: ファイルがアクセスされたことを示す。
  • FileAccessedExtended: 特定のユーザーが長時間に渡って継続的にファイルにアクセスしたことを示す。
  • FileModified: ファイルが編集されたことを示す。
  • FileModifiedExtended: 特定のユーザーが長時間に渡って継続的にファイルを編集したことを示す。
  • FileDownloaded: ファイルがダウンロードされたことを示す。攻撃者は攻撃活動の一環として、重要なファイルを自身のデバイスにダウンロードすることがある。
  • FileUploaded: ファイルがアップロードされたことを示す。攻撃者は攻撃活動の一環として、ファイルをアップロードすることがある (フィッシングに使うファイルなど)。
  • PageViewed: ページが閲覧されたことを示す。
  • PageViewedExtended: 特定のユーザーが長時間に渡って継続的にページを閲覧したことを示す。
  • FilePreviewed: SharePointやOneDrive上でファイルがプレビューされたことを示す。ユーザーが画像ギャラリーを閲覧した場合、大量のFilePreviewedオペレーションが記録される。
  • SearchQueryPerformed: SharePointやOneDrive上で検索が行われたことを示す。攻撃者は目的のファイルを探すために検索を行うことがある。
  • AnonymousLinkCreated: リソースへの匿名リンク (anonymous link)が作成されたことを示す。このリンクを使えば、誰でも認証無しでリンク先のリソースにアクセスできる。
  • SecureLinkCreated: 特定のユーザーやグループのみがアクセスできるリンクが作成されたことを示す。アクセス権を持つユーザーやグループを確認するには、AddedToGroupオペレーションを参照する。

Entra ID

Entra IDとはMicrosoftのIdentity and Access Management (IAM) ソリューションである。Microsoft 365だけでなく、Microsoft Azureの認証も担う。Entra IDのログはUALとAzureポータルの両方に記録される。フォレンジック調査において特に重要なのはSign-in LogとAudit Logの2種類。

Sign-in Log

サインインに関するログが記録される。Sign-in Logはさらに以下の5種類に分けられる。

  • Interactive Sign-in Log: ユーザーによるサインインが記録される。
  • Non-interactive Sign-in Log: クライアントアプリケーションやOSによるサインインが記録される。
  • Service Principal Sign-in Log: 非ユーザーアカウントによるサインインが記録される。 (主にGraph APIによるサインイン)
  • Managed Identity Sign-in Log: Azureによってシークレットが管理されているリソースによるサインインが記録される。
  • ADFS Sign-in Log: Active Directory Federation Services (ADFS) によるサインインが記録される。

Audit Log

テナントレベルで実行されたタスク (アプリケーション、ユーザー、Service Principalの作成・変更など) が記録される。以下はオペレーションの一例。

  • Add service principal
  • Consent to application
  • Remove delegated permission grant
  • Update device

Microsoft Graph API

Microsoft GraphとはMicrosoft 365やAzureとやり取りするためのRESTfulなAPIである。https://graph.microsoft.comにリクエストを送信してやり取りを行う。

  • GET: リソースを取得する。(GET /users)
  • POST: リソースを新規作成する。(POST /users)
  • PATCH: 既存のリソースを変更する。変更する箇所の情報のみを指定すればオーケー。(PATCH /users/<id|userPrincipalName>)
  • PUT: 既存のリソースを変更する。変更する箇所にかかわらず、すべての情報を指定しなければならない。(PUT /users/<id|userPrincipalName>)
  • DELETE: リソースを削除する。(DELETE /users/<id|userPrincipalName>)

Microsoft Graph APIを利用するには、以下の手順を踏む必要がある。

  1. Entra IDにてアプリケーションを登録する。
  2. アプリケーションのパーミッションを設定する。
  3. Administratorから許可をもらう。
  4. アクセストークンを要求する。
  5. Graph APIを実行する。

APIの実行履歴はMicrosoft Graph Activity Logに記録される。ただしAPIによってもたらされた変更結果は記録されない。 (Audit LogやSubscription Logなど、ほかのログを併せて参照する必要がある)

以下はフォレンジック調査で注視すべきMicrosoft Graph Activity Logのフィールド。

  • AppId: APIを実行したアプリケーションのGUID。
  • ServicePrincipalId: APIを実行したservice principalのGUID。
  • IPAddress: APIを実行したIPアドレス。大抵の場合はMicrosoftのIPアドレスが記録されるが、カスタムアプリケーションからAPIが実行された場合、Microsoft以外のIPアドレスが記録されることがある。
  • RequestUri: APIのリクエスト先。
  • RequestMethod: リクエストの種類。 (GET, POST ,PUT, PATCH, DELETE)
  • RequestStatusCode: リクエストに対する応答コード。 (リクエスト成功なら200)
  • Roles/Scopes: APIの実行に使用されたトークンのロールとスコープ。

Microsoft Graph Activity LogにはAPIを実行したアプリケーションの名前は記録されないことに注意。
アプリケーションの名前を特定したい場合は、アプリケーションのGUIDを取っ掛かりにしてAudit LogやUALを調べる。

Leave a Reply

Your email address will not be published. Required fields are marked *


The reCAPTCHA verification period has expired. Please reload the page.