收集 Thinkst Canary 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用第三方 API 设置 Google Security Operations Feed 来收集 Thinkst Canary 日志。
Thinkst Canary 提供基于欺骗的威胁检测:硬件、虚拟和云 Canary 模拟真实资产,而 Canarytoken 则充当文件、凭据和网址中的绊线。当攻击者触及 Canary 或触发令牌时,Canary 控制台会记录事件。该 Feed 会从 Console API 中检索这些突发事件。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 Thinkst Canary 控制台的特权访问权限
在 Thinkst Canary 中配置 REST API
- 登录您的 Thinkst Canary 控制台 (
https://<DOMAIN_HASH>.canary.tools)。 - 点击右上角的齿轮图标,然后选择全局设置。
- 在菜单中,点击 API。
- 如果该 API 已停用,请点击启用 API。
使用现有的默认 API 密钥,或点击 + 添加新的 API 密钥以创建专用 API 密钥:
- API 密钥类型:选择只读。这足以用于日志收集。
- 注意:输入密钥的名称(例如
Google SecOps Integration)。
将以下内容复制并保存到安全位置:
- 网域哈希:控制台的标识符。您的 API 主机名为
<DOMAIN_HASH>.canary.tools。 - 身份验证令牌:用于对请求进行身份验证的 API 密钥。
- 网域哈希:控制台的标识符。您的 API 主机名为
在 Google SecOps 中配置 Feed 以注入 Thinkst Canary 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Thinkst Canary Logs)。 - 选择第三方 API 作为来源类型。
- 选择 Thinkst Canary 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 身份验证 HTTP 标头:之前生成的令牌,采用
auth_token:<TOKEN>格式(例如auth_token:AAAABBBBCCCC111122223333)。 - API 主机名:Thinkst Canary REST API 端点的完全限定域名,采用
<DOMAIN_HASH>.canary.tools格式(例如myinstance.canary.tools)。 - 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- 身份验证 HTTP 标头:之前生成的令牌,采用
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
设置完成后,Feed 会开始按时间顺序从 Thinkst Canary 实例检索日志。
突发事件更新和重新传送
Canary 控制台 API 会在每次更新突发事件时(而不仅仅是在创建突发事件时)返回突发事件。Canary 会将来自同一来源的后续类似事件归入现有突发事件。例如,每次暴力攻击尝试都会成为单个突发事件中的一个事件。其他突发事件修改也可能会触发重新交付。
在 Google SecOps 中,您会看到以下行为:
- 已交付的突发事件在更新后会重新显示在 Feed 中。
- 重新传送的突发事件可能会显示的时间戳比重新传送的时间晚得多。这是因为解析器从突发事件的原始创建时间和捆绑事件自身的发生时间(而非更新时间)派生出事件时间戳。
重新传送本身是突发事件收集 API 的记录行为(它会根据突发事件的更新计数器进行过滤),而不是数据丢失或解析器缺陷。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
_canary_uptime_label |
additional.fields |
已合并 |
desc_events_n_func_code_label |
additional.fields |
已合并 |
desc_events_n_func_name_label |
additional.fields |
已合并 |
desc_events_n_sfunc_code_label |
additional.fields |
已合并 |
desc_events_n_sfunc_name_label |
additional.fields |
已合并 |
desc_events_n_timestamp_std_label |
additional.fields |
已合并 |
desc_events_n_unit_id_label |
additional.fields |
已合并 |
description_created_std_label |
additional.fields |
已合并 |
description_events_list_label |
additional.fields |
已合并 |
event_data_list |
additional.fields |
已合并 |
event_descrip_label |
additional.fields |
已合并 |
events_url_label |
additional.fields |
已合并 |
local_time_label |
additional.fields |
已合并 |
locale_label |
additional.fields |
已合并 |
lt_label |
additional.fields |
已合并 |
offline_text_label |
additional.fields |
已合并 |
updated_label |
additional.fields |
已合并 |
updated_std_label |
additional.fields |
已合并 |
_auth |
extensions.auth |
已重命名/已映射 |
_metadata |
metadata |
已重命名/已映射 |
_event_time |
metadata.event_timestamp |
解析为 UNIX |
_metadata_event_timestamp |
metadata.event_timestamp |
解析为 UNIX |
description.created_std |
metadata.event_timestamp |
解析为 UNIX_MS |
elem.timestamp_std |
metadata.event_timestamp |
解析为 yyyy-MM-dd HH:mm:ss ZZZ+0000 |
updated |
metadata.event_timestamp |
解析为 EEE, dd MMM yyyy HH:mm:ss ZZZ |
updated_std |
metadata.event_timestamp |
解析为 UNIX_MS |
format |
metadata.event_type |
已映射:grok → STATUS_UPDATE、grok → GENERIC_EVENT |
has_principal_hostname |
metadata.event_type |
已映射:true → STATUS_UPDATE |
_network |
network |
已重命名/已映射 |
_observer |
observer |
已重命名/已映射 |
_principal |
principal |
已重命名/已映射 |
ThinkstCanary_Process |
principal.application |
直接映射 |
ThinkstCanary_Process |
principal.asset.hostname |
直接映射 |
ThinkstCanary_Hostname |
principal.hostname |
直接映射 |
_md_product_event_type |
security_result |
映射的值(总共 10 个,例如 Shared File Opened → _security_result、Host Port Scan → … |
_security_result |
security_result |
已合并 |
format |
security_result |
已映射:kv → _security_result,json → _security_result |
_source |
src |
已重命名/已映射 |
_target |
target |
已重命名/已映射 |
| 不适用 | metadata.event_type |
常量:STATUS_UPDATE |