收集 ExtraHop RevealX 日志

支持的语言:

本文档介绍了如何使用 Bindplane 将 ExtraHop RevealX 日志注入到 Google Security Operations。解析器从 JSON 和 Syslog 格式的日志中提取字段。它使用 Grok 模式和条件逻辑来处理不同的日志格式,将提取的字段映射到 UDM,并使用严重程度和类别等安全相关信息来丰富数据。解析器还会处理特定的 ExtraHop 事件类型,例如 DNS 重新绑定、Kerberos 身份验证错误和 RDP 连接,并针对每种事件类型应用专门的解析逻辑。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果通过代理运行,请确保防火墙端口处于开放状态
  • 对 ExtraHop RevealX 的特权访问权限

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载注入身份验证文件。将该文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

如需了解其他安装选项,请参阅安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:
    • 找到 config.yaml 文件。通常,它位于 Linux 上的 /etc/bindplane-agent/ 目录中或 Windows 上的安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'EXTRAHOP'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • 根据基础架构的需要替换端口和 IP 地址。
    • <customer_id> 替换为实际的客户 ID。
    • /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

配置 ExtraHop Syslog

  1. 使用 https://<extrahop-hostname-or-IP-address>/admin 登录 ExtraHop 管理界面
  2. 依次前往状态和诊断信息 > 审核日志
  3. 点击 Configure Syslog Settings
  4. 提供以下配置详细信息:
    • 目的地:输入 Bindplane 代理 IP 地址。
    • 协议:根据您的 Bindplane 配置,选择 UDPTCP
    • 端口:输入 Bindplane 代理端口号。
    • 点击测试设置
  5. 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
alert_name security_result.summary 原始日志中的 alert_name 值映射到 security_result.summary
answers[].data network.dns.answers[].data 原始日志中 answers 数组中每个元素的 data 值都会映射到 network.dns.answers 数组中相应元素的 data 字段。
answers[].name network.dns.answers[].name 原始日志中 answers 数组中每个元素的 name 值都会映射到 network.dns.answers 数组中相应元素的 name 字段。
answers[].ttl network.dns.answers[].ttl 原始日志中 answers 数组中每个元素的 ttl 值都会映射到 network.dns.answers 数组中相应元素的 ttl 字段。
answers[].typeNum network.dns.answers[].type 原始日志中 answers 数组中每个元素的 typeNum 值都会映射到 network.dns.answers 数组中相应元素的 type 字段。
client_ip principal.ip 原始日志中的 client_ip 值映射到 principal.ip
cn1 security_result.rule_labels[].value 原始日志中的 cn1 值用作键为“检测 ID”的 security_result.rule_labels 元素的值。
cn2 security_result.detection_fields[].value 原始日志中的 cn2 值用作键为“riskscore”的 security_result.detection_fields 元素的值。
cs1 security_result.rule_name 原始日志中的 cs1 值映射到 security_result.rule_name
cs2 security_result.category_details[] 原始日志中的 cs2 值会作为元素添加到 security_result.category_details 数组中。
description metadata.description 原始日志中的 description 值经过一些处理(移除换行符和反斜杠)后,会映射到 metadata.description。在某些情况下,原始日志中的其他字段可能会影响或覆盖此字段。
details principal.resource.resource_subtypesecurity_result.summaryprincipal.ip 系统会解析 details 字段。与“facility”键关联的值会映射到 principal.resource.resource_subtype。与“details”键关联的值会映射到 security_result.summary。与“src_ip”键关联的值映射到 principal.ip
dst target.iptarget.mac 原始日志中的 dst 值如果为 IP 地址,则会映射到 target.ip;如果为 MAC 地址,则会映射到 target.mac
dst_ip target.ip 原始日志中的 dst_ip 值映射到 target.ip
eh_event metadata.event_typenetwork.application_protocol 如果 eh_event 为“dns”,则 metadata.event_type 设置为 NETWORK_DNSnetwork.application_protocol 设置为 DNS。如果 eh_event 为“RDP”,则 metadata.event_type 设置为 NETWORK_CONNECTIONnetwork.application_protocol 设置为 RDP
event_id metadata.product_event_type 原始日志中的 event_id 值映射到 metadata.product_event_type
facility principal.resource.resource_subtype 原始日志中的 facility 值映射到 principal.resource.resource_subtype
ipaddr principal.ip 原始日志中的 ipaddr 值映射到 principal.ip
jsonPayload.description metadata.product_event_typeprincipal.hostnameprincipal.asset.hostnamesecurity_result.summary jsonPayload.description 字段解析为 JSON。“operation”字段映射到 metadata.product_event_type。“event”字段(移除“审核日志”后)会映射到 principal.hostnameprincipal.asset.hostname。“详细信息”字段已映射到 security_result.summary
jsonPayload.event metadata.product_event_typeprincipal.hostnameprincipal.asset.hostname 原始日志(移除“审核日志”后)中的 jsonPayload.event 值会映射到 metadata.product_event_typeprincipal.hostnameprincipal.asset.hostname
jsonPayload.id metadata.product_log_id 原始日志中的 jsonPayload.id 值映射到 metadata.product_log_id
macaddr principal.mac 原始日志中的 macaddr 值映射到 principal.mac
name metadata.description 原始日志中的 name 值映射到 metadata.description
object_id target.resource.product_object_id 原始日志中的 object_id 值映射到 target.resource.product_object_id
object_name target.resource.name 原始日志中的 object_name 值映射到 target.resource.name
object_type target.resource.resource_type 原始日志中的 object_type 值(转换为大写)会映射到 target.resource.resource_type
operation metadata.product_event_type 原始日志中的 operation 值映射到 metadata.product_event_type
priority security_result.severitysecurity_result.severity_details 如果 priority 为“notice”,则 security_result.severity 设置为 MEDIUMsecurity_result.severity_details 设置为 priority 的值。
product_event_type metadata.product_event_type 原始日志中的 product_event_type 值会映射到 metadata.product_event_type。它还用于根据其值确定 metadata.event_type 和其他字段。
qname network.dns.questions[].name 原始日志中的 qname 值会映射到 network.dns.questions 元素的 name 字段。
qname_or_host intermediary.hostname 原始日志中的 qname_or_host 值映射到 intermediary.hostname
qtype network.dns.questions[].type 原始日志中的 qtype 值会映射到 network.dns.questions 元素的 type 字段,并根据 DNS 记录类型将字符串表示形式转换为相应的数值。
resource.labels.project_id target.resource.attribute.labels[].value 原始日志中的 resource.labels.project_id 值用作键为“Project id”的 target.resource.attribute.labels 元素的值。
resource.type target.resource.resource_subtype 原始日志中的 resource.type 值映射到 target.resource.resource_subtype
rdp_record.clientBuild metadata.product_version 原始日志中的 rdp_record.clientBuild 值映射到 metadata.product_version
rdp_record.clientBytes network.sent_bytes 原始日志中的 rdp_record.clientBytes 值映射到 network.sent_bytes
rdp_record.clientName principal.hostname 原始日志中的 rdp_record.clientName 值映射到 principal.hostname
rdp_record.clientPort principal.port 原始日志中的 rdp_record.clientPort 值映射到 principal.port
rdp_record.cookie principal.user.userid 原始日志中 rdp_record.cookie 的值(移除“mstshash=”后)会映射到 principal.user.userid
rdp_record.proto network.ip_protocol 原始日志中的 rdp_record.proto 值会映射到 network.ip_protocol,将“TCP”转换为“TCP”,并将“UDP”转换为“UDP”。
rdp_record.selectedProtocol security_result.description 原始日志中的 rdp_record.selectedProtocol 值映射到 security_result.description
rdp_record.serverBytes network.received_bytes 原始日志中的 rdp_record.serverBytes 值映射到 network.received_bytes
rdp_record.serverPort target.port 原始日志中的 rdp_record.serverPort 值映射到 target.port
rt metadata.event_timestamp 原始日志中的 rt 值会被解析为时间戳并映射到 metadata.event_timestamp
severity security_result.severitysecurity_result.severity_detailsevent.idm.is_alertevent.idm.is_significant severity 的值映射到 security_result.severity_details。它还用于确定 security_result.severityevent.idm.is_alertevent.idm.is_significant 的值。
src principal.ipprincipal.mac 原始日志中的 src 值如果为 IP 地址,则会映射到 principal.ip;如果为 MAC 地址,则会映射到 principal.mac
src_ip principal.ipprincipal.mac 原始日志中的 src_ip 值如果为 IP 地址,则会映射到 principal.ip;如果为 MAC 地址,则会映射到 principal.mac
summary security_result.summary 原始日志中的 summary 值映射到 security_result.summary
ts metadata.event_timestamp 原始日志中的 ts 值会被解析为时间戳并映射到 metadata.event_timestamp
user principal.user.userid 原始日志中的 user 值映射到 principal.user.userid
(不适用) metadata.log_type 始终设置为“EXTRAHOP”。
(不适用) metadata.vendor_name 始终设置为“EXTRAHOP”。
(不适用) metadata.product_name 始终设置为“EXTRAHOP”。
(不适用) security_result.severity 默认设置为 CRITICAL,或根据 severitypriority 的值设置。
(不适用) event.idm.is_alert 如果 security_result.severity 为“HIGH”或“CRITICAL”,则设置为 true
(不适用) event.idm.is_significant 如果 security_result.severity 为“HIGH”或“CRITICAL”,则设置为 true
(不适用) metadata.event_type 根据其他字段(例如 eh_eventproduct_event_typehas_principaldst)的值确定。默认值为 GENERIC_EVENT
(不适用) network.application_protocol 如果 eh_event 为“dns”或 message 包含“DNS Rebinding”,则设置为 DNS。如果 eh_event 为“RDP”,则设置为 RDP
(不适用) security_result.rule_labels[].key 对于从 cn1 派生的规则标签,设置为“检测 ID”。
(不适用) security_result.detection_fields[].key 对于从 cn2 派生的检测字段,设置为“riskscore”。
(不适用) principal.user.attribute.roles[].type 如果存在 user_name,则设置为 SERVICE_ACCOUNT
(不适用) extensions.auth.type 如果 product_event_type 为“Kerberos 客户端身份验证错误”,则设置为 SSO
(不适用) extensions.auth.mechanism 如果 product_event_type 为“不安全的 LDAP 身份验证”或“Kerberos 客户端身份验证错误”,则设置为 USERNAME_PASSWORD
(不适用) security_result.category 如果 product_event_type 为“DNS Internal Reverse Lookup Scan”或包含“Inbound Suspicious Connections”,则设置为 NETWORK_SUSPICIOUS。如果 product_event_type 为“请求外部数据库服务器”,则设置为 NETWORK_MALICIOUS
(不适用) network.http.response_code 根据从 product_event_type 中提取的 status_code 进行设置(如果该值与“HTTP Server %{INT:status_code} %{GREEDYDATA}”模式匹配)。
jsonPayload.cs1 security_result.detection_fields[].value 原始日志中的 jsonPayload.cs1 值用作 security_result.detection_fields 元素的值。
jsonPayload.cn1 security_result.detection_fields[].value 原始日志中的 jsonPayload.cn1 值用作 security_result.detection_fields 元素的值。
jsonPayload.cn2 security_result.detection_fields[].value 原始日志中的 jsonPayload.cn2 值用作 security_result.detection_fields 元素的值。
jsonPayload.cs1LabeljsonPayload.cn1LabeljsonPayload.cn2Label security_result.detection_fields[].key 原始日志中的这些字段用作 security_result.detection_fields 中相应元素的键。
jsonPayload.src principal.ip 原始日志中的 jsonPayload.src 值映射到 principal.ip
jsonPayload.dst target.ip 原始日志中的 jsonPayload.dst 值映射到 target.ip

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。