Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
fixing-google-secops-detections — Google Chronicle Curated Detections のチューニングとリファクタリングにより、アラート疲れを解消し、ロジックのギャップやバグを修正します。 | Kitploit
ツール/GitHubGitHub/all3xj/fixing-google-secops-detections
防御ツールクラウドセキュリティ脅威インテリジェンス侵入検知学習と教育インシデントレスポンスメールセキュリティ異常検知ログ分析

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHuball3xj/fixing-google-secops-detections

fixing-google-secops-detections

Google Chronicle Curated Detections のチューニングとリファクタリングにより、アラート疲れを解消し、ロジックのギャップやバグを修正します。

リポジトリを見る
41771ヶ月前未レビュー

Google SecOps (Chronicle) キュレーション検出ルール: 欠陥分析とチューニング

このリポジトリは、ネイティブな Google SecOps (Chronicle) キュレーション検出ルール に関するアーキテクチャ設計上の欠陥、ロジックの不整合、チューニング戦略を文書化したものです。

Google Threat Intelligence (GTIG) は優れた概念的な脅威カバレッジ(APT29/BRICKSTORM キャンペーンの追跡など)を提供していますが、キュレーションルールの生の YARA-L 実装は、グルーピングロジックの矛盾やハードコードされた閾値変数といった実装上の見落としにしばしば悩まされます。実際の企業環境では、これが頻繁に大規模なアラート疲れを引き起こします。

本プロジェクトは、ネイティブルールがなぜ壊れるのか、あるいは SOC をアラートで溢れさせるのかを分析し、これらの問題を解決するための最適化されたカスタムルールとパッチを共有します。

アップストリームの追跡とベンダーへのフィードバック

  • ステータス: ロジックのギャップとルールテレメトリに関するフィードバックは Google の Detection Engineering / Product チームに認識されており、Google 内部のルールライフサイクルレビュー作業ストリームが開始されています。

📑 目次

  1. BRICKSTORM / APT29 に対する O365 スイートのアラート失敗
    • 欠陥 1: グルーピングロジックの矛盾
    • 欠陥 2: Outlook Mobile パブリッククライアントの見落とし
    • 欠陥 3: 共有メールボックスの衝突
    • チューニング済み YARA-L ソリューション
  2. O365 Teams: 外部なりすましの試行
    • 欠陥 1: 攻撃者と標的の反転
    • 欠陥 2: 誤ったマッチグルーピングキー
    • チューニング済み YARA-L ソリューション
  3. UEBA: 異常な認証試行の合計
    • ハードコーディングの欠陥とアラート疲れ
    • チューニングの推奨事項

1. BRICKSTORM / APT29 に対する O365 スイートのアラート失敗

Google は、侵害されたサービスプリンシパルによる Microsoft 365 Exchange Online からの大量メール持ち出しを検出するための一連のルールをリリースしました(APT29/Midnight Blizzard が多用する手法)。

影響を受けるキュレーションルールは以下のとおりです:

  • O365 Mailbox Access by Service Principal with Multiple User Agents
  • O365 Multiple Mailboxes Accessed by Service Principal
  • O365 Mailbox Access by Service Principal from Multiple ASNs
  • O365 Multiple Mailboxes Accessed via Microsoft Graph API

❌ Google のロジックにおける中核的な欠陥

この一連のルールには、おそらくルールパック全体でのコード再利用に起因する、表明された目的と YARA-L 実装との間の体系的なロジックの不一致が含まれています。これらのルールは、自動化されたサービスプリンシパルと通常の人間のアクティビティを適切に区別できておらず、その結果、通常の従業員の行動でアラートが発報されます。

欠陥 1: グルーピングロジックの矛盾

ルールの説明には明示的に 「単一の O365 セッション ID を持つサービスプリンシパルを検出する...」 と記載されているにもかかわらず、「Multiple User Agents」ルールの YARA-L match セクションは、セッション ID($session_id)ではなく $application_id でグルーピングしています。これはルールの表明された目的と完全に矛盾しています。

  • 影響: 同じエンタープライズ App ID と同じ共有メールを共有する無関係な従業員セッションが、3 時間のウィンドウにわたってテナント全体でマージされます。これにより、同じアプリケーションの下で 2 人の異なるユーザーが異なるユーザーエージェント(例: iPhone と Android)で認証するたびに誤検知が発生し、個々のトークンハイジャックを分離できなくなります。

欠陥 2: Outlook Mobile パブリッククライアントの見落とし

このルールは、特定の ClientAppId に紐づく異常な行動パターン(IP、ASN、User-Agent の変更)を追跡します。Google は複数のネイティブ Microsoft アプリケーション向けの除外正規表現を含めていますが、最も普及している人間向けモバイルクライアントである Microsoft Outlook Mobile App(27922004-5251-4030-b22d-91ecd9a37ea4)を不可解にも除外していません。

  • 影響: この Public Client をフィルタリングしない場合、スマートフォンから共有メールボックスを閲覧する正規の従業員がネットワークを切り替える(例:Wi-Fi から 4G へ切り替える)だけで、必然的に Multiple ASNs アラートが発生します。また、異なる従業員が iOS と Android を使って同じ部門メールボックスを確認すると、Multiple User Agents アラートが発生します。

欠陥 3: 共有メールボックスの衝突

バックエンドのサービスアカウントを識別するため、Google のロジックは次の条件に依存しています: $e.principal.user.userid != $e.target.user.userid

  • 影響: この条件は単に、アクター ID が対象メールボックスの所有者と異なるかどうかをチェックしているだけです。自動化されたサービスプリンシパルには当てはまりますが、共有メールボックスや部門メールボックスにアクセスする人間の従業員(例:オペレーターが [email protected] を開く場合)にとっても標準的な動作です。この設計上の欠陥は、通常の運用における人間のトラフィックに対して大量のノイズを生成します。

✅ O365 ルール向けに調整された YARA-L ソリューション

これらの設計上の欠陥を修正するには、運用上のニーズに応じて 2 つの選択肢があります:

オプション 1: ネイティブ SIEM 除外(クイックフィックス) 必ずしもルールを無効化したりカスタムコードを書いたりする必要はありません。Google SecOps SIEM の UI 内で直接 除外 を作成するだけで済みます。Outlook Mobile(27922004-5251-4030-b22d-91ecd9a37ea4)および承認済みのバックアップアプリケーション(例:Keepit)の ClientAppId を対象とする除外を追加するだけです。これにより、Google がキュレーションしたルールを有効なままにしつつ、誤検知の洪水を即座に止めることができます。

オプション 2: カスタムルールのデプロイ(アーキテクチャ上の修正) 基盤となるグループ化ロジックの欠陥($application_id の不一致など)を完全に修正したい場合は、キュレーションされた検出を無効化し、カスタムルールをデプロイする必要があります。修正内容は次のとおりです:

  1. Outlook Mobile(27922004-...)を明示的にホワイトリストに登録する。
  2. 既知の承認済みエンタープライズバックアップアプリ(例:Keepit)をホワイトリストに登録する。
  3. match セクションを修正し、セッションごとに適切に集約する。
調整済みルール 1: Multiple User Agents
rule custom_ttp_o365_mailbox_access_by_service_principal_with_multiple_uas {
  meta:
    rule_name = "[CUSTOM] O365 Mailbox Access by Service Principal with Multiple User Agents"
    description = "Detects a Service Principal with a single O365 session ID accessing O365 mailboxes with multiple user agents. Tuned to fix grouping logic and exclude Outlook Mobile (Public Client) human traffic."
    severity = "Low"
    tactic = "TA0009"
    technique = "T1114.002"

  events:
    $e.metadata.log_type = "OFFICE_365"
    $e.metadata.product_event_type = "MailItemsAccessed" nocase
    $e.target.application = "Exchange"
    $e.security_result.detection_fields["RecordType"] = /^(2|50)$/

    // Extract actual Session ID and App ID
    $session_id =$e.network.session_id
    $application_id =$e.additional.fields["ClientAppId"]

    $e.principal.user.userid !=$e.target.user.userid

    ( 
      $e.network.http.user_agent = /AppId/ nocase or$e.additional.fields["ClientAppId"] = /./
    )

    // EXCLUSIONS: Added Outlook Mobile + Standard Google Exclusions
    $e.additional.fields["ClientAppId"] != /^(27922004-5251-4030-b22d-91ecd9a37ea4|bea75f7a-2505-46e8-9bf6-d3f7da9c9da7|b52893c8-bc2e-47fc-918b-77022b299bbc|...)$/ nocase

  match:
    // Group by both App AND Session to isolate the specific token lifecycle
    $application_id,$session_id over 3h

  outcome:
    $vendor_name = "Microsoft"
    $product_name = "Office 365"
    $source_ua_dc = count_distinct($e.network.http.user_agent)
    $client_app_id = array_distinct($e.additional.fields["ClientAppId"])

  condition:
    // Triggers if the SAME session rotates 2+ User Agents
    $e and $source_ua_dc >= 2
}

調整済みルール 2: 複数のメールボックスへのアクセス

(ロジックは同じですが、除外設定では Outlook Mobile と並んで Keepit (a7cd46df...) のような承認済みバックアップソリューションを必ずホワイトリストに登録してください。)

調整済みルール 3: 複数の ASN

(User Agents ルールとは異なり、Google はこのルールで $session_id によるグループ化を正しく行えています。ただし、Outlook Mobile の除外が依然として欠けています。上記と同じ除外ロジックに従い、$source_asn_dc >= 2 の条件を維持してください。)

調整済みルール 4: Microsoft Graph API 経由でアクセスされた複数のメールボックス

(ロジックは同じです。events ブロックの末尾にある除外正規表現に、Keepit (a7cd46df...) のような承認済みバックアップアプリケーションを必ず追加してください。)


2. O365 Teams: 外部なりすましの試行

ルール: ttp_o365_teams_external_impersonation_attempt

対象イベント: OFFICE_365 (metadata.product_event_type = "TeamsImpersonationDetected")

Microsoft Defender for Office 365 は、外部からの受信 Microsoft Teams チャットを検査し、TeamsImpersonationDetected 監査操作を通じてドメインやブランドのなりすましの可能性をフラグ付けします。YARA-L 検出ルールに変換すると、ネイティブのキュレーション済み実装はエンティティの誤帰属とマッチキーの見落としという問題を抱えています。

❌ 検出ロジックの根本的な欠陥

// Native Flawed Implementation Sample
events:
  $e.metadata.log_type = "OFFICE_365"
  $e.metadata.product_event_type = /TeamsImpersonationDetected/ nocase
  $principal_userid =$e.principal.user.userid

match:
  $principal_userid over 1h

outcome:
  $result = "succeeded"
  $adversary_name = array_distinct($e.principal.user.userid)

欠陥 1: 攻撃者と標的の反転

Chronicle のデフォルトパーサーは、受信者 UserId(メッセージを受信した内部ユーザー)を principal.user.userid にマッピングします。なりすましを試みる外部アクターは、ネストされた Sender オブジェクト(Sender.UPN)内に存在し、additional.fields["Sender_UPN"] にパースされます。

  • 影響: $adversary_name = array_distinct($e.principal.user.userid) を割り当てることで、このルールは下流の SOC アラートおよび SOAR ケースにおいて内部の被害者を攻撃者としてラベル付けします。

欠陥 2: 誤ったマッチグループ化キー

このルールは match: $principal_userid over 1h を強制し、アラートを受信従業員ごとにグループ化します。

  • 影響: 攻撃者が 30 人の内部従業員を同時に標的とする外部フィッシングキャンペーンを実施した場合、SecOps は単一の統合された脅威キャンペーンではなく、30 件の個別アラートを生成します。逆に、複数の異なる外部アクターが 1 時間以内に同一の内部ユーザーに接触した場合、それらの身元は単一のアラートに統合され、マルチベクターの試行が不明瞭になります。

✅ Teams なりすまし向けにチューニングされた YARA-L ソリューション

オプション 1: アラートプロファイルの調整(クイックフィックス)

ツールをダウンロード