ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IBM QRadar SIEM 安全事件关联分析实战:AQL 查询、自定义规则与 Offense 管理的完整工作流

IBM QRadar SIEM 安全事件关联分析实战:AQL 查询、自定义规则与 Offense 管理的完整工作流 IBM QRadar SIEM 安全事件关联分析实战AQL 查询、自定义规则与 Offense 管理的完整工作流【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文基于 Anthropic-Cybersecurity-Skills 仓库中的correlating-security-events-in-qradar技能文档系统讲解如何利用 IBM QRadar SIEM 的 AQLAriel Query Language、自定义关联规则Correlation Rule、构建模块Building Block与 Offense 管理机制跨网络、端点和应用日志源检测多阶段攻击。读完本文你将掌握用 AQL 围绕单个 Offense 展开溯源、用失败登录 成功登录模式构建可复用的关联规则、用事件与流数据 JOIN 发现横向移动和数据外渗、用 Reference Set 做动态白名单/监控名单、以及用脚本和 API 将整个排查流程自动化。该技能面向 SOC 分析师与检测工程师定位于soc-operations子域映射 NIST CSF 2.0 的 DE.CM-01、DE.AE-02、RS.MA-01、DE.AE-06 能力以及 MITRE ATTCK 的 T1078有效账户、T1110.003口令喷洒、T1021远程服务、T1071.001应用层协议、T1041经 C2 通道外传等手法。适用场景包括调查 QRadar Offense、构建检测规则、降低误报噪声以及从单点事件监控向基于行为的关联分析演进。使用前提与边界何时使用该技能SOC 分析师需要调查 QRadar Offense并跨多个日志源关联事件检测工程师需要构建自定义关联规则以识别多阶段攻击需要开展告警调优降低 Offense 误报率、提升信号质量团队正从基础事件监控迁移到基于行为的关联分析。明确不适用的场景日志源接入与解析Log Source Onboarding / Parsing那需要 QRadar 管理员权限和 DSM 编辑器知识不在本技能范围内。环境前提IBM QRadar SIEM 7.5且已启用 Offense 管理具备 AQL 基础可编写临时的事件与流查询日志源已正确归一化并映射了 QIDWindows、防火墙、代理、端点用户角色拥有 Offense 管理、规则创建与 AQL 搜索权限已配置 Reference Set/Map用于白名单和监控名单管理。Step 1用 AQL 调查一个 OffenseAQLAriel Query Language是 QRadar 内置的类 SQL 查询语言用于检索 events、flows 与 offenses 三类数据。调查一个 Offense 的第一步是把它包含的全部贡献事件拉出来建立时间线。打开一个 Offense 后用INOFFENSE()函数查询该 Offense 的全部关联事件SELECT DATEFORMAT(startTime, yyyy-MM-dd HH:mm:ss) AS event_time, sourceIP, destinationIP, username, LOGSOURCENAME(logSourceId) AS log_source, QIDNAME(qid) AS event_name, category, magnitude FROM events WHERE INOFFENSE(12345) ORDER BY startTime ASC LIMIT 500随后以可疑源 IP 为轴心检索它在该时间段内的全部活动判断是否为单一事件还是系统性行为SELECT DATEFORMAT(startTime, yyyy-MM-dd HH:mm:ss) AS event_time, destinationIP, destinationPort, username, QIDNAME(qid) AS event_name, eventCount, category FROM events WHERE sourceIP 192.168.1.105 AND startTime NOW() - 24*60*60*1000 ORDER BY startTime ASC LIMIT 1000这里涉及几个关键 AQL 函数完整清单见仓库的 AQL 函数参考函数作用QIDNAME(qid)将 QID 解析为可读的事件名称LOGSOURCENAME(id)将日志源 ID 解析为日志源名称INOFFENSE(id)过滤属于指定 Offense 的事件DATEFORMAT(ts, fmt)格式化时间戳NOW()返回当前时间毫秒CATEGORYNAME(cat)将类别 ID 解析为类别名称注意startTime的单位是毫秒因此24 小时前要写成NOW() - 24*60*60*1000。Step 2构建自定义关联规则Building Block Correlation Rule检测暴力破解后成功登录这类多阶段攻击正确的做法是分层构建先做一个只产生事件、不产生 Offense 的 Building Block再基于它构建产生 Offense 的关联规则。这样 Building Block 可以被多条规则复用也让误报排查更加精细。规则 1 —— 暴力破解检测Building BlockRule Type: Event Rule Name: BB: Multiple Failed Logins from Same Source Tests: - When the event(s) were detected by one or more of [Local] - AND when the event QID is one of [Authentication Failure (5000001)] - AND when at least 10 events are seen with the same Source IP in 5 minutes Rule Action: Dispatch new event (Category: Authentication, QID: Custom_BruteForce)规则 2 —— 暴力破解成功关联规则Rule Type: Offense Rule Name: COR: Brute Force with Subsequent Successful Login Tests: - When an event matches the building block BB: Multiple Failed Logins from Same Source - AND when an event with QID [Authentication Success (5000000)] is detected from the same Source IP within 10 minutes - AND the Destination IP is the same for both events Rule Action: Create offense, set severity to High, set relevance to 8设计要点Building Block 用Dispatch new event动作输出一个自定义 QID如Custom_BruteForce本身不触发 Offense避免中间态误报关联规则通过同一源 IP 10 分钟时间窗 相同目标 IP三个条件把失败与成功两次行为绑定成一条攻击链只有完整的攻击序列才会生成 OffenseQID5000000/5000001是 QRadar 对认证成功/失败的通用归一化编号实际部署时应与自身的 QID 映射核对。Step 3用 AQL 做跨数据源关联认证失败 × 网络流发现横向移动把events表和flows表做LEFT JOIN以认证类别事件 高频失败源 伴随大流量的组合来捕捉横向移动迹象SELECT e.sourceIP, e.destinationIP, e.username, QIDNAME(e.qid) AS event_name, e.eventCount, f.sourceBytes, f.destinationBytes FROM events e LEFT JOIN flows f ON e.sourceIP f.sourceIP AND e.destinationIP f.destinationIP AND f.startTime BETWEEN e.startTime AND e.startTime 300000 WHERE e.category Authentication AND e.sourceIP IN ( SELECT sourceIP FROM events WHERE QIDNAME(qid) Authentication Failure AND startTime NOW() - 3600000 GROUP BY sourceIP HAVING COUNT(*) 20 ) AND e.startTime NOW() - 3600000 ORDER BY e.startTime ASC这条查询的逻辑链是1 小时内失败认证超过 20 次的源 IP子查询再去匹配这些源 IP 在事件前后 5 分钟300000 毫秒内的流量记录观察其是否紧接着发起新的网络连接——典型的暴力破解成功后的横向移动模式。DNS 查询 × 出站流量发现数据外渗将指向非内部 DNS 服务器的异常高频 DNS 查询与大体积出站流量关联识别经 DNS 或非常规端口外传的数据SELECT sourceIP, destinationIP, SUM(sourceBytes) AS total_bytes_out, COUNT(*) AS flow_count FROM flows WHERE sourceIP IN ( SELECT sourceIP FROM events WHERE QIDNAME(qid) ILIKE %DNS% AND destinationIP NOT IN ( SELECT ip FROM reference_data.sets(Internal_DNS_Servers) ) AND startTime NOW() - 86400000 GROUP BY sourceIP HAVING COUNT(*) 500 ) AND destinationPort NOT IN (80, 443, 53) AND startTime NOW() - 86400000 GROUP BY sourceIP, destinationIP HAVING SUM(sourceBytes) 104857600 ORDER BY total_bytes_out DESC要点解析reference_data.sets(Internal_DNS_Servers)直接在内联子查询里读取 Reference Set把内部 DNS 服务器排除在外HAVING SUM(sourceBytes) 104857600过滤出出站超过 100 MB 的会话destinationPort NOT IN (80, 443, 53)排除常规 Web/HTTPS/DNS 流量聚焦可疑端口的外传通道。Step 4用 Reference Set 做上下文增强Reference Set 是 QRadar 的动态查找表适合承载白名单、监控名单和外部情报等会变的数据。用 API 创建和管理它比手动在 UI 里维护更可审计、可重复。创建名为Known_Pen_Test_IPs的 IP 类型 Reference Set并设置LAST_SEEN超时与 30 天 TTL# Create reference set via QRadar API curl -X POST https://qradar.example.com/api/reference_data/sets \ -H SEC: YOUR_API_TOKEN \ -H Content-Type: application/json \ -d { name: Known_Pen_Test_IPs, element_type: IP, timeout_type: LAST_SEEN, time_to_live: 30 days } # Add entries curl -X POST https://qradar.example.com/api/reference_data/sets/Known_Pen_Test_IPs \ -H SEC: YOUR_API_TOKEN \ -d value10.0.5.100随后在规则条件中引用它实现排除已知良性行为 突出关键资产Test: AND when the Source IP is NOT contained in any of [Known_Pen_Test_IPs] Test: AND when the Destination IP is contained in any of [Critical_Asset_IPs]仓库 api-reference.md 还给出了完整的 Reference Data API 用法包括创建POST /reference_data/sets、追加条目POST /reference_data/sets/{name}?value...和读取集合内容GET /reference_data/sets/{name}三个操作都可以用SEC请求头携带 API Token 完成。Step 5调优 Offense 生成降低误报误报治理的第一步是量化误报来源。下面的 AQL 从近 30 天标记为 False Positive 关闭原因的 Offense 中统计贡献事件按 QID 和日志源的分组找出最大的误报制造者-- Find top false positive generators SELECT QIDNAME(qid) AS event_name, LOGSOURCENAME(logSourceId) AS log_source, COUNT(*) AS event_count, COUNT(DISTINCT sourceIP) AS unique_sources FROM events WHERE INOFFENSE( SELECT offenseId FROM offenses WHERE status CLOSED AND closeReason False Positive AND startTime NOW() - 30*24*60*60*1000 ) GROUP BY qid, logSourceId ORDER BY event_count DESC LIMIT 20拿到榜单后的调优手段把高频误报源加入 Reference Set 排除条件如 Step 4 的Known_Pen_Test_IPs对噪声规则的阈值做差异化提升例如服务账号场景把10 次失败登录提升为25 次因为服务账号的自动化重试天然高频开启 Offense Coalescing让相关联的事件聚合成单个 Offense降低分析师逐个处理的负担。Step 6构建关联监控仪表盘用 QRadar Pulse 构建自定义仪表盘将关联效果量化为两个核心指标在途 Offense 构成与平均关闭时长。-- Active offenses by category SELECT offenseType, status, COUNT(*) AS offense_count, AVG(magnitude) AS avg_magnitude FROM offenses WHERE status OPEN GROUP BY offenseType, status ORDER BY offense_count DESC -- Mean time to close offenses SELECT DATEFORMAT(startTime, yyyy-MM-dd) AS day, AVG(closeTime - startTime) / 60000 AS avg_close_minutes, COUNT(*) AS closed_count FROM offenses WHERE status CLOSED AND startTime NOW() - 30*24*60*60*1000 GROUP BY DATEFORMAT(startTime, yyyy-MM-dd) ORDER BY day第一个查询告诉你哪些攻击类别正在产生最多 Offense 以及平均 Magnitude 有多高第二个查询按天统计平均关闭耗时毫秒除以 60000 换算为分钟是衡量检测质量与分析师效率的直观信号。用 API 与脚本自动化关联工作流上述手动操作都可以通过 QRadar REST API 与 scripts/agent.py 自动化。该脚本实现了一个QRadarClient客户端封装了 AQL 检索、Offense 管理、Reference Set 操作和规则列表查询。class QRadarClient: def __init__(self, host, api_token, verify_sslFalse): self.base_url fhttps://{host}/api self.headers { SEC: api_token, Content-Type: application/json, Accept: application/json, }search_aql(query)通过POST /ariel/searches?query_expression...提交查询轮询任务状态直至COMPLETED后拉取结果最多等待 60 秒超时返回错误get_offenses()/get_offense_details()/close_offense()分别对应 Offense 管理 API 的列表、详情与关闭操作关闭时还会自动追加一条备注create_reference_set()/add_to_reference_set()封装了 Reference Set 的创建与条目追加默认verify_sslFalse即关闭证书校验——生产环境应显式开启并配置合法证书。脚本内置了两个开箱即用的检测查询可直接作为关联分析起点brute_force_aql()24 小时内按源 IP、目标 IP、用户名分组统计认证失败事件HAVING COUNT(*) 10输出暴力破解候选lateral_movement_aql()24 小时内排除域控reference_data.sets(Domain_Controllers)后统计单个源 IP 连接的不同目标 IP 数量HAVING COUNT(DISTINCT destinationIP) 5提示横向移动迹象。运行方式设置环境变量后执行export QRADAR_HOSTqradar.example.com export QRADAR_TOKENyour_api_token python agent.py report # 生成在途 Offense 汇总报告 python agent.py offenses # 列出在途 Offense python agent.py offense 12345 # 查看指定 Offense 详情 python agent.py brute-force # 执行暴力破解检测查询 python agent.py lateral-movement # 执行横向移动检测查询 python agent.py aql SELECT ... # 执行任意 AQL 查询结合 api-reference.md 中的 Offense 管理 API你还可以在脚本基础上扩展自动关闭误报 Offense的能力# List open offenses curl -s https://qradar/api/siem/offenses?filterstatus%3DOPEN -H SEC: $TOKEN # Get offense details curl -s https://qradar/api/siem/offenses/12345 -H SEC: $TOKEN # Close offense curl -X POST https://qradar/api/siem/offenses/12345?closing_reason_id1statusCLOSED \ -H SEC: $TOKEN # Add note to offense curl -X POST https://qradar/api/siem/offenses/12345/notes \ -H SEC: $TOKEN -H Content-Type: application/json \ -d {note_text: Investigation completed}核心概念速查术语定义AQLAriel Query Language — QRadar 的类 SQL 查询语言用于检索事件、流和 OffenseOffenseQRadar 的关联告警单元将多个事件/流归并为一个可调查的条目Building Block可复用的规则组件只对事件分类而不直接产生 Offense作为关联规则的输入MagnitudeQRadar 计算的 Offense 严重度综合 relevance相关性、severity严重性与 credibility可信度三因子得出 1-10 分值Reference SetQRadar 中的动态查找表用于规则内的白名单、监控名单与外部数据增强QIDQRadar Identifier — 将厂商特定事件映射到归一化类别的唯一数字 IDCoalescingQRadar 将相关事件归并为单一 Offense 的机制用于降低分析师工作量工具链与典型场景工具链IBM QRadar SIEM企业级 SIEM 平台提供事件关联、Offense 管理与 AQL 查询引擎、QRadar Pulse自定义可视化仪表盘框架、QRadar API自动化 Reference Set、Offense 与规则部署的 REST 接口、QRadar Use Case Manager将检测规则映射到 MITRE ATTCK 覆盖度、QRadar Assistant基于 AI 的自然语言调查辅助。典型场景暴力破解到沦陷关联同源 IP 的失败认证与随后的成功登录横向移动链追踪单一源在多个内部主机上的认证事件序列C2 信标关联周期性 DNS 查询与访问非常规域名时的低熵载荷权限提升关联用户组变更如加入管理员组与此前的可疑认证数据外渗关联大体积出站流量与此前的内网侦察活动。标准化输出Offense 调查报告模板技能文档给出了一套可直接复用的 Offense 调查输出格式保证每次排查产出一致的可审计结论QRADAR OFFENSE INVESTIGATION — Offense #12345 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Offense Type: Brute Force with Subsequent Access Magnitude: 8/10 (Severity: 8, Relevance: 9, Credibility: 7) Created: 2024-03-15 14:23:07 UTC Contributing: 247 events from 3 log sources Correlation Chain: 14:10-14:22 — 234 Authentication Failures (EventCode 4625) from 192.168.1.105 to DC-01 14:23:07 — Authentication Success (EventCode 4624) from 192.168.1.105 to DC-01 (user: admin) 14:25:33 — New Process: cmd.exe spawned by admin on DC-01 14:26:01 — Net.exe user /add detected on DC-01 Sources Correlated: Windows Security Logs (DC-01) Sysmon (DC-01) Firewall (Palo Alto PA-5260) Disposition: TRUE POSITIVE — Escalated to Incident Response Ticket: IR-2024-0432该模板把 Offense 元数据类型、Magnitude、创建时间、贡献事件数、关联时间线失败→成功→进程创建→账户操作、跨日志源证据Windows 安全日志、Sysmon、防火墙与处置结论定性、升级、工单号组织在一起天然适合写入工单系统或作为证据留存。小结从 AQL 溯源、Building Block 分层规则到事件与流的跨源 JOIN、Reference Set 上下文增强再到误报调优、Pulse 仪表盘与 API 自动化本文完整覆盖了在 QRadar 上实施基于行为的关联分析所需的核心能力。整个技能以soc-operations子域为定位对应的文档、API 参考与自动化脚本均已随仓库开源Apache-2.0可作为 SOC 团队落地 QRadar 关联检测的直接参考。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表