はじめに
こんにちは、 ネクストモード株式会社 の sobar です。
今回は、特定のAIアプリケーション(例:Claude)が業務端末で利用されているか、「高度なイベントクエリ」で確認するコマンドの内容について解説します。
それでは以下より、調査 > 高度なイベント検索 より実行するクエリをご紹介します。
特定のAIアプリの実行プロセスを抽出し、ユーザー・端末ごとに集計するクエリ
以下は、Claude関連の実行プロセスを抽出し、端末名やユーザー名ごとに実行回数や最終利用日時(日本時間)、OS情報を一覧表示するクエリ例です。
|
//// Get process execution events for AI applications #event_simpleName=ProcessRollup2
// Look for AI app executables in FileName and ImageFileName | FileName=/claude/i OR ImageFileName=/claude/i
// Aggregate by endpoint and user, add platform and collect all executables | groupBy([ComputerName,UserName],function=[count(as=ExecutionCount),max(ProcessStartTime, as=LastUsed),selectLast(fields=event_platform),collect(FileName)])
// Convert epoch timestamp to JST timezone | LastUsed := formatTime(format="%Y-%m-%d %H:%M:%S", field=LastUsed, timezone="Asia/Tokyo") // Convert event_platform codes to readable OS names | case{ event_platform="Win" | event_platform:="Windows"; event_platform="Mac" | event_platform:="macOS"; event_platform="Lin" | event_platform:="Linux"; *; } // Sort by most recent | sort(field=LastUsed, order=desc) //filter by computername box | ComputerName = ?Computer_name
|
※以下は実行イメージとなります。
クエリの簡単な説明
1. #event_simpleName=ProcessRollup2
- 意味:プロセス実行イベントの抽出
- 詳細:CrowdStrike Falcon がログ出力するイベントの中から、プロセス(実行ファイル)の起動を表す #event_simpleName=ProcessRollup2 のログのみを対象としてフィルタリングします。
2. | FileName=/claude/i OR ImageFileName=/claude/i
- 意味:指定したAIアプリ(Claude)の実行ファイル名で絞り込み
- 詳細:ファイル名(FileName)またはイメージファイル名(ImageFileName)に「claude」が含まれるプロセスを抽出します。/i を付けることで大文字・小文字を区別せず(case-insensitive)に検索しています。※他のアプリを検索したい場合は、この文字列を変更します。
3. | groupBy([ComputerName,UserName],function=[count(as=ExecutionCount),max(ProcessStartTime, as=LastUsed),selectLast(fields=event_platform),collect(FileName)])
- 意味:端末名とユーザー名ごとに集計し、実行回数や最終実行時刻などを取得
- 詳細:端末名(ComputerName)とユーザー名(UserName)の組み合わせでログをグループ化し、同時に以下の4つの情報を集計・取得します。
count(as=ExecutionCount):実行回数をカウント
max(ProcessStartTime, as=LastUsed):最も新しいプロセス起動時刻(=最終利用日時)を取得
selectLast(fields=event_platform):OSプラットフォーム情報を取得
collect(FileName):実行されたファイル名のリストを収集
4. | LastUsed := formatTime(format="%Y-%m-%d %H:%M:%S", field=LastUsed, timezone="Asia/Tokyo")
- 意味:最終利用日時のタイムスタンプを日本時間(JST)に変換
- 詳細:元のログではエポックタイム(UNIX時間)で記録されている最終利用日時(LastUsed)を、人間が読みやすい「YYYY-MM-DD HH:MM:SS」形式の日本時間(Asia/Tokyo)にフォーマット変換します。
5. | case{ event_platform="Win" | event_platform:="Windows"; ... }
- 意味:OSのプラットフォームコードを分かりやすい名称に変換
- 詳細:ログ上の省略されたOS表記(Win, Mac, Lin)を、それぞれ Windows, macOS, Linux という直感的に分かりやすい文字列に置き換えます。
6. | sort(field=LastUsed, order=desc)
- 意味:集計結果を最終利用日時が新しい順に並び替え
- 詳細:取得した最終利用日時(LastUsed)を基準に、降順(desc:最新のものが上になるよう)にソートして表示します。
7. | ComputerName = ?Computer_name
- 意味:特定の端末名で検索結果をフィルタリング(オプション)
- 詳細:ダッシュボード等の入力フォームから渡される変数(?Computer_name)を用いて、特定のPCのログのみに絞り込むための処理です。
※ 高度なイベント検索画面で直接実行し、全端末のログを確認したい場合はこの最終行を削除するか、| ComputerName = "特定の端末名" のように直接指定してご使用ください。
ライセンス
高度なイベントクエリを利用するためには Falcon Insight、XDR などのサブスクリプションが必要となります。
※その他ライセンスの詳細につきましては弊社までお気軽にお問合せください。
参考
さいごに
今回は特定のAIアプリ(Claude)を例にとりましたが、FileName の指定箇所を変更することで、様々なアプリケーションの利用状況を調査・集計することが可能です。
この記事によってなにか新たな気づきがあり、皆さまの CrowdStrike Falconの運用一助となれば幸いです。
CrowdStrike Falconについてのお問い合わせ
ネクストモードでは、CrowdStrike Falconをはじめ、OktaやNetskopeを活用したSaaS・生成AIの包括的なセキュリティ対策をご支援しています 。ご興味のある方は、ぜひお気軽にご相談ください!