如何从IBM QRadar导出事件

如何从IBM QRadar导出事件

SOC Prime Team
SOC Prime Team linkedin icon 关注

从QRadar提取原始事件的最干净方法是使用Ariel REST API。运行选择UTF8(payload)的AQL查询,等待搜索完成,并将结果以JSON格式提取。最终得到的日志行与日志来源发送时完全一致。日志活动选项卡也可以导出搜索结果,但格式不是LogTotal今日能够读取的。 

QRadar位于许多SOC的中心,迟早有人需要在控制台之外获取其数据的一部分:例如IR合作伙伴、第二意见或无需构建新规则的快速检查。Prime Core为QRadar提供了23,656条检测规则,映射到674个MITRE ATT&CK技术。下面是如何提取一部分干净的原始事件,清理并在LogTotal中免费调查的。

本指南涵盖了QRadar SIEM、内部部署和软件。如果贵公司使用的是QRadar SaaS,IBM于2024年卖给Palo Alto Networks,您可能已经转移到Cortex XSIAM。

免费开始

开始之前

一个授权服务令牌。 在下创建 管理员 → 授权服务 并为其设置过期日期。令牌承载用户角色和安全配置文件。安全配置文件决定了它可以查看哪些日志来源和网络。如果其范围比您自己的更窄,API会安静地返回比日志活动显示的更少的事件。这是QRadar导出时最常见的“我的事件去了哪里?”的时刻。

保留。 事件的存活时间由您的保留桶允许时间决定(管理员 → 事件保留)。如果您需要的时间窗口比这更旧,就没有可以导出的了。

网络访问。 API在控制台的HTTPS端口上运行。控制台通常使用自签名证书;使用–cacert指定正确的CA指向curl,而不是关闭验证。

步骤1:编写AQL查询

选择负载和一些字段以提供上下文:

SELECT DATEFORMAT(starttime, 'yyyy-MM-dd HH:mm:ss') AS event_time,
LOGSOURCENAME(logsourceid) AS log_source,
QIDNAME(qid) AS event_name,
UTF8(payload) AS payload
FROM events
WHERE LOGSOURCENAME(logsourceid) = 'web-03'
START '2026-10-19 00:00' STOP '2026-10-20 00:00'

一些经验注意事项:

  • UTF8(payload) 是关键部分。 没有它,负载将以编码字节返回,而不是可读的日志文本。
  • 缩小范围。 按日志来源名称过滤,或通过类型使用LOGSOURCETYPENAME(devicetype) ILIKE ‘%Linux%’,并保持窗口紧凑。
  • START / STOP 用于精确的时间窗口,LAST 24 HOURS用于相对时间窗口。
  • 先测试 in 日志活动 → 高级搜索。这与AQL相同,您将在导出前看到事件数量。

通过WinCollect收集的Windows事件作为文本负载到达,而不是EVTX。你导出的是那个文本。

步骤2:通过Ariel API运行

将此保存为qradar_export.sh。它启动搜索,等待并写入每行一个原始负载:

#!/usr/bin/env bash
set -euo pipefail

QRADAR="https://qradar.example.com"
TOKEN="${QRADAR_TOKEN:?set QRADAR_TOKEN first}"
AQL="SELECT UTF8(payload) AS payload FROM events WHERE LOGSOURCENAME(logsourceid) = 'web-03' START '2026-10-19 00:00' STOP '2026-10-20 00:00'"

# 1. start the search (-G puts the query in the URL, -X POST keeps the method)
SID=$(curl -sS -G -X POST -H "SEC: $TOKEN" -H "Accept: application/json"
--data-urlencode "query_expression=$AQL"
"$QRADAR/api/ariel/searches" | jq -r '.search_id')

# 2. wait for it to finish
while :; do
STATUS=$(curl -sS -H "SEC: $TOKEN" "$QRADAR/api/ariel/searches/$SID" | jq -r '.status')
[ "$STATUS" = "COMPLETED" ] && break
if [ "$STATUS" = "ERROR" ] || [ "$STATUS" = "CANCELED" ]; then echo "Search $STATUS"; exit 1; fi
sleep 5
done

# 3. fetch results: raw payloads, one per line
curl -sS -H "SEC: $TOKEN" -H "Accept: application/json"
"$QRADAR/api/ariel/searches/$SID/results" | jq -r '.events[].payload' > web-03_qradar_1019.log

想要结构化事件,通过字段获取时间和日志来源?在AQL中选择这些列,并在最后一步中使用jq -c ‘.events[]’。您将获得每行一个JSON对象。

对于非常大的结果集,请使用Range头分页获取结果,例如-H “Range: items=0-49999″,然后是下一个50,000。

步骤3:在LogTotal中上传、清理和查看

  1. 上传。 打开 logtotal.com 然后将文件拖入。
  2. 清理。 在继续之前检查一下。
  3. 查看。 

当出现问题时

症状可能原因Fix
从API收到401令牌无效、已过期,或者SEC头丢失检查头;创建一个新令牌
事件比日志活动显示的少令牌的安全配置文件看到的日志来源较少给令牌一个与调查相匹配的配置文件
负载看起来像编码的乱码查询中遗漏了UTF8()选择UTF8(payload)
搜索状态变为ERRORAQL语法首先在高级搜索中测试查询
结果为空时间窗口在保留之外,或者时区错误检查保留;检查控制台的时区
curl对证书发出警告自签名控制台证书使用–cacert指定控制台的CA

FAQ

我可以从QRadar导出EVTX文件吗?

不能。QRadar将Windows事件存储为文本负载。若要获得真正的EVTX文件,从Windows主机上导出。

流数据呢?

流数据位于单独的表中:查询FROM flows而不是FROM events。它们是网络连接记录,不是日志,并且是独立的分析。

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