如何导出 Cortex XDR 日志

如何导出 Cortex XDR 日志

SOC Prime Team
SOC Prime Team linkedin icon 关注

使用 XQL 查询 API。使用 /public_api/v1/xql/start_xql_query 启动查询,该查询返回一个执行 ID。使用 /public_api/v1/xql/get_query_results 以 JSON 格式获取结果。此调用最多返回 1,000 个结果;更大的结果会返回为流 ID,您需要传递给 /public_api/v1/xql/get_query_results_stream。认证使用两个头:您的 API 密钥在 Authorization 中,它的 ID 在 x-xdr-auth-id 中。

Cortex XDR 收集详细的终端遥测数据,以及许多部署中的网络和身份数据。Prime Core 拥有超过 24,000 个独特的检测规则,映射到 676 个 MITRE ATT&CK 技术。以下是如何获取数据、清理数据并在 LogTotal 中免费调查数据的方法。

免费开始使用

在您开始之前

一个 API 密钥。 在 Cortex XDR 设置中创建一个(标准密钥类型最简单),其中一个角色可以运行 XQL 查询。注意密钥及其 ID。

您的 API URL。 在您创建密钥时显示,格式为 https://api-<tenant>.xdr.<region>.paloaltonetworks.com。

许可证和配额。 XQL API 需要 Cortex XDR Pro 许可证。查询会消耗您的 XQL 配额,您最多可以同时运行四个 API 查询。

数据集。 终端遥测在 xdr_data 中,具有例如 agent_hostname、event_type、action_process_image_command_line 和 actor_process_image_name 等字段。首先在查询生成器中构建查询。

使用 XQL API 导出

XDR="https://api-<tenant>.xdr.<region>.paloaltonetworks.com"
H1="Authorization: $XDR_API_KEY"
H2="x-xdr-auth-id: $XDR_API_KEY_ID"

# 1. 启动查询(时间范围以纪元毫秒表示)
QID=$(curl -sS -X POST "$XDR/public_api/v1/xql/start_xql_query" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d '{"request_data": {"query": "dataset = xdr_data | filter agent_hostname = "WS-042" | fields _time, agent_hostname, event_type, action_process_image_name, action_process_image_command_line, actor_process_image_name", "timeframe": {"from": 1792368000000, "to": 1792454400000}}}'
| jq -r '.reply')

# 2. 等待结果
while :; do
RESP=$(curl -sS -X POST "$XDR/public_api/v1/xql/get_query_results" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d "{"request_data": {"query_id": "$QID", "pending_flag": true, "format": "json"}}")
[ "$(echo "$RESP" | jq -r '.reply.status')" != "PENDING" ] && break
sleep 5
done

# 3. 最多 1,000 个结果;通过流获取更多
STREAM=$(echo "$RESP" | jq -r '.reply.results.stream_id // empty')
if [ -n "$STREAM" ]; then
curl -sS -X POST "$XDR/public_api/v1/xql/get_query_results_stream" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d "{"request_data": {"stream_id": "$STREAM", "is_gzip_compressed": false}}" > xdr_ws042_1019.jsonl
else
echo "$RESP" | jq -c '.reply.results.data[]' > xdr_ws042_1019.jsonl
fi

上述时间范围是 2026-10-19 00:00 UTC 至 2026-10-20 00:00 UTC。

在 LogTotal 中上传、清理和审查

  1. 上传。 打开 logtotal.com 并将文件拖放进去。
  2. 清理。 
  3. 审查。 

当发生问题时

症状可能原因Fix
401密钥和密钥 ID 被交换,或密钥过期密钥在 Authorization 中,ID 在 x-xdr-auth-id 中
许可证错误没有 XDR Pro 执照XQL API 需要 XDR Pro
配额错误XQL 配额已用完,或超过四个并行查询等待; 缩小查询范围
正好 1,000 个结果流未使用用流 ID 抓取其余部分
查询错误XQL 语法首先在查询生成器中测试

FAQ

我可以导出事件和警报吗?

可以,通过单独的事件和告警 API。对于 LogTotal,可以导出其后的遥测数据。

那原始的第三方日志呢?

如果您将它们导入 Cortex,它们会居于自己的数据集中,并以相同方式导出。

加入 SOC Prime 的 Detection as Code 平台 以提高对与您的业务最相关的威胁的可见性。为了帮助您开始并带来即时价值,现在与 SOC Prime 专家预约会议。