收集 Qualys 漏洞管理日志
支持的平台:
Google SecOps
SIEM
此解析器可处理采用键值 (KV) 或 JSON 格式的 Qualys 漏洞管理日志。它会提取漏洞详细信息、主机信息和扫描元数据,并将其映射到 UDM。该解析器还会处理不同的日志结构,优先解析 KV,并在必要时回退到 JSON,并将 DetectionList
数组拆分为单独的漏洞事件。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您拥有对 Qualys VMDR 控制台的特权访问权限。
可选:在 Qualys 中创建专用 API 用户
- 登录 Qualys 控制台。
- 转到用户。
- 依次点击新建 > 用户。
- 输入用户所需的一般信息。
- 选择用户角色标签页。
- 确保该角色的 API 访问权限复选框处于选中状态。
- 点击保存。
确定您的具体 Qualys API 网址
选项 1
按照平台识别中所述的方法识别您的网址。
选项 2
- 登录 Qualys 控制台。
- 依次前往帮助 > 关于。
- 滚动到“安全运维中心 (SOC)”下方查看此信息。
- 复制 Qualys API 网址。
在 Google SecOps 中配置 Feed 以提取 Qulays 虚拟机日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称(例如 Qualys VM 日志)。
- 选择第三方 API 作为来源类型。
- 选择 Qualys VM 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 用户名:输入用户名。
- Secret:输入密码。
- API 完整路径:提供 Qualys API 服务器网址(例如
https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list
),其中<qualys_base_url>
是您账号所在的 Qualys API 服务器的基本网址。 - 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
DETECTION.FIRST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.first_found |
从 DETECTION.FIRST_FOUND_DATETIME 字段解析,将字符串值转换为时间戳。 |
DETECTION.LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
从 DETECTION.LAST_FOUND_DATETIME 字段解析,将字符串值转换为时间戳。 |
DETECTION.QID |
extensions.vulns.vulnerabilities.name |
将“QID:”与 DETECTION.QID 的值串联起来。 |
DETECTION.RESULTS |
extensions.vulns.vulnerabilities.description |
直接映射到“说明”字段。还用于使用 grok 提取 network.ip_protocol 和 principal.port 。 |
DETECTION.SEVERITY |
extensions.vulns.vulnerabilities.severity |
从 DETECTION.SEVERITY 映射而来。值 0、1、2 变为“低”;3、4 变为“中”;5、6、7 变为“高”。 |
DETECTION.STATUS |
extensions.vulns.vulnerabilities.about.labels |
已添加为键为“检测状态”的标签。 |
DETECTION.TYPE |
extensions.vulns.vulnerabilities.about.labels |
已添加为键为“Detection type”(检测类型)的标签。 |
DNS |
principal.hostname |
直接映射到 principal.hostname 。 |
DNSData.DOMAIN |
principal.domain.name |
直接映射到 principal.domain.name 。 |
HOST.ASSET_ID |
principal.asset_id |
将“QUALYS:”与 HOST.ASSET_ID 的值串联起来。 |
HOST.DNS |
principal.hostname |
如果 DNS 为空,则直接映射到 principal.hostname 。 |
HOST.DNS_DATA.DOMAIN |
principal.domain.name |
如果 DNSData.DOMAIN 为空,则直接映射到 principal.domain.name 。 |
HOST.ID |
metadata.product_log_id |
直接映射到 metadata.product_log_id 。 |
HOST.IP |
principal.ip |
如果 IP 为空,则直接映射到 principal.ip 。 |
HOST.LAST_SCAN_DATETIME |
extensions.vulns.vulnerabilities.scan_start_time |
从 HOST.LAST_SCAN_DATETIME 字段解析,将字符串值转换为时间戳。 |
HOST.LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
从 HOST.LAST_VM_SCANNED_DATE 字段解析,将字符串值转换为时间戳。 |
HOST.NETBIOS |
additional.fields |
已添加为键为“HOST NETBIOS”的标签。 |
HOST.OS |
principal.platform_version |
如果 OS 为空,则直接映射到 principal.platform_version 。 |
HOST.QG_HOSTID |
additional.fields |
添加为键为“HOST QG_HOSTID”的标签。 |
HOST.TRACKING_METHOD |
additional.fields |
添加为键为“HOST TRACKING_METHOD”的标签。 |
HOST_ID |
principal.asset_id |
将“QUALYS:”与 HOST_ID 的值串联起来。 |
ID |
metadata.product_log_id |
直接映射到 metadata.product_log_id 。 |
IP |
principal.ip |
直接映射到 principal.ip 。 |
LastScanDateTime |
extensions.vulns.vulnerabilities.scan_start_time |
从 LastScanDateTime 字段解析,将字符串值转换为时间戳。 |
LastVMAuthScanDuration |
additional.fields |
已添加为键为“LastVMAuthScanDuration”的标签。 |
LastVMScanDate |
extensions.vulns.vulnerabilities.scan_end_time |
从 LastVMScanDate 字段解析,将字符串值转换为时间戳。 |
LastVMScanDuration |
additional.fields |
已添加为键为“LastVMScanDuration”的标签。 |
LAST_FOUND_DATETIME |
extensions.vulns.vulnerabilities.last_found |
从 LAST_FOUND_DATETIME 字段解析,将字符串值转换为时间戳。 |
LAST_SCAN_DATETIME |
extensions.vulns.vulnerabilities.scan_start_time |
从 LAST_SCAN_DATETIME 字段解析,将字符串值转换为时间戳。 |
LAST_VM_SCANNED_DATE |
extensions.vulns.vulnerabilities.scan_end_time |
从 LAST_VM_SCANNED_DATE 字段解析,将字符串值转换为时间戳。 |
NETBIOS |
additional.fields |
已添加为键为“NETBIOS”的标签。 |
NetworkID |
additional.fields |
已添加为键为“NetworkID”的标签。 |
NETWORK_ID |
additional.fields |
已添加为键为“NetworkID”的标签。 |
OS |
principal.platform_version |
直接映射到 principal.platform_version 。 |
Os |
principal.platform_version |
如果 OS 为空,则直接映射到 principal.platform_version 。 |
QID |
extensions.vulns.vulnerabilities.name |
将“QID:”与 QID 的值串联起来。 |
QgHostID |
principal.asset_id |
将 principal.asset_id 设置为“主机 ID:%{QgHostID}”。 |
SEVERITY |
extensions.vulns.vulnerabilities.severity |
从 SEVERITY 映射而来。值 0、1、2 变为“低”;3、4 变为“中”;5、6、7 变为“高”。 |
TRACKING_METHOD |
additional.fields |
已添加为键为“TRACKING_METHOD”的标签。 |
TrackingMethod |
additional.fields |
已添加为键为“TRACKING_METHOD”的标签。 |
不适用 | metadata.vendor_name |
已硬编码为“Qualys”。 |
不适用 | metadata.product_name |
已硬编码为“漏洞管理”。 |
不适用 | metadata.event_type |
如果 _vulns 不为空,则设置为“SCAN_VULN_HOST”;如果 prin_host 或 IP 不为空,则设置为“STATUS_UPDATE”;否则设置为“GENERIC_EVENT”。 |
不适用 | metadata.log_type |
取自原始日志的 log_type 字段。 |
不适用 | principal.platform |
从 OS 、Os 或 HOST.OS 中确定。如果其中任何一个包含“Linux”,平台将设置为“LINUX”。如果其中任何一个包含“Windows”,则平台设置为“WINDOWS”。如果其中任何一个包含“mac”或“IOS”,平台会设为“MAC”。 |
detection.DType |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
在从 DetectionList 字段解析的事件的漏洞数组中,以键“检测类型”的形式添加了标签。 |
detection.FirstFoundTime |
extensions.vulns.vulnerabilities.first_found |
从 detection.FirstFoundTime 字段解析,将字符串值转换为来自 DetectionList 字段的事件的 vulnerabilities 数组中的事件时间戳。 |
detection.LastFoundTime |
extensions.vulns.vulnerabilities.last_found |
从 detection.LastFoundTime 字段解析,将字符串值转换为来自 DetectionList 字段的事件的 vulnerabilities 数组中的事件时间戳。 |
detection.LastProcessedDatetime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
在从 DetectionList 字段解析的事件的 vulnerabilities 数组中,作为键为“LastProcessedDatetime”的标签添加。 |
detection.LastTestDateTime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
已作为键为“LastTestDateTime”的标签添加到从 DetectionList 字段解析的事件的 vulnerabilities 数组中。 |
detection.LastUpdateDateTime |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
已作为标签添加到从 DetectionList 字段解析的事件的 vulnerabilities 数组中,键为“LastUpdateDateTime”。 |
detection.Qid |
extensions.vulns.vulnerabilities.name |
将“QID:”与从 DetectionList 字段解析的事件的 vulnerabilities 数组中的 detection.Qid 值串联起来。 |
detection.Results |
extensions.vulns.vulnerabilities.description |
对于从 DetectionList 字段解析的事件,直接映射到 vulnerabilities 数组中的 description 字段。制表符和换行符会替换为空格。 |
detection.Severity |
extensions.vulns.vulnerabilities.severity |
从 detection.Severity 映射而来。对于从 DetectionList 字段解析的事件,漏洞数组中的值 0、1、2 会变为“低”;3、4 会变为“中”;5、6、7 会变为“高”。 |
detection.Status |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
在从 DetectionList 字段解析的事件的“vulnerabilities”数组中,以键“Detection status”的形式添加了标签。 |
detection.TimesFound |
extensions.vulns.vulnerabilities.about.resource.attribute.labels |
已作为键为“TimesFound”的标签添加到从 DetectionList 字段解析的事件的 vulnerabilities 数组中。 |
timestamp |
metadata.event_timestamp ,timestamp |
原始日志的 timestamp 字段既用于事件时间戳,也用于顶级时间戳。 |
变化
2023-10-27
- 添加了“for”循环,以便在存在多个“QID”时拆分事件。
2023-04-25
- 将“DetectionList.FirstFoundTime”映射到“extensions.vulns.vulnerabilities.first_found”。
- 将“DetectionList.LastFoundTime”映射到“extensions.vulns.vulnerabilities.last_found”。
- 将“DetectionList.TimesFound”映射到“extensions.vulns.vulnerabilities.about.resource.attribute.labels”。
- 将“DetectionList.LastTestDateTime”映射到“extensions.vulns.vulnerabilities.about.resource.attribute.labels”。
- 将“DetectionList.LastUpdateDateTime”映射到“extensions.vulns.vulnerabilities.about.resource.attribute.labels”。
- 将“DetectionList.LastProcessedDatetime”映射到“extensions.vulns.vulnerabilities.about.resource.attribute.labels”。
2023-01-23
- 将“DetectionList”数组详情映射到“extensions.vulns.vulnerabilities”。
- 将“DetectionList.Qid”映射到“extensions.vulns.vulnerabilities.name”。
- 将“DetectionList.Severity”映射到“extensions.vulns.vulnerabilities.severity”。
- 将“DetectionList.Results”映射到“extensions.vulns.vulnerabilities.description”。
- 将“DetectionList.Status”“DetectionList.DType”映射到“extensions.vulns.vulnerabilities.about.resource.attribute.labels”。
2022-09-29
- 将“ID”映射到“metadata.product_log_id”。
- 将“Netbios”“TrackingMethod”“NetworkID”映射到“additional.fields”。
- 将“QgHostID”映射到“principal.asset_id”。
- 将“操作系统”映射到“principal.platform_version”。
- 添加了针对“vulns”的条件检查。
2022-07-20
- 添加了以下字段的映射:
- “DETECTION.FIRST_FOUND_DATETIME”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found”。
- “DETECTION.LAST_FOUND_DATETIME”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found”。
- “HOST.LAST_VM_SCANNED_DATE”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time”。
- “HOST.LAST_SCAN_DATETIME”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time”。
- “DETECTION.QID”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.name”。
- “DETECTION.SEVERITY”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity”。
- “DETECTION.TYPE”映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels”。
- “DETECTION.STATUS”已映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels”。
- “DETECTION.RESULTS”映射到“event.idm.read_only_udm.extensions.vulns.vulnerabilities.description”。
- “HOST.DNS_DATA.DOMAIN”已映射到“event.idm.read_only_udm.principal.domain.name”。
- “HOST.ASSET_ID”已映射到“event.idm.read_only_udm.principal.asset_id”。
- “HOST.IP”已映射到“event.idm.read_only_udm.principal.ip”。
- “HOST.OS”已映射到“event.idm.read_only_udm.principal.platform_version”。
- “HOST.DNS”已映射到“event.idm.read_only_udm.principal.hostname”。
- “HOST.QG_HOSTID”已映射到“event.idm.read_only_udm.additional.fields”。
- “HOST.NETBIOS”已映射到“event.idm.read_only_udm.additional.fields”。
- “HOST.TRACKING_METHOD”映射到“event.idm.read_only_udm.additional.fields”。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。