收集 Halcyon 反勒索软件日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Google Cloud Storage V2 将 Halcyon Anti-Ransomware 日志注入到 Google Security Operations 中。
Halcyon 是一个反勒索软件平台,可利用 AI 检测、防范勒索软件攻击并从中恢复。它会针对勒索软件检测事件、加密尝试和恢复操作生成提醒。解析器会将 JSON 格式的日志字段映射到统一数据模型 (UDM),从而处理文件操作、用户活动和安全结果等事件类型。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 已启用 Cloud Storage API 的 GCP 项目
- 创建和管理 GCS 存储分区及 IAM 政策的权限
- 对 Halcyon 控制台的特权访问权限,具有日志导出功能
创建 Google Cloud Storage 存储桶
- 前往 Google Cloud 控制台。
- 选择您的项目或创建新项目。
- 在导航菜单中,依次前往 Cloud Storage > 存储分区。
- 点击创建存储分区。
提供以下配置详细信息:
设置 值 为存储桶命名 输入一个全局唯一的名称(例如 halcyon-logs)位置类型 根据您的需求进行选择(区域级、双区域、多区域) 位置 选择营业地点(例如 us-central1)存储类别 标准(建议用于经常访问的日志) 访问权限控制 均匀(推荐) 保护工具 可选:启用对象版本控制或保留政策 点击创建。
将 Halcyon 日志导出到 Google Cloud Storage
Halcyon 支持以 JSON 格式导出日志数据。您可以使用以下任一方法将日志传送到 GCS。
选项 A:使用 Halcyon API 导出日志并上传到 GCS
- 登录 Halcyon 管理控制台。
- 前往设置 > API 访问权限,然后生成具有读取权限的 API 密钥。
- 复制并保存 API 密钥。
- 使用预定脚本或 Cloud Run 函数调用 Halcyon REST API,提取事件日志,并以 JSON 格式将其写入 GCS。
方法 B:配置 SIEM 集成并转发到 GCS
- 登录 Halcyon 管理控制台。
- 依次前往设置 > 集成 > SIEM。
- 配置日志导出目的地,以将 JSON 格式的事件写入本地目录或中间存储空间。
使用 Cloud Run 函数定期将日志上传到您的 GCS 存储桶。
- 确保导出的文件采用 JSON 格式。
- 每个文件应包含一条或多条事件记录。
检索 Google SecOps 服务账号
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 选择 Google Cloud Storage V2 作为来源类型。
- 选择 Halcyon Anti Ransomware 作为日志类型。
点击获取服务账号。系统会显示一个唯一的服务账号电子邮件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com复制此电子邮件地址。您将在下一步骤中用到它。
向 Google SecOps 服务账号授予 IAM 权限
- 前往 Cloud Storage > 存储分区。
- 点击您的存储桶名称。
- 前往权限标签页。
- 点击授予访问权限。
- 提供以下配置详细信息:
- 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址。
- 分配角色:选择 Storage Object Viewer。
点击保存。
- 如果您计划使用删除选项(删除转移的文件),请授予 Storage Object Admin 角色,而不是 Storage Object Viewer 角色。
在 Google SecOps 中配置 Feed 以注入 Halcyon Anti-Ransomware 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Halcyon Anti-Ransomware logs)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择 Halcyon Anti Ransomware 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
字段 值 存储桶 URI gs://halcyon-logs/halcyon/events/来源删除选项 根据您的偏好选择删除选项 文件最长保留天数 默认值为 180 天 资产命名空间 资源命名空间 注入标签 要应用于相应 Feed 中事件的标签 - 将
halcyon-logs替换为您的实际 GCS 存储桶名称。 - 请务必在 URI 末尾添加尾随斜杠 (
/)。
- 将
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| sshd、tty、euid、dataType、filterName、totalOccurrences、occurredAt、count、occurrences.IncorrectPasswords、occurrences.FailedPassword、occurrences.AuthFailure、policyMode、action | additional.fields | 如果存在,则与根据每个字段创建的标签合并;totalOccurrences、count、occurrences 字段转换为字符串 |
| dnsArtifact.uri | network.dns.questions | 与包含名称的问题数组合并 |
| asset.id | principal.asset.asset_id | 串联为“ASSET:” + asset.id |
| asset.kind | principal.asset.attribute.labels | 已与根据 asset.kind 创建的 asset_kind_label 合并 |
| asset.name | principal.asset.hostname | 直接复制值 |
| ipArtifact.ipAddress | principal.asset.ip | 直接复制值 |
| summary.applicationName | principal.application | 直接复制值 |
| phost, asset.name | principal.hostname | 如果存在,则使用 phost 中的值;如果存在,则使用 asset.name 覆盖该值 |
| ipArtifact.ipAddress | principal.ip | 直接复制值 |
| process.commandLine | principal.process.command_line | 直接复制值 |
| modifiedFilePath、artifact.filePath、process.artifact.filePath、processes.artifact.filePath | principal.process.file.full_path | 如果存在,则设置为 modifiedFilePath;如果存在,则被 artifact.filePath 覆盖;如果存在,则被 process.artifact.filePath 覆盖;如果存在,则被 processes.artifact.filePath 覆盖(移除了 processes.artifact.filePath 的引号) |
| lastOccurredAt | principal.process.file.last_seen_time | 使用 ISO8601 格式的日期过滤器进行转换 |
| process.artifact.kind、artifact.kind、primaryProcess.artifact.kind | principal.process.file.mime_type | 如果存在,则为 process.artifact.kind 中的值;如果存在,则被 artifact.kind 覆盖;如果存在,则被 primaryProcess.artifact.kind 覆盖 |
| artifact.sha256、process.artifact.sha256、processes.artifact.sha256 | principal.process.file.sha256 | 如果存在,则为 artifact.sha256 中的值;如果存在,则会被 process.artifact.sha256 覆盖;如果存在,则会被 processes.artifact.sha256 覆盖 |
| process.parentPid | principal.process.parent_pid | 直接复制值 |
| process.pid | principal.process.pid | 直接复制值 |
| user_displayname | principal.user.user_display_name | 直接复制值 |
| 用户 | principal.user.userid | 直接复制值 |
| summary.artifact.filePath | target.file.full_path | 直接复制值 |
| summary.artifact.sha256 | target.file.sha256 | 直接复制值 |
| primaryProcess.commandLine | target.process.command_line | 直接复制的值(移除引号后) |
| primaryProcess.kind | target.process.file.mime_type | 直接复制值 |
| primaryProcess.parentPid | target.process.parent_process.pid | 直接复制值 |
| primaryProcess.pid | target.process.pid | 直接复制值 |
| uid | target.user.userid | 直接复制值 |
| id | target.asset_id | 串联为“ASSET:” + id |
| 操作 | security_result.action | 如果操作是“屏蔽”或“允许”,则采用大写形式 |
| reason.exitCode | security_result.action_details | 直接复制值 |
| dxpRule、monitoringReason、tenantId | security_result.detection_fields | 如果存在,则与根据每个字段创建的标签合并;移除了 dxpRule 的反斜杠 |
| dxpRuleType | security_result.rule_type | 直接复制值 |
| ipArtifact.version | security_result.rule_version | 直接复制值 |
| msg, reason.cause | security_result.summary | 如果存在,则使用 msg 中的值;如果存在 reason.cause,则使用 reason.cause 覆盖该值 |
| 时间戳 | metadata.event_timestamp | 使用日期过滤器转换,格式为 MMM dd HH:mm:ss 或 MMM d HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | 如果具有委托人和目标文件,则设置为 FILE_UNCATEGORIZED;如果具有委托人和目标,则设置为 USER_UNCATEGORIZED;如果具有委托人,则设置为 STATUS_UPDATE;否则设置为 GENERIC_EVENT(标志源自来源) |
| kind | metadata.product_event_type | 直接复制值 |
| gupid、guid | metadata.product_log_id | 如果存在,则使用 gupid 中的值;如果存在,则使用 guid 覆盖该值 |
| metadata.product_name | 设置为“Halcyon Anti Ransomware” | |
| metadata.vendor_name | 设置为“Halcyon” | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
从变更日志映射 |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
从变更日志映射 |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
从变更日志映射 |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
从变更日志映射 |
action |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
filterName |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
policyMode |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
euid |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
occurredAt |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
guid |
event.idm.read_only_udm.metadata.product_log_id |
从变更日志映射 |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
从变更日志映射 |
count |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
从变更日志映射 |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
从变更日志映射 |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
从变更日志映射 |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
从变更日志映射 |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
从变更日志映射 |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
从变更日志映射 |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
从变更日志映射 |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
从变更日志映射 |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
从变更日志映射 |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
从变更日志映射 |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
从变更日志映射 |
summary.applicationName |
event.idm.read_only_udm.principal.application |
从变更日志映射 |
process.pid |
event.idm.read_only_udm.principal.process.pid |
从变更日志映射 |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
从变更日志映射 |
reason.cause |
event.idm.read_only_udm.security_result.summary |
从变更日志映射 |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
从变更日志映射 |
uid |
event.idm.read_only_udm.target.user.userid |
从变更日志映射 |
tty |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
sshd |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
phost |
event.idm.read_only_udm.principal.hostname |
从变更日志映射 |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
从变更日志映射 |
msg |
event.idm.read_only_udm.security_result.summary |
从变更日志映射 |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
从变更日志映射 |
user |
event.idm.read_only_udm.principal.user.userid |
从变更日志映射 |