Palo Alto Cortex XDR と Cisco XDR を連携させてみた


# はじめに（記：2023年6月8日）

いろいろな製品APIに触る機会に恵まれましたので、Cisco XDR と Palo Alto Cortex XDR 連携させるワークフローサンプルを作成してみました。


# XDR (Extended Detection and Response)

XDRの初期の定義をしたGartnerは、<B>「Gartner : Innovation Insight for Extended Detection and Response」</B>により、XDRとは、「複数の個別セキュリティ製品を統合した一環した検出・レスポンスプラットフォーム」であり、「SaaSベースのセキュリティ検知・インシデント・レスポンスツール」と説明されてます。これはクラウドで提供される、 as a Service であり、さらに、統合レベルをこれまでの製品以上に強化・簡素化し、そのためのベースとして均質化されたデータモデルを利用、複数のテレメトリを収集・分析する、これがソリューションカテゴリとしてのXDRであるとされています。

Forresterや、ESG、IDC、によるXDRの新定義が出てきますが、ソースとなるテレメトリをできる限り、収集し分析する、という多くの共通項目があります。多くの製品のコントロールプレーンがクラウドに移行しているということであり、多くの製品統合機能を提供するためには何が正しいのか、ロジックはさておき、クラウド提供型の集約APIプラットフォームが一つの回答になると考えられます。

セキュリティオペレーションのためにXDRが収集するテレメトリは、ソースが他のXDR製品であっても、SIEMであっても意味があり、連携することに価値があります。


# Cortex XDR API

https://cortex-panw.stoplight.io/docs/cortex-xdr/axpm6b98x4p18-cortex-xdr-api-overview

APIドキュメントから基本的な機能としてCortex XDRで検知した情報を入手するAPIに注目します。

Get all Incidents
https://cortex-panw.stoplight.io/docs/cortex-xdr/bec98191f5e50-get-all-incidents

エンドポイントの制御、エンドポイントの情報収集、インシデントのアップデート、隔離、各種リプレースといったレスポンスに重点の置くAPIが多く見られます。Get all Incidentsを利用し、filteringによりGetするインシデントのScopeを調整できます。


```json:Request Body
{
  "request_data": {
    "search_from": 1,
    "search_to": 11
  }
}
```

https://cortex-panw.stoplight.io/docs/cortex-xdr/3u3j0e7hcx8t1-get-started-with-cortex-xdr-ap-is

API利用の認証のために、x-xdr-auth-idヘッダとAuthorizationにより、それぞれ Cortex XDR の API Key ID と API Key を指定する必要があります。

```bash:API Authentication
curl -X POST https://api-{fqdn}/public_api/v1/{name of api}/{name of call}/ 
-H "x-xdr-auth-id:{key_id}" 
-H "Authorization:{key}" 
-H "Content-Type:application/json" 
-d '{}'
```
API実行により以下のような結果が得られます。

```json:Response
{
  "reply": {
    "total_count": 1,
    "result_count": 1,
    "incidents": [
      {
        "incident_id": "<incident ID>",
        "incident_name": "test",
        "creation_time": 1577024425126,
        "modification_time": 1577024425126,
        "detection_time": null,
        "status": "resolved_known_issue",
        "severity": "medium",
        "description": "Memory Corruption Exploit generated by XDR Agent",
        "assigned_user_mail": null,
        "assigned_user_pretty_name": null,
        "alert_count": 1,
        "low_severity_alert_count": 0,
        "med_severity_alert_count": 1,
        "high_severity_alert_count": 0,
        "critical_severity_alert_count": 0,
        "user_count": 1,
        "host_count": 1,
        "notes": null,
        "resolve_comment": null,
        "resolved_timestamp": 1577024425126,
        "manual_severity": null,
        "manual_description": "Memory Corruption Exploit generated by XDR Agent",
        "xdr_url": "https://<link to incident>",
        "starred": false,
        "hosts": [
          "<host ID>"
        ],
        "users": [
          "test_1",
          "test_2"
        ],
        "incident_sources": [
          "XDR Agent",
          "XDR BIOC"
        ],
        "rule_based_score": 342,
        "manual_score": null,
        "wildfire_hits": 0,
        "alerts_grouping_status": "Enabled",
        "mitre_tactics_ids_and_names": [
          "TA0004 - Privilege Escalation",
          "TA0005 - Defense Evasion",
          "TA0006 - Credential Access"
        ],
        "mitre_techniques_ids_and_names": [
          "T1001.001 - Data Obfuscation: Junk Data",
          "T1001.002 - Data Obfuscation: Steganography",
          "T1001.003 - Data Obfuscation: Protocol Impersonation"
        ],
        "alert_categories": [
          "Credential Access",
          "Exploit",
          "Spyware Detected via Anti-Spyware profile"
        ],
        "original_tags": [
          "DS:PANW/NGFW",
          "EG:acme-2",
          "EG:Acme group",
          "DS:PANW/XDR Agent"
        ],
        "tags": [
          "EG:Acme group",
          "DS:PANW/NGFW",
          "DS:PANW/XDR Agent",
          "EG:acme-2"
        ]
      }
    ],
    "restricted_incident_ids": []
  }
}
```
# Cisco XDR のワークフロー動作

最終的に、Cortex XDR のインシデントを入手し、必要なフィールドを限定し、Cisco XDR で同様な情報をレポートするワークフローを作成しました。大まかなプロセスは、

１．API実行
２．API実行結果から Path Query し、Table作成
３．Markdown インシデントテキストを作成
４．Cisco XDR Threat Response Incident 作成、Cisco Webex レポート

とします。

最終的に作成したワークフローです。

https://github.com/sig666/SecureX-Workflow-PaloAltoCortexXDR-IncidentReport

# 参照
[1] Palo Alto Cortex XDR API Document
https://cortex-panw.stoplight.io/docs/cortex-xdr/axpm6b98x4p18-cortex-xdr-api-overview
[2] Cisco XDR Workflow
https://ciscosecurity.github.io/sxo-05-security-workflows/
[3] Sample Workflow
https://github.com/sig666/SecureX-Workflow-PaloAltoCortexXDR-IncidentReport
https://github.com/sig666
[4] Interop Tokyo 2023
https://www.interop.jp/