【CrowdStrike】プロセスの実行確認のための高度なイベントクエリ(Insight)

はじめに

こんにちは、 ネクストモード株式会社 の sobar です。

今回はエンドポイント検知でIOA検知されたプロセスが実行されたのか?実行されていないのかを、高度なイベントクエリで確認するコマンドの内容について解説します。本記事では、過去のブログ(※)で紹介したようなエンドポイント検知(Malware via PUP)の場面において、調査対象ファイル(gsecdump-v2b5.exeなど)が『実際に実行されたのか?』を確認するためのコマンドについて解説します。

それでは以下より、調査 > 高度なイベント検索 より実行するクエリを3つご紹介します。

①実行(Process creation / 実行試行)を探す


以下は、特定の端末での不審なプロセスの実行調査する際にファイル名マッチングで検索、検索結果がある場合にテーブル出力を行うクエリ例です。

#event_simpleName=ProcessRollup2
| ComputerName="LAPTOP-XXXXXXXX"
| FileName="gsecdump-v2b5.exe" OR ImageFileName=/gsecdump-v2b5\.exe/i
| table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])

※実行イメージは以下のブログをご参照ください。

クエリ①の簡単な説明

1. #event_simpleName=ProcessRollup2

  • 意味:「プロセス実行(起動)」に関するイベントのみを検索対象にします。
  • 詳細ProcessRollup2 はプロセスが新しく実行されたことを記録するイベントタイプです。

2. | ComputerName="LAPTOP-XXXXXXXX"

  • 意味: 検索対象の端末(ホスト)を LAPTOP-XXXXXXXX という名前のPCに絞り込みます。
  • 詳細: |(パイプ)を使って前の条件を引き継ぎます。特定の端末で不審な動きがあった際、その端末だけにフォーカスするために使用します。

3. | FileName="gsecdump-v2b5.exe" OR ImageFileName=/gsecdump-v2b5\.exe/i

  • 意味:実行されたファイルの名前が gsecdump-v2b5.exe であるプロセスを探します。
  • 詳細OR を使って、2つの異なるアプローチで同じツールを探しています。
    • FileName="gsecdump-v2b5.exe"ファイル名そのものが完全一致するかを確認します。
    • ImageFileName=/gsecdump-v2b5\.exe/i: ImageFileName(通常は C:\Temp\gsecdump-v2b5.exe のようなフルパスが記録されるフィールド)の中に、指定した文字列が含まれているかを正規表現(大文字・小文字を区別しない)で確認します。

4. | table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])

  • 意味:検索結果を、指定した項目(列)の表形式(テーブル)に整形。
  • カラム
    • @timestampイベント発生日時いつ実行されたかを時系列で把握し、前後のログを追う起点にします。
    • ComputerName端末どのPCで実行されたかを確認します(今回は条件で固定)。
    • UserName実行ユーザー管理者権限(SYSTEMなど)で動いたのか、一般ユーザー権限で動いたのかを確認。
    • ImageFileName実行ファイル名(パス)ファイルがどこに保存され、何という名前で実行されたかを確認。
    • CommandLineコマンドライン実行時にどのような引数やオプションが付与されていたかを確認(例: バックグラウンド実行や外部通信先の指定など)。
    • ParentBaseFileName親プロセス名このプロセスを「呼び出した」大元のプログラム名です(例: cmd.exeexplorer.exe)。侵入経路の特定に役立ちます。
    • SHA256HashDataファイルのハッシュ値指定したハッシュ値と一致しているかの最終確認です。 

②書き込み(ダウンロード/ドロップ)を探す


以下は、特定の端末での不審なプロセスの実行調査する際にファイルの作成・削除アクティビティの追跡で検索、検索結果がある場合にテーブル出力を行うクエリ例です。

#event_simpleName=NewExecutableWritten OR #event_simpleName=ExecutableDeleted OR #event_simpleName=NewScriptWritten
| ComputerName="LAPTOP-XXXXXXXX"
| TargetFileName=/gsecdump-v2b5\.exe/i
| table([@timestamp, #event_simpleName, ComputerName, TargetFileName, ContextBaseFileName, SHA256HashData])

※実行イメージは以下のブログをご参照ください。

クエリ②の簡単な説明

1. #event_simpleName=NewExecutableWritten OR #event_simpleName=ExecutableDeleted OR #event_simpleName=NewScriptWritten

  • 意味:検索対象を以下の3つのイベントに絞り込みます(OR なので、いずれかに該当すればヒットします)。
    • NewExecutableWritten新しい実行ファイル(.exeなど)がディスクに書き込まれた(作成・保存された)
    • ExecutableDeleted実行ファイルが削除された
    • NewScriptWritten新しいスクリプトファイル(.ps1, .batなど)がディスクに書き込まれた
  • 詳細:マルウェアや攻撃ツールが端末に「持ち込まれた(ドロップされた)」瞬間と、証拠隠滅のために「消された」瞬間を捉えるための条件。

2. | ComputerName="LAPTOP-XXXXXXXX"

  • 意味:検索対象の端末を LAPTOP-XXXXXXXX に絞り込みます。

3. | TargetFileName=/gsecdump-v2b5\.exe/i

  • 意味:操作対象となったファイル名が gsecdump-v2b5.exe であるものに絞り込みます。
  • 詳細/ ~ /i という書き方は正規表現を使用、末尾の i は「大文字・小文字を区別しない(case-insensitive)」という意味です。つまり、GSECDUMP-v2b5.exe でも gsecdump-v2b5.EXE でもヒットする。
  • 補足gsecdump はWindowsの認証情報(パスワードハッシュなど)を窃取するためによく使われる有名なハッキングツール。

4. | table([@timestamp, #event_simpleName, ComputerName, TargetFileName, ContextBaseFileName, SHA256HashData])

  • 意味:抽出した結果を、指定した項目のみの表形式(テーブル)に整形。
  • カラム
    • @timestampイベント発生日時ツールが「いつ置かれて」「いつ消されたか」のタイムラインを把握。
    • #event_simpleNameイベントの種類その行が「作成(Written)」なのか「削除(Deleted)」なのかを判別。
    • ComputerName端末名どのPCでの出来事かを確認(今回は固定)。
    • TargetFileName対象ファイル名実際に操作されたファイル名(例: C:\Users\Public\gsecdump-v2b5.exe)のフルパスなどを確認。
    • ContextBaseFileName操作元プロセス名 誰(どのプログラム)がそのファイルを作成・削除したかを示します。例えば、ブラウザ(chrome.exe)が保存したのか、別のマルウェアが作成したのかが分かります。
    • SHA256HashDataファイルのハッシュ値そのファイルが間違いなく悪意のあるツールであるかをハッシュ値で裏付ける。 

③ハッシュベースの実行(Process creation / 実行試行)確認


以下も①と同様ですが、特定の端末での不審なプロセスの実行調査する際にファイル名ではなくファイルのハッシュ値マッチングで検索、検索結果がある場合にテーブル出力を行うクエリ例です。

#event_simpleName=ProcessRollup2
| ComputerName="LAPTOP-XXXXXXXX"
| SHA256HashData="94cae63dcbabb71c5dd43f55fd09caeffdcd7628a02a112fb3cba36698ef72bc"
| table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])

※実行イメージは以下のブログをご参照ください。

※クエリ③の簡単な説明と①との違い

検索対象の違いとなります。③はファイル、イメージファイル名の検索ではなく、ハッシュ値で検索。

①はファイル: | FileName="gsecdump-v2b5.exe" OR ImageFileName=/gsecdump-v2b5\.exe/i

③はハッシュ値:| SHA256HashData="..." : 探したいファイルのハッシュ値を指定。 

1. | SHA256HashData="94cae63dcbabb71c5dd43f55fd09caeffdcd7628a02a112fb3cba36698ef72bc"

  • 意味:実行されたファイルのSHA256ハッシュ値が、指定した値(94cae6...)と一致するものに絞り込みます。
  • 詳細:ファイル名が偽装されていても、ハッシュ値が一致すれば同一ファイルとみなすことができます。脅威インテリジェンスなどから得たIOC(侵害の痕跡)となるマルウェアのハッシュ値をここで指定し、実行の有無を確認します。

ライセンス


高度なイベントクエリを利用するためには Falcon InsightXDR などのサブスクリプションが必要となります。

 ※その他ライセンスの詳細につきましては弊社までお気軽にお問合せください。 

 参考


さいごに


今回はエンドポイント検知でIOA検知されたプロセスが実行されたのか?実行されていないのかを、高度なイベントクエリで確認するコマンドの内容についてご紹介いたしました。

この記事によってなにか新たな気づきがあり、皆さまの CrowdStrike Falconの運用一助となれば幸いです。

CrowdStrike についてのお問い合わせ

ネクストモードでは、CrowdStrikeをはじめ、OktaやNetskopeを活用したSaaS・生成AIの包括的なセキュリティ対策をご支援しています 。ご興味のある方は、ぜひお気軽にご相談ください!