- 限定コンテンツへのアクセス
- 他ユーザーとのつながり
- あなたの体験を共有
- サポート情報の発見
XQLはCortex XDRが持つデータ抽出のためのクエリ言語で、
これを使用することで、お客様がCortex XDRに保存したデータを、様々条件でアクセスできるようになります。
XQLは「Stage」と呼ぶコマンドをパイプ(|)で繋いでクエリを作成していきます。
stageコマンドの結果はパイプを通じて次のstageコマンドに渡され処理が行われます。
以下の例では、fieldsやfilterがstageコマンドに当たります。
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"
XQLでアクセスできるデータソースは「Dataset」「Presets」の2種類があります。
XQLを作成するときにまず初めにこのデータソースを指定することから始まります。
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・・・
例えば、トラフィックログを見たい場合は、以下のようにdatesetを指定しクエリを作成します。
クエリを実行すると、以下のように送信元IP・ポート、送信先IP・ポート、app-idなどが表示されます。
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
Presetにはグループ毎に様々なフィールドが使えるようになっています。
例えばxdr_fileというPresetの場合、
action_file_name, action_file_path, actor_effective_username, actor_process_command_line
などのフィールドがあり、これらのフィールドに対して条件を設定しデータを抽出することができます。
他のフィールドについて知りたい場合はこちら を参照ください。
まずホストを「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
クエリを実行すると指定した条件でデータを抽出することができます。
この結果の中で1番上のレコードを見ると、setup.exeというプロセスがアクターとして実行されています。
選択しメニューから「Investigate Causality Chain」を選択すると、
プロセスの連鎖表示され、setup.exeが実行された(青く塗られたアイコン)ことが分かります。
その隣のアイコンを選択してみると、
setup.exeがchrome.exeというファイルを作成した、ということがわかります。
このようにXQLを使うと、指定した条件で様々なデータを抽出することに加えて、
単純にテーブル形式でデータが見えるだけではなく、Causality Viewを通してプロセスなどの因果関係を
ダイアグラムで把握することができます。
以下のような場面で活用できますので、運用効率化に大きく寄与できると思います。
また作成したXQLは保存し再利用が可能ですのでよく使うクエリは登録しておくと良いと思います。
XQLについてはこちら
datasetsとPresetsはこちら