APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【CrowdStrike】Falcon Foundry徹底解説 その3

自己紹介

こんにちは、エーピーコミュニケーションズiTOC事業部 BzD部 0-WANの田中と申します。
弊社でEDR製品を導入いただいたお客様のインシデント調査を主に担当しております。
その傍らプログラマーとしての経験と知識を生かしてセキュリティに関するウェブアプリケーションを設計構築するなどSOCチームのメンバーとして日々サイバーセキュリティと共に在るエンジニアです。

2025年は12回に渡ってCrowdStrikeの利用者視点で役に立つ情報をお伝えしています。

掲載月 トピック
1 2025/1 【CrowdStrike】FalconConsole徹底解説 その1
2 2025/2 【CrowdStrike】FalconConsole徹底解説 その2
3 2025/3 【CrowdStrike】FalconConsole徹底解説 その3
4 2025/4 【CrowdStrike】クエリー徹底解説 その1
5 2025/5 【CrowdStrike】クエリー徹底解説 その2
6 2025/6 【CrowdStrike】クエリー徹底解説 その3
7 2025/7 【CrowdStrike】API徹底解説 その1
8 2025/8 【CrowdStrike】API徹底解説 その2
9 2025/9 【CrowdStrike】API徹底解説 その3
10 2025/10 【CrowdStrike】Falcon Foundry徹底解説 その1
11 2025/11 【CrowdStrike】Falcon Foundry徹底解説 その2
12 2025/12 【CrowdStrike】Falcon Foundry徹底解説 その3

今回は、公式チュートリアル『脅威ハンティングダッシュボードとレポートスケジュールの作成』を題材に、Falconコンソール上でのGUI開発フローを解説します。

公式ドキュメントは以下をご参照ください。

https://falcon.us-2.crowdstrike.com/documentation/page/t2de2d0b/create-a-threat-hunting-dashboard-and-scheduled-report

公式チュートリアルに関するご注意
公式ドキュメントの手順をそのまま実行すると、環境によってはドメイン等のリンクを含むメールが大量に送信される場合があります。そのため、本記事では該当箇所を調整した手順で解説しています。

アプリ開発チュートリアル

以下のリンクから「アプリ開発チュートリアル」をはじめます。

https://falcon.us-2.crowdstrike.com/foundry/learn

アプリ開発チュートリアル

以下の指示に従ってチュートリアル「脅威ハンティングダッシュボードとレポートスケジュールの作成」を進めてアプリを作成します。(Falconドキュメントより引用)

脅威ハンティングダッシュボードを作成し、アプリのホームページとして設定します。

不審なDNSアクティビティを示しているホストのリストをセキュリティチームに定期的に提供できるように、Eメールをスケジュールします。

このチュートリアルでは、以下のFoundry機能について説明します。

・ ダッシュボード

・ ワークフローテンプレート

基本的なアプリ作成プロセスをいくつかのステップに分けています。

ステップ1:アプリを作成する

ステップ2:ダッシュボードの追加

ステップ3:ダッシュボードをアプリのホームページとして設定

ステップ4:アプリのデプロイ

ステップ5:アプリのUIのプレビュー

ステップ6:Fusion SOARアクションとしてクエリを設定

ステップ7:ワークフローテンプレートの追加

ステップ8:再デプロイとリリース

ステップ9:アプリのインストール

ステップ1:アプリを作成する

以下のリンクから「アプリ管理」画面に移動してアプリを作成します。

https://falcon.us-2.crowdstrike.com/foundry/app-manager

アプリを作成する

アプリの名前や説明を設定して作成

ステップ2:ダッシュボードの追加

センサーや検知イベントのデータをクエリして脅威を視覚化するダッシュボードを作成します。

アプリの概要ページでエクスペリエンスパネルを選択

エクスペリエンスページで「ダッシュボードの作成」を選択

ダッシュボードの作成

ダッシュボードが編集モードで開きます。この後ダッシュボードの部品となる「ウィジェット」を作成して配置していきます。

編集モード

最初のウィジェット:ユーザースペースでのプロセスの実行

過去7日間にユーザースペースで実行されたプロセスを表示するダッシュボードウィジェットを追加します。

Foundryアプリ、センサーイベント、検知で提供されるデータを検索

「クエリの追加」を選択するとクエリビルダーが起動します。

以下のクエリを追加し「クエリを保存する」をクリックして保存します。

クエリビルダー

使用するクエリについて、公式手順では AuthenticationID をキーに結合しますが、弊社環境では値が取得できなかったため、今回は aid を代用して結合しました。
▼ 修正版クエリ (今回使用)
#event_simpleName=ProcessRollup2 OR #event_simpleName=SyntheticProcessRollup2
| ImageFileName=/(\\Desktop\\|\\AppData\\)/
| join({#event_simpleName=UserIdentity | groupBy([aid, AuthenticationID, UserName], limit=max)}, field=aid, include=UserName)
| table([aid, UserName, ImageFileName, SHA256HashData], limit=1000)
▼ 公式クエリ (参考)
#event_simpleName=ProcessRollup2 OR #event_simpleName=SyntheticProcessRollup2
| ImageFileName=/(\\Desktop\\|\\AppData\\)/
| join({#event_simpleName=UserIdentity | groupBy([aid, AuthenticationID, UserName], limit=max)}, field=AuthenticationID, include=UserName) 
| table([aid, UserName, ImageFileName, SHA256HashData], limit=1000)

名前と説明を設定して保存します。同様にウィジェット名と外観も設定します。

クエリを保存する
ウィジェット名を設定する
ウィジェットの外観を選ぶ

ウィジェットの追加

ダッシュボードに追加された

これで最初のウィジェットがダッシュボードに追加されました。この後も同様にウィジェットを追加していきます。

2番目のウィジェット:エンコード化されたPowerShellコマンド

過去7日間にユーザーが実行した、エンコード化されたPowerShellコマンドを表示するウィジェットを追加します。 最初のウィジェットと同様にクエリを追加します。

使用するクエリについて、公式手順では AuthenticationID をキーに結合しますが、弊社環境では値が取得できなかったため、今回は aid を代用して結合しました。
▼ 修正版クエリ (今回使用)
#event_simpleName=ProcessRollup2 
ImageFileName=/\\powershell\.exe/i CommandLine=/\s-[e^]{1,2}[ncodema^]+\s/i
| join({#event_simpleName=UserIdentity | groupBy([aid, AuthenticationID, UserName], limit=max)}, field=aid, include=UserName)
| table([aid, UserName, ImageFileName, CommandLine], limit=1000)
▼ 公式クエリ (参考)
#event_simpleName=ProcessRollup2 
ImageFileName=/\\powershell\.exe/i CommandLine=/\s-[e^]{1,2}[ncodema^]+\s/i
| join({#event_simpleName=UserIdentity | groupBy([aid, AuthenticationID, UserName], limit=max)}, field=AuthenticationID, include=UserName)
| table([aid, UserName, ImageFileName, CommandLine], limit=1000)

クエリを保存

3番目のウィジェット:不審なDNSクエリの数

過去7日間にユーザーが実行した不審なDNSクエリの数を表示するウィジェットを追加します。 最初のウィジェットと同様にクエリを追加します。

最終的な表示結果を10件だけに絞り込み、あとで作るワークフローで大量のメールを送信することを防ぎます。
▼ 修正版クエリ (今回使用)
aid=?{aid="*"}
| groupBy([aid, DomainName], limit=max)
| _count < 3
| head(10)
▼ 公式クエリ (参考)
aid=?{aid="*"}
| groupBy([aid, DomainName], limit=max)
| _count < 3

クエリを保存

4番目のウィジェット:不審なDNSクエリのデータテーブル

ウィジェットを追加して、同じ検索結果を異なるビューに表示することができます。前のウィジェットで使用したクエリに基づいて、カウントではなくテーブルビューでウィジェットを追加します。

同一のクエリで外観を変更したウィジェットを作成する(画像は公式クエリ利用の場合の数値)

すべてのウィジェットを登録したら「ダッシュボードの保存」をクリックしてダッシュボードを保存します。(こまめに保存することをお勧めします)

ダッシュボードを保存する

ステップ3:ダッシュボードをアプリのホームページとして設定

新しいダッシュボードをアプリのホームページとして設定します。 「ナビゲーション設定の指定」を選択し表示されたダイアログで「アプリのホームページとして設定」にチェックを入れて保存します。

ナビゲーション設定の指定

アプリのホームページとして設定

ステップ4:アプリのデプロイ

デプロイを実行すると、アプリの現在のバージョンがCrowdStrikeクラウド上にプッシュ(保存)されます。 これによりバージョン管理機能が働き、自分や他のメンバーが継続的にアプリの改善(イテレーション)を行えるようになります。

デプロイを実行することでFalcon管理者とFoundryアプリ開発者にアプリが表示されます。 アプリは、リリースしてインストールするまで、エンドユーザーには表示されません。

デプロイ(プッシュ)

デプロイメントをコミット

デプロイ中

ステータスが「デプロイ済み」に更新

ステップ 5:アプリのUIのプレビュー

ダッシュボードをプレビューモードで確認します。 プレビューモードを使用すると、UIの機能(ダッシュボード、UI拡張機能、UIページ、UIナビゲーション)を使用してデプロイメントをテストできます。 脅威ハンティングダッシュボードの完成です。

「プレビュー」選択

「プレビューモード」になったらブラウザを更新

サイドメニューに「カスタムアプリ」が表示される

プレビューモードでダッシュボードが開く

ステップ6:Fusion SOARアクションとしてクエリを設定

続いて、不審なDNSアクティビティに関するEメールレポートです。

【⚠️ 実践にあたっての重要なお知らせと免責事項】

本チュートリアルで作成するアプリをインストール・有効化すると、ワークフローが即座に実行される場合があります。手順を試す際は、以下の点に十分ご注意ください。安全なクエリを別に作成して試されることを強くお勧めします。

1. 大量のメール通知について 環境の検知状況によっては、ワークフローの実行に伴い大量の通知メールが送信される可能性があります。 検証用のメールアドレスを使用するなど、受信環境にはご注意ください。

2. リンクの取り扱いについて 送信されるメール本文には、脅威インテリジェンスに基づいた実在する不審なドメイン名が含まれています。これらは危険なサイトである可能性が高いため、決してリンクをクリックしないでください。

【免責事項】 本記事の内容は技術解説を目的としています。本記事の手順を実行した結果、システムへの負荷、セキュリティインシデント、その他いかなる損害やトラブルが生じた場合でも、筆者および所属組織は一切の責任を負いかねます。 実装および実行は、必ずご自身の責任と判断において行ってください。

不審ドメインのリンクは決してクリックしないでください!

レポートでは、Fusion SOARでスケジュールされたワークフローを実行するワークフローテンプレートを作成します。このワークフローでは、前のステップで設定した不審なDNSクエリ検索を使用します。ワークフローでクエリを使用するには、Fusion SOARでクエリを有効にします。

プレビューを終了してアプリを編集する

データを開始する

「不審なDNSクエリ」を選択して編集

最終的な表示結果を10件だけに絞り込み、ワークフローで大量のメールを送信することを防ぎます。
▼ 修正版クエリ (今回使用)
aid=?{aid="*"}
| groupBy([aid, DomainName], limit=max)
| _count < 3
| head(10)

「Share with app workflows and Fusion SOAR(アプリのワークフローおよびFusion SOARと共有する)」を選択して保存

「入力スキーマ」タブを選択して「入力スキーマの編集」をクリック

Format(形式)をSensor ID(センサーID)に変更

「変更の保存」をクリック

フォーマットがaid(センサーID)に変更された

ステップ7:ワークフローテンプレートの追加

Foundryアプリの自動化機能は「ワークフローテンプレート」を作成して定義します。 今回は「重大度『高』の不審なDNS通信を行ったホストを特定し定期的にメールでリストを送信する」というスケジュール実行型のワークフローを作成してみましょう。

サイドメニューの「ロジック」をクリック

Create workflow template(ワークフローテンプレートを作成)をクリック

Eメールで送信されるレポートのスケジュールを設定します。

  • 「How often(頻度)」で、「Weekly(週に1回)」を選択します。
  • 「Start time(開始時間)」と「Time zone(タイムゾーン)」を設定します。
  • 必要に応じてその他の設定を行います。
  • テストEメールを送信するには、「Start time(開始時間)」を1時間以内に設定し、曜日を今日に設定します。
「スケジュールされたワークフロー」を選択
各設定登録後「次へ」

過去1週間に最終検出されたデバイスを探します。 これを行うには、「Scheduled(スケジュール済み)」ノードに「Device Query(デバイスクエリ)」アクションを追加します。

「Device Query(デバイスクエリ)」アクションを追加

「Configure(設定)」セクションの「Last seen(最終検出)」で、「Last week(先週)」を選択し、次に「Last seen(最終検出)」の横にあるチェックボックスを選択

※このチェックボックスを選択すると、「Last seen(最終検出)」フィールドがさまざまな入力形式を受け入れられるようになります。 例えば、あるデバイスがDD-MM-YYYY値を返し、別のデバイスがMM-DD-YYYY値を返す場合、フィールドをパラメーター化することで、両方の形式が受け入れられるようになり、エラーが発生しなくなります

デバイスごとにデバイスクエリアクションを繰り返し実行するためループを設定します。

「ループ」を選択

各設定を登録して「次へ」

「Suspicious DNS Queries(不審なDNSクエリ)」を検索し、検索結果からクエリを選択

「Aid」で、固定オプションが選択された状態で
「Sensor IDs instance(センサーIDインスタンス)」を選択
補足情報:出力スキーマの設定について

もしもワークフローで分岐にループが表示されないなど問題がある場合は、クエリの編集で該当クエリの「出力スキーマ」を手動で設定することで直ることがあります。

分岐にループが表示されない場合
出力スキーマを設定することで
分岐にループが表示されるようになった

出力スキーマを設定する場合は、前出の「不審なDNSクエリ」の編集で「出力スキーマ」に以下を貼り付けて保存してください。
クエリーの保存後デプロイも忘れずに行ってください。その後「ワークフローテンプレート」作成を再開してください。
くわしくはCrowdStrikeサポートへお問い合わせください。

{
  "type": "object",
  "$schema": "https://json-schema.org/draft-07/schema",
  "required": [
    "DomainName",
    "_count",
    "aid"
  ],
  "properties": {
    "aid": {
      "type": "string",
      "title": "Aid"
    },
    "_count": {
      "type": "integer",
      "title": "Count"
    },
    "DomainName": {
      "type": "string",
      "title": "DomainName"
    }
  },
  "description": "Generated response schema"
}

イベント件数分ループ処理を行う(ループ)

イベントがあれば(条件)
メールを送信する(アクション)

メッセージ欄には以下を貼り付けます。

メールに不審なドメイン名が埋め込まれないようにドメイン名(Instance Name: ${DomainName instance})は入れません。
▼ 修正版メッセージ (今回使用)
Host ID: ${Aid instance}
DNS Count: ${Count instance}
▼ 公式メッセージ (参考)
Host ID: ${Aid instance}
DNS Count: ${Count instance}
Instance Name: ${DomainName instance}

インクルードデータはダウンロードURLを選択
※『「Data to include(含めるデータ)」で、「Full search results(すべての検索結果)」を選択します。』は選択しません。

「保存して終了」で保存します

ステップ8:再デプロイとリリース

アプリを再度デプロイして、新しいバージョンを保存します。次に、アプリをリリースして、CIDにインストールして使用できるようにします。

「デプロイ」
デプロイをコミットメント
「リリース」
リリースをコミットメント

ステップ9:アプリのインストール

アプリをインストールして、組織のCID内のユーザーがダッシュボードを利用できるようにします。また、インストールによって、スケジュール化されたEメールレポートを送信することもできます

「カタログで表示」

注:Falcon Insight XDRまたはFalcon Preventのサブスクリプションをお持ちのお客様は、CIDごとに1つのFoundryアプリを追加コストなしでインストールできます。追加のFoundryアプリをインストールするには、Falcon Foundryサブスクリプション、またはFalcon Next-Gen SIEMサブスクリプションが必要です。詳細については、クラウドストライクの営業担当者にお問い合わせください。

「今すぐインストール」

アプリの権限確認ページ

「アプリをインストール」
インストールメッセージ

「インストール済」に

インストールが完了すると、アプリをテストできます。

アプリのプレビュー時に使用したのと同じ場所(「Custom apps(カスタムアプリ)」> 「Threat Hunting(脅威ハンティング)」>「Threat Hunting Dashboard(脅威ハンティングダッシュボード)」)に進みます。

ダッシュボードは、 Falconコンソールの別の場所(「Dashboards and reports(ダッシュボードおよびレポート)>「Dashboards(ダッシュボード)」>「Foundry dashboards(Foundryダッシュボード)」) からも使用できます。

サイドメニューにカスタムアプリが追加される

インストールしてワークフローが有効になると「すべてのワークフロー」画面に表示される
https://falcon.us-2.crowdstrike.com/workflow/fusion

※アプリをアンインストールする場合はアプリのカタログ(https://falcon.us-2.crowdstrike.com/foundry/app-catalog)から「アプリのアンインストール」で行います。 詳細はドキュメントをご参照ください。(https://falcon.us-2.crowdstrike.com/documentation/page/ha2dd02e/app-administration

「アプリのアンインストール」

アンインストールの確認
メッセージ

送信されたメール(約20件受信)

アプリの完成形

カスタムアプリをインストール後の「アプリ管理」画面

まとめ

今回の記事では、公式チュートリアル『脅威ハンティングダッシュボードとレポートスケジュールの作成』を通して、Falconコンソール上でのGUI開発フローを解説しました。

プログラミングの専門知識がなくても、ドラッグ&ドロップの操作で実用的なセキュリティアプリが作成可能です。「自動化には興味があるけれど、コードを書くのはハードルが高い」と感じていた方も、ぜひ一度Falconコンソールでの開発を試してみてください。(ワークフローは十分に注意してご利用ください。)

さて、次回からはテーマを大きく変え、「脆弱性」にフォーカスした新連載をスタートします。

新連載では、個別の脆弱性解説や製品評価といった話題からあえて一歩引き、「脆弱性とは何か」「それはどのような条件で成立するのか」といった点を、体系的に考察していきます。

普段何気なく扱っている「脆弱性」という概念を、改めて整理・確認できるような内容になればと考えています。次回以降の記事もぜひご覧ください。

最後まで読んでいただき、ありがとうございました。

0-WANについて

私たち0-WANは、ゼロトラスト製品を中心とした、マルチベンダーでのご提案で、お客様の経営課題解決を支援しております。 ゼロトラストってどうやるの?製品を導入したけれど使いこなせていない気がする等々、どんな内容でも支援いたします。 お気軽にご相談ください。

問い合わせ先、0-WANについてはこちら。 www.ap-com.co.jp

一緒に働いて頂ける仲間も募集しています

今までの経験を活かして、私たちと一緒にゼロトラスト分野で活躍しませんか? www.ap-com.co.jp