[Cortex XDR/XSIAM]XQLを使ってデータにアクセスする - datasetsとpresets

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
告知
L4 Transporter
評価なし

XQLとは?

 

XQLはCortex XDRが持つデータ抽出のためのクエリ言語で、

これを使用することで、お客様がCortex XDRに保存したデータを、様々条件でアクセスできるようになります。

 

XQLは「Stage」と呼ぶコマンドをパイプ(|)で繋いでクエリを作成していきます。

stageコマンドの結果はパイプを通じて次のstageコマンドに渡され処理が行われます。

以下の例では、fieldsやfilterがstageコマンドに当たります。

 
dataset = xdr_data | fields os_actor_process_file_size as osapfs | filter to_string(osapfs) = "12345"
 
またこのXQLでやろうとしていることは、

1.「xdr_data」datasetを対象にして、

2.「xdr_data」datasetにあるデータのうち、フィールド「os_actor_process_file_size」だけにデータを絞り、

そのフィールド名を「osapfs」に変える

3.その後フィールド「osapfs」の値を文字列に変換(to_string)にして、"12345"という値と完全一致するデータだけ抽出する

といった3つの条件によるデータ抽出です。

 

Stageコマンドは他にも種類があり(重複排除するdedupや、2つのクエリを結合するjoinなど)こちらから確認できます。

 

大文字と小文字の扱い

フィルタで文字列の条件を設定する場合、XQLは大文字と小文字を区別しています。

もし区別しないようにする場合、「case_sensitive」というStageコマンドを使用します。

Falseにすると区別しなくなりますので、Windowsのログを調べる場合はFalseでも良いと思います。

 

config case_sensitive = false | 

dataset = xdr_data | fields os_actor_process_file_size as osapfs | filter to_string(osapfs) = "12345"

 

 

DatasetsとPresets

XQLでアクセスできるデータソースは「Dataset」「Presets」の2種類があります。

XQLを作成するときにまず初めにこのデータソースを指定することから始まります。

 

Datasets

DatasetはCortex XDRに保存される標準のデータソースで、取り込むデータの種類毎に定義されています。

 

例えば、Cortex XDRのデータはxdr_data、弊社の次世代ファイアウォール(PAシリーズ)のログは、panw_ngfw_*_rawといった具合に定義されています。

弊社の次世代ファイアウォールのログのデータソースをアスタリスクで表現していますが、

トラフィックログの場合panw_ngfw_traffic_raw, 脅威ログの場合panw_ngfw_threat_rawと、

ログの種類によって名前が少しつづ違います。データ毎のdataset名を確認したい場合はこちらから。

 

また、XQLを書く場合、以下のように始まります。

dataset = xdr_data・・・

dataset = panw_ngfw_traffic_raw・・・

dataset = panw_ngfw_threat_raw・・・

 

 

例:次世代ファイアウォール(PAシリーズ)のトラフィックログを抽出する

 

例えば、トラフィックログを見たい場合は、以下のようにdatesetを指定しクエリを作成します。

massaito_0-1669797489782.png

 

クエリを実行すると、以下のように送信元IP・ポート、送信先IP・ポート、app-idなどが表示されます。

massaito_1-1669797511178.png

 

Presets

PresetsはDataset「xdr_data」が持つフィールドをグルーピングして提供するデータソースです。

特定のアクティビティに絞って調査する場合に便利です。Presetsでは以下のようグループを定義しており、それぞれpresetの名前を持っています。

 

このうちauthentication_storyとnetwork_storyは少し特殊で、Cortex XDR Agentのイベントと認証ログやネットワークログを繋ぎ合わせた情報を含んでいます。

authentication_storyではOktaやPingoneのイベントが含まれ、network_storyではPAシリーズのログやサードパーティのファイアーウォールログなどが含まれます。

 

グループ Presetの名前

Authentication

authentication_story
Network Connection network_story
Event Log xdr_event_log
File xdr_file
Image Load xdr_image_load
Network xdr_network
Process Execution
xdr_process_execution
Process Injection
xdr_process_injection
Registry
xdr_registry

 

 

例えば、ファイルに関連するアクティビティに注目したい場合、xdr_fileというPresetを使用します。

 

preset = xdr_file

 

Presetsが持つフィールド

Presetにはグループ毎に様々なフィールドが使えるようになっています。

例えばxdr_fileというPresetの場合、

 

action_file_name, action_file_path, actor_effective_username, actor_process_command_line

 

などのフィールドがあり、これらのフィールドに対して条件を設定しデータを抽出することができます。

他のフィールドについて知りたい場合はこちら を参照ください。

 

例:xdr_file presetを使ったクエリでデータを抽出する

まずホストを「WIN-0TNTTQOMGDR」、「Chrome.exe」を含むファイル名でフィルタし、

フィルタ後のフィールドをaction_file_name ,action_file_path, actor_effective_username, actor_process_command_line

だけに絞る場合、以下のようなクエリになります。

 

preset = xdr_file | filter action_file_name contains "chrome.exe" and agent_hostname = "WIN-0TNTTQOMGDR"
| fields action_file_name ,action_file_path, actor_effective_username, actor_process_command_line

 

massaito_0-1669795616904.png

 

 クエリを実行すると指定した条件でデータを抽出することができます。

massaito_1-1669795642108.png

 

この結果の中で1番上のレコードを見ると、setup.exeというプロセスがアクターとして実行されています。

massaito_0-1669799979188.png

 

選択しメニューから「Investigate Causality Chain」を選択すると、

massaito_0-1669884502304.png

 

 

プロセスの連鎖表示され、setup.exeが実行された(青く塗られたアイコン)ことが分かります。

その隣のアイコンを選択してみると、

massaito_1-1669884692077.png

 


 

setup.exeがchrome.exeというファイルを作成した、ということがわかります。

massaito_1-1669800589862.png

 

このようにXQLを使うと、指定した条件で様々なデータを抽出することに加えて、

単純にテーブル形式でデータが見えるだけではなく、Causality Viewを通してプロセスなどの因果関係を

ダイアグラムで把握することができます。

 

 

XQLのユースケース

以下のような場面で活用できますので、運用効率化に大きく寄与できると思います。

また作成したXQLは保存し再利用が可能ですのでよく使うクエリは登録しておくと良いと思います。

 

 

Tech Doc

XQLについてはこちら

datasetsとPresetsはこちら

 

この記事を評価:
  • 3762 閲覧回数
  • 0 コメント
  • 1 賞賛
Register or Sign-in
寄稿者
記事ダッシュボード
バージョン履歴
最終更新日:
‎11-02-2023 02:47 AM
更新者: