收集 Microsoft System Center Endpoint Protection (SCEP) 日志
本文档介绍了如何通过使用 Microsoft Azure Blob Storage V2 设置 Google Security Operations Feed 来收集 Microsoft System Center Endpoint Protection (SCEP) 日志。
Microsoft System Center Endpoint Protection (SCEP) 是一款与 System Center Configuration Manager (SCCM) 集成的企业级反恶意软件和防病毒解决方案。SCEP 可为基于 Windows 的端点提供实时保护,防范恶意软件、病毒、间谍软件和其他恶意软件。SCEP 会将安全性事件写入 Microsoft-Windows-Windows Defender/Operational Windows 事件日志通道,该通道可使用 Azure Monitor 代理进行收集并导出到 Azure Blob Storage。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例
- 对 Microsoft Azure 门户的特权访问权限,包括:
- 创建存储账号
- 创建和管理 Log Analytics 工作区
- 创建和管理数据收集规则
- 配置数据导出规则
- 管理访问密钥
- Windows Server 2012 R2 或更高版本(已安装 SCEP),或者 Windows Server 2016 或更高版本(已安装 Windows Defender 杀毒软件)
- 在 Windows 服务器上安装 Azure Monitor 代理(本地服务器需要 Azure Arc,Azure 虚拟机需要原生支持)
对部署了 SCEP 的 Windows 服务器拥有管理员访问权限
配置 Azure 存储账号
创建存储账号
- 在 Azure 门户中,搜索存储账号。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择现有组或创建新组 存储账号名称 输入一个唯一名称(例如 sceplogssa)区域 选择区域(例如 East US)性能 标准(推荐) 冗余 GRS(地理位置冗余存储)或 LRS(本地冗余存储) 点击检查 + 创建。
查看账号概览,然后点击创建。
等待部署完成。
获取存储账号凭证
- 前往您刚刚创建的存储账号。
- 在左侧导航栏中,选择安全性 + 网络下的访问密钥。
- 点击显示密钥。
- 复制并保存以下内容以供日后使用:
- Storage 账号名称:您创建的名称(例如
sceplogssa) - 密钥 1 或密钥 2:共享访问密钥(采用 base-64 编码的 512 位随机字符串)
- Storage 账号名称:您创建的名称(例如
获取 Blob 服务端点
- 在同一存储账号中,从左侧导航栏中选择端点。
- 复制并保存 Blob 服务端点网址。
- 示例:
https://sceplogssa.blob.core.windows.net/
- 示例:
创建 Log Analytics 工作区
- 在 Azure 门户中,搜索 日志分析工作区。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择与存储账号相同的资源组 名称 输入一个唯一名称(例如 scep-logs-workspace)区域 选择与存储账号相同的区域 点击检查 + 创建。
点击创建。
等待部署完成。
在 Windows 服务器上安装 Azure Monitor 代理
对于运行 SCEP 的本地服务器,您必须先将服务器添加到 Azure Arc,然后安装 Azure Monitor 代理。
加入 Azure Arc(仅限本地服务器)
- 在 Azure 门户中,搜索 Azure Arc。
- 选择基础架构下的服务器。
- 点击添加。
- 选择添加单个服务器,然后点击生成脚本。
- 提供以下配置详细信息:
- 订阅:选择您的 Azure 订阅
- 资源组:选择您的资源组
- 区域:选择与存储账号相同的区域
- 操作系统:选择 Windows
- 点击下载并运行脚本。
- 在运行 SCEP 的 Windows 服务器上,以管理员身份打开 PowerShell。
运行下载的脚本,完成 Azure Arc 初始配置。
安装 Azure Monitor 代理
- 在 Azure 门户中,前往 Azure Arc > 服务器(对于 Azure 虚拟机,则前往虚拟机)。
- 选择运行 SCEP 的服务器。
- 在左侧导航栏中,选择设置下的扩展程序。
- 点击添加。
- 搜索并选择 Azure Monitor Agent。
- 点击下一步,然后点击检查 + 创建。
- 点击创建。
- 等待扩展程序安装完成。
为 SCEP 事件创建数据收集规则
- 在 Azure 门户中,搜索监控。
- 选择设置下的数据收集规则。
- 点击 + 创建。
- 在基本信息标签页中,提供以下配置详细信息:
- 规则名称:输入一个描述性名称(例如
dcr-scep-events) - 订阅:选择您的 Azure 订阅
- 资源组:选择您的资源组
- 区域:选择与日志分析工作区相同的区域
- 平台类型:选择 Windows
- 规则名称:输入一个描述性名称(例如
- 点击下一步:资源。
- 在资源标签页中:
- 点击 + 添加资源。
- 展开资源组,然后选择运行 SCEP 的服务器(Azure Arc 服务器或 Azure 虚拟机)。
- 点击应用。
- 点击下一步:收集和交付。
在揽件和派送标签页中:
- 点击 + 添加数据源。
- 在数据源类型下拉菜单中,选择 Windows 事件日志。
- 选择自定义以输入 XPath 查询。
点击 + 添加 XPath 查询,然后输入以下 XPath 查询,以收集所有 SCEP 和 Windows Defender 事件:
Microsoft-Windows-Windows Defender/Operational!*[System[(Level=1 or Level=2 or Level=3 or Level=4 or Level=5)]]此 XPath 查询会从 Windows Defender Operational 渠道收集所有事件(严重、错误、警告、信息和详细)。如需仅收集特定事件 ID(例如恶意软件检测),请使用更具针对性的查询,例如:
Microsoft-Windows-Windows Defender/Operational!*[System[(EventID=1006 or EventID=1007 or EventID=1116 or EventID=1117 or EventID=2000 or EventID=2001 or EventID=5007)]]在目标标签页中,点击 + 添加目标。
选择 Azure Monitor 日志作为目标类型。
选择您之前创建的 Log Analytics 工作区(例如
scep-logs-workspace)。
点击添加数据源。
点击 Review + create(检查 + 创建)。
点击创建。
收集的关键事件 ID
数据收集规则会从 Microsoft-Windows-Windows Defender/Operational 通道收集事件,其中包括以下关键 SCEP 事件 ID:
| 事件 ID | 说明 |
|---|---|
| 1006 | 反恶意软件引擎检测到恶意软件 |
| 1007 | 针对检测到的恶意软件采取的反恶意软件措施 |
| 1116 | 实时保护功能检测到了恶意软件或潜在垃圾软件 |
| 1117 | 实时防护功能已对恶意软件采取措施 |
| 2000 | 已开始更新反恶意软件签名 |
| 2001 | 反恶意软件签名更新已完成 |
| 5007 | 反恶意软件平台配置已更改 |
配置从 Log Analytics 工作区到 Azure Blob Storage 的数据导出
注册 Microsoft.Insights 资源提供方
- 在 Azure 门户中,前往订阅。
- 选择您的订阅。
- 在左侧导航栏中,选择设置下的资源提供方。
- 搜索 Microsoft.Insights。
- 如果状态不是已注册,请选择该设备,然后点击注册。
创建数据导出规则
- 在 Azure 门户中,前往您的 日志分析工作区(例如
scep-logs-workspace)。 - 在左侧导航栏中,选择设置下的数据导出。
- 点击 + 新建导出规则。
- 在基本标签页中:
- 数据导出规则名称:输入一个描述性名称(例如
export-scep-to-blob)
- 数据导出规则名称:输入一个描述性名称(例如
- 点击下一步:来源。
在来源标签页中,选择事件表。
点击下一步:目标。
在目标标签页中:
- 目标类型:选择存储账号
- 订阅:选择包含存储账号的订阅
- 存储账号:选择您之前创建的存储账号(例如
sceplogssa)
点击下一步:检查 + 创建。
点击创建。
配置完成后,事件会自动导出到存储账号。系统会在存储账号中创建一个名为
am-Event的容器。Blob 存储在 5 分钟文件夹中,使用以下路径结构:am-Event/ └── WorkspaceResourceId=/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/microsoft.operationalinsights/workspaces/{workspace}/ └── y={year}/m={month}/d={day}/h={hour}/m={minute}/ └── PT05M.json
验证数据导出
- 在 Azure 门户中,前往存储账号(例如
sceplogssa)。 - 在左侧导航栏中,选择数据存储区下的容器。
- 验证容器
am-Event是否存在。 - 进入容器,验证是否正在文件夹结构中创建包含事件数据的 JSON 文件。
在 Google SecOps 中配置 Feed,以注入 Microsoft System Center Endpoint Protection (SCEP) 日志
- 依次前往设置 > 数据管理 > Feed。如果您使用的是仅 SIEM 平台,请依次前往设置 > Feed。
- 点击添加新新闻信息流。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Microsoft SCEP Logs)。 - 选择 Microsoft Azure Blob Storage V2 作为来源类型。
- 选择 Microsoft System Center Endpoint Protection (SCEP) 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- Azure URI:输入包含容器路径的 Blob Service 端点网址:
https://sceplogssa.blob.core.windows.net/am-Event/替换以下内容:
sceplogssa:您的 Azure 存储账号名称。am-Event:存储导出事件的 Blob 容器名称。
- 来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件。
- 删除已转移的文件:在成功转移后删除文件。
- 删除已转移的文件和空目录:在成功转移后删除文件和空目录。
- 文件存在时间上限:包含过去指定天数内修改过的文件(默认值为 180 天)
- 共享密钥:输入您从存储账号中获取的共享密钥值(访问密钥)
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
点击下一步。
在最终确定界面中查看新的新闻信息流配置,然后点击提交。
配置 Azure Storage 防火墙(如果已启用)
如果您的 Azure Storage 账号使用防火墙,则必须添加 Google SecOps IP 范围。
- 在 Azure 门户中,前往您的存储账号。
- 选择安全 + 网络下的网络。
- 在防火墙和虚拟网络下,选择已从所选虚拟网络和 IP 地址启用。
- 在防火墙部分的地址范围下,点击 + 添加 IP 范围。
以 CIDR 表示法添加每个 Google SecOps IP 范围。
如需获取当前的 IP 范围,请执行以下操作:
- 请参阅 IP 许可清单文档
- 或者使用 Feed Management API 以编程方式检索
此外,选中允许受信任的服务列表中的 Azure 服务访问此存储账号复选框,以允许 Log Analytics 工作区数据导出功能向存储账号写入数据。
点击保存。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| about.hostname | about.hostname | 设置为“%{_DB_HOST}” |
| _DB_PORT | about.port | 直接复制值,转换为整数 |
| _DB_DRIVER | about.resource.name | 设置为“%{_DB_DRIVER}” |
| _DB_URL | about.url | 设置为“%{_DB_URL}” |
| signature_labels | event.idm.read_only_udm.additional.fields | 如果 signature 不为空,则从 signature_labels 合并;如果 PendingAction 不为空,则从 pending_action 合并;如果 ExecutionStatus 不为空,则从 execution_status 合并;如果 RecordID 不为空,则从 record_id 合并;如果 ErrorCode 不为空,则从 error_code 合并;如果 ActionSuccess 不为空,则从 action_success 合并 |
| pending_action | event.idm.read_only_udm.additional.fields | |
| execution_status | event.idm.read_only_udm.additional.fields | |
| record_id | event.idm.read_only_udm.additional.fields | |
| error_code | event.idm.read_only_udm.additional.fields | |
| action_success | event.idm.read_only_udm.additional.fields | |
| source_url | event.idm.read_only_udm.src.url | 如果 source_url 不为空,则取 source_url 的值;否则,如果 my_string1 不为空,则取 my_string1 的值 |
| my_string1 | event.idm.read_only_udm.src.url | |
| has_principal | metadata.event_type | 如果 has_principal 和 has_target 为 true,则设置为“NETWORK_CONNECTION”;如果 has_principal 为 true,则设置为“STATUS_UPDATE”;如果 not no_target_host 和 path_available 为 true,则设置为“SCAN_FILE”;如果 not no_target_host 为 true,则设置为“STATUS_UNCATEGORIZED”;如果 has_user 为 true,则设置为“USER_UNCATEGORIZED”;否则设置为“GENERIC_EVENT” |
| has_user | metadata.event_type | |
| has_target | metadata.event_type | |
| no_target_host | metadata.event_type | |
| path_available | metadata.event_type | |
| 名称 | metadata.product_event_type | 直接复制的值 |
| DetectionID | metadata.product_log_id | 直接复制的值 |
| metadata.product_name | metadata.product_name | 设为“MICROSOFT SYSTEM CENTER ENDPOINT PROTECTION” |
| metadata.vendor_name | metadata.vendor_name | 设置为“MICROSOFT” |
| NTdomain | principal.administrative_domain | 直接复制的值 |
| 主机名 | principal.asset.hostname | 来自主机名的值(如果不为空),否则来自 TargetHost |
| TargetHost | principal.asset.hostname | |
| action_type | principal.group.attribute.labels | 如果 action_type 不为空,则从 action_type_label 合并 |
| 主机名 | principal.hostname | 来自主机名的值(如果不为空),否则来自 TargetHost |
| TargetHost | principal.hostname | |
| 流程 | principal.process.file.full_path | 如果“Process”不为空,则直接复制值 |
| 用户名 | principal.user.user_display_name | 直接复制的值 |
| 用户名 | principal.user.userid | UserName 的值(如果不为空),否则为 user 的值(如果不为空) |
| 用户 | principal.user.userid | |
| 操作 | security_result.action | 根据操作值(ALLOW 表示 success/created/started/delivered/allowed,BLOCK 表示 failure/blocked/teardown/deferred/deleted/rejected/dropped/error/locked,ALLOW_WITH_MODIFICATION 表示 acl_modified/modified,QUARANTINE 表示 quarantined)或 CleanAction(FAIL 表示 Failed,QUARANTINE 表示 Quarantined,ALLOW 表示 Allowed,BLOCK 表示 Blocked)进行设置 |
| CleanAction | security_result.action | |
| CleanAction | security_result.action_details | 如果 CleanAction 不为空,则直接复制值 |
| 类别 | security_result.category_details | 如果“category”不为空,则从“category”合并,否则从“Category”合并 |
| 类别 | security_result.category_details | |
| DetectionID | security_result.detection_fields | 如果 DetectionID 不为空,则从 DetectionID_field 合并;如果 detectionid 不为空,则从 detectionid_field 合并;如果 detection_source 不为空,则从 detection_source_labels 合并;如果 pending_action 不为空,则从 pending_action_labels 合并;如果 source_url、file_path 和 Path 不为空,则从 detection_Path 合并 |
| detectionid | security_result.detection_fields | |
| detection_source | security_result.detection_fields | |
| pending_action | security_result.detection_fields | |
| 路径 | security_result.detection_fields | |
| severity | security_result.severity | 根据严重程度(0/1/2/3/LOW 为 LOW,4/5/6/MEDIUM/SUBSTANTIAL/INFO 为 MEDIUM,7/8/HIGH/SEVERE 为 HIGH,9/10/VERY-HIGH/CRITICAL 为 CRITICAL)或 SeverityID(1 为 LOW,2 为 MEDIUM,4 为 HIGH,5 为 CRITICAL,其他为 UNKNOWN_SEVERITY)设置 |
| SeverityID | security_result.severity | |
| SeverityID | security_result.severity_details | 直接复制的值 |
| ThreatID | security_result.threat_id | 直接复制的值 |
| ThreatName | security_result.threat_name | 直接复制的值 |
| MaliciousFileCt | security_result.verdict_info | 直接复制值,转换为整数,合并为 malicious_file_ct |
| dest_nt_domain | target.administrative_domain | 直接复制的值 |
| dest_name | target.asset.hostname | 如果 dest_name 不为空,则直接复制值 |
| file_path | target.file.full_path | 如果 file_path 不为空,则为 file_path 中的值;如果 file_path 为空,则为 Path 中的值;如果 Path 为空,则为 my_string 中的值 |
| 路径 | target.file.full_path | |
| my_string | target.file.full_path | |
| dest_name | target.hostname | 如果 dest_name 不为空,则直接复制值 |
| ResourceID | target.resource.name | ResourceID 的值(如果不为空),否则为 resourceid 的值(如果不为空) |
| resourceid | target.resource.name | |
| 用户 | target.user.userid | 如果用户不为空,则直接复制值 |
| 时间 | metadata.event_timestamp | 如果时间不为空,则使用“MMM dd HH:mm:ss”格式从时间转换而来,否则使用 UNIX_MS 从 DetectionTime 或 detectiontime 转换而来 |
| DetectionTime | metadata.event_timestamp | |
| detectiontime | metadata.event_timestamp | |
time |
syslogtimestamp |
从更新日志映射 |
DetectionID", "detection_source", and "pending_action |
security_result.detection_fields |
从更新日志映射 |
action |
temp_action |
从更新日志映射 |