收集 iOS 设备上的 Microsoft Defender for Endpoint 日志
本文档介绍了如何通过使用 Microsoft Azure Blob Storage V2 设置 Google SecOps Feed 来收集 Microsoft Defender for Endpoint on iOS 日志。
iOS 版 Microsoft Defender for Endpoint 是一款移动威胁防御解决方案,可保护 iOS 设备免遭钓鱼式攻击、不安全的网络连接和恶意应用的侵害。它使用本地 VPN 提供网络保护,并与 Microsoft Intune 集成以进行设备管理。来自 iOS 设备的事件会捕获到与 Defender for Endpoint 其他平台相同的“高级搜寻”表中,包括 DeviceEvents、DeviceInfo、DeviceLogonEvents 和 DeviceNetworkEvents。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例
- 对 Microsoft Azure 门户的特权访问权限,包括:
- 创建存储账号
- 配置诊断设置(针对 Azure 服务)
- 管理访问密钥
- 对 Microsoft Defender 门户的访问权限,包括:
- 配置数据导出设置
- 管理 Microsoft Defender XDR 设置
- 搭载 iOS 16.0 或更高版本的 iOS 设备
通过 Intune 公司门户注册或通过 Microsoft Authenticator 注册的设备
配置 Azure 存储账号
创建存储账号
- 在 Azure 门户中,搜索存储账号。
- 点击 + 创建。
提供以下配置详细信息:
设置 值 订阅 选择您的 Azure 订阅 资源组 选择现有组或创建新组 存储账号名称 输入唯一名称(例如 defenderioslogssa)区域 选择区域(例如 East US)性能 标准(推荐) 冗余 GRS(地理位置冗余存储)或 LRS(本地冗余存储) 点击检查 + 创建。
查看账号概览,然后点击创建。
等待部署完成。
获取存储账号凭据
- 前往您刚刚创建的存储账号。
- 在左侧导航栏中,选择安全性 + 网络下的访问密钥。
- 点击显示密钥。
- 复制并保存以下内容以供日后使用:
- 存储账号名称:您创建的名称(例如
defenderioslogssa) - 密钥 1 或密钥 2:共享访问密钥(采用 base-64 编码的 512 位随机字符串)
- 存储账号名称:您创建的名称(例如
获取 Blob 服务端点
- 在同一存储账号中,从左侧导航栏中选择端点。
- 复制并保存 Blob 服务端点网址。
- 示例:
https://defenderioslogssa.blob.core.windows.net/
- 示例:
获取存储账号资源 ID
- 在同一存储账号中,从左侧导航栏中选择属性。
- 向下滚动,找到存储账号资源 ID。
- 点击资源 ID 旁边的复制图标,并保存以备后用。
- 示例:
/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/defenderioslogssa
- 示例:
配置 Microsoft Defender for Endpoint 数据导出
- 登录 Microsoft Defender 门户 (
https://security.microsoft.com)。 - 依次前往设置 > Microsoft Defender XDR > 数据导出设置。
- 点击 + 添加数据导出设置。
- 在名称字段中,输入一个描述性名称(例如
Export to Chronicle)。 - 在将事件转发到部分中,选择 Azure Storage。
- 在存储账号资源 ID 字段中,粘贴您之前复制的存储账号资源 ID。
在选择事件部分中,选择要导出的事件类型。如需全面监控 iOS 设备,请选择以下选项:
- DeviceEvents:一般设备事件,包括应用启动和系统事件
- DeviceInfo:设备清点信息,包括操作系统版本和设备属性
- DeviceLogonEvents:登录和身份验证事件
- DeviceNetworkEvents:网络连接和网络保护事件
- DeviceProcessEvents:处理进程创建和终止事件
- DeviceFileEvents:文件创建、修改和删除事件
- AlertInfo:来自 Defender for Endpoint 的提醒元数据
- AlertEvidence:与提醒关联的证据
点击保存。
配置完成后,Microsoft Defender for Endpoint 会开始将事件导出到您的 Azure 存储账号。事件按以下命名模式整理到 Blob 容器中:
deviceeventsdeviceinfodevicelogoneventsdevicenetworkeventsdeviceprocesseventsdevicefileeventsalertinfoalertevidence
每个容器都会以按日期和时间整理的分层文件夹结构来存储事件:
container-name/ └── year=YYYY/month=MM/day=DD/hour=HH/ └── [event-files].json
在 Google SecOps 中配置 Feed 以注入 Microsoft Defender for Endpoint on iOS 日志
您需要为每个活动类型容器单独创建一个 Feed。针对要注入的每个容器重复以下步骤。
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Defender iOS - DeviceEvents)。 - 选择 Microsoft Azure Blob Storage V2 作为来源类型。
- 选择 iOS 版 Microsoft Defender for Endpoint 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- Azure URI:输入包含容器路径的 Blob 服务端点网址:
https://defenderioslogssa.blob.core.windows.net/deviceevents/替换以下内容:
defenderioslogssa:您的 Azure 存储账号名称。deviceevents:相应事件类型的 blob 容器名称。
- 来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件。
- 删除已转移的文件:在成功转移后删除文件。
- 删除已转移的文件和空目录:成功转移后删除文件和空目录。
- 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)
- 共享密钥:输入您从存储账号中捕获的共享密钥值(访问密钥)
- 资产命名空间:资产命名空间
- 注入标签:要应用于相应 Feed 中事件的标签(例如
defender_ios)
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
针对要注入的每个事件类型容器(例如 deviceinfo、devicelogonevents、devicenetworkevents 等)重复执行上述步骤。使用描述性 Feed 名称来区分事件类型。
配置 Azure 存储防火墙(如果已启用)
如果您的 Azure 存储账号使用防火墙,则必须添加 Google SecOps IP 范围。
- 在 Azure 门户中,前往您的存储账号。
- 在安全性 + 网络下,选择网络。
- 在防火墙和虚拟网络下,选择从所选虚拟网络和 IP 地址启用。
- 在防火墙部分的地址范围下,点击 + 添加 IP 范围。
以 CIDR 表示法添加每个 Google SecOps IP 范围。
如需获取当前的 IP 范围,请执行以下操作:
- 请参阅 IP 许可名单文档
- 或者使用 Feed Management API 以编程方式检索这些信息
点击保存。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| _TimeReceivedBySvc | additional.fields | 与根据每个来源字段创建的标签合并 |
| properties.InitiatingProcessUniqueId | additional.fields | |
| properties.MachineGroup | additional.fields | |
| properties.IsProcessRemoteSession | additional.fields | |
| properties.IsInitiatingProcessRemoteSession | additional.fields | |
| properties.InitiatingProcessSessionId | additional.fields | |
| properties.InitiatingProcessParentCreationTime | additional.fields | |
| properties.InitiatingProcessVersionInfoOriginalFileName | additional.fields | |
| properties.InitiatingProcessVersionInfoFileDescription | additional.fields | |
| properties.InitiatingProcessVersionInfoInternalFileName | additional.fields | |
| properties.InitiatingProcessVersionInfoProductName | additional.fields | |
| properties.AdditionalFields | additional.fields | |
| properties.DeliveryAction | additional.fields | |
| properties.DeliveryLocation | additional.fields | |
| properties.EmailAction | additional.fields | |
| properties.EmailActionPolicy | additional.fields | |
| properties.EmailActionPolicyGuid | additional.fields | |
| properties.AttachmentCount | additional.fields | |
| properties.UrlCount | additional.fields | |
| properties.EmailLanguage | additional.fields | |
| properties.EmailClusterId | additional.fields | |
| properties.Connectors | additional.fields | |
| properties.OrgLevelAction | additional.fields | |
| properties.OrgLevelPolicy | additional.fields | |
| properties.UserLevelAction | additional.fields | |
| properties.UserLevelPolicy | additional.fields | |
| properties.ConfidenceLevel | additional.fields | |
| SPF | additional.fields | |
| DKIM | additional.fields | |
| DMARC | additional.fields | |
| CompAuth | additional.fields | |
| properties.BulkComplaintLevel | additional.fields | |
| has_email | metadata.event_type | 如果 has_email 为 true,则设置为“EMAIL_TRANSACTION”;否则,如果 has_principal 和 has_target 为 true,则设置为“NETWORK_CONNECTION”;否则,如果 has_principal 为 true 且 has_target 为 false,则设置为“STATUS_UPDATE”;否则,设置为“GENERIC_EVENT” |
| has_principal | metadata.event_type | |
| has_target | metadata.event_type | |
| tenantId | metadata.product_deployment_id | 直接复制值 |
| operationName | metadata.product_event_type | 直接复制值 |
| properties.InitiatingProcessVersionInfoProductVersion | metadata.product_version | 直接复制值 |
| properties.EmailDirection | network.direction | 如果等于“Inbound”,则设置为“INBOUND” |
| properties.SenderFromAddress | network.email.from | 直接复制值 |
| properties.InternetMessageId | network.email.mail_id | 直接复制值 |
| properties.Subject | network.email.subject | 从 properties.Subject 合并 |
| properties.RecipientEmailAddress | network.email.to | 从 properties.RecipientEmailAddress 合并 |
| properties.SenderFromDomain | principal.administrative_domain | 如果 properties.SenderFromDomain 不为空,则返回该值;否则返回 properties.InitiatingProcessAccountDomain |
| properties.InitiatingProcessAccountDomain | principal.administrative_domain | |
| properties.DeviceId | principal.asset.asset_id | 串联为“DeviceId:%{properties.DeviceId}” |
| properties.DeviceName | principal.asset.hostname | 直接复制值 |
| properties.SenderIPv4 | principal.asset.ip | 从 properties.SenderIPv4 和 properties.SenderIPv6 合并 |
| properties.SenderIPv6 | principal.asset.ip | |
| properties.DeviceName | principal.hostname | 直接复制值 |
| properties.SenderIPv4 | principal.ip | 从 properties.SenderIPv4 和 properties.SenderIPv6 合并 |
| properties.SenderIPv6 | principal.ip | |
| properties.InitiatingProcessCommandLine | principal.process.command_line | 直接复制值 |
| properties.InitiatingProcessFolderPath | principal.process.file.full_path | 直接复制值 |
| properties.InitiatingProcessMD5 | principal.process.file.md5 | 直接复制值 |
| properties.InitiatingProcessFileName | principal.process.file.names | 从属性合并。InitiatingProcessFileName |
| properties.InitiatingProcessSHA1 | principal.process.file.sha1 | 直接复制值 |
| properties.InitiatingProcessSHA256 | principal.process.file.sha256 | 如果与十六进制正则表达式匹配,则直接复制值 |
| properties.InitiatingProcessParentFileName | principal.process.parent_process.file.full_path | 直接复制值 |
| properties.InitiatingProcessParentId | principal.process.parent_process.pid | 已转换为字符串 |
| properties.InitiatingProcessId | principal.process.pid | 已转换为字符串 |
| properties.InitiatingProcessCreationTime | principal.resource.attribute.labels | 与根据每个来源字段创建的标签合并 |
| properties.InitiatingProcessParentCreationTime | principal.resource.attribute.labels | |
| properties.InitiatingProcessVersionInfoOriginalFileName | principal.resource.attribute.labels | |
| properties.InitiatingProcessVersionInfoFileDescription | principal.resource.attribute.labels | |
| properties.InitiatingProcessVersionInfoInternalFileName | principal.resource.attribute.labels | |
| properties.InitiatingProcessVersionInfoProductName | principal.resource.attribute.labels | |
| properties.InitiatingProcessLogonId | principal.resource.attribute.labels | |
| properties.SenderMailFromDomain | principal.user.attribute.labels | 已与根据属性创建的标签合并。SenderMailFromDomain |
| properties.InitiatingProcessVersionInfoCompanyName | principal.user.company_name | 直接复制值 |
| properties.InitiatingProcessAccountUpn | principal.user.email_addresses | 如果与电子邮件正则表达式匹配,则从 properties.InitiatingProcessAccountUpn、properties.SenderMailFromAddress、properties.SenderFromAddress 合并 |
| properties.SenderMailFromAddress | principal.user.email_addresses | |
| properties.SenderFromAddress | principal.user.email_addresses | |
| properties.SenderObjectId | principal.user.product_object_id | 直接复制值 |
| properties.SenderDisplayName | principal.user.user_display_name | 直接复制值 |
| properties.InitiatingProcessAccountName | principal.user.userid | 直接复制值 |
| properties.InitiatingProcessAccountSid | principal.user.windows_sid | 使用 grok 模式提取 |
| 类别 | security_result.category_details | 直接复制值 |
| properties.ReportId | security_result.detection_fields | 与根据每个来源字段创建的标签合并 |
| properties.NetworkMessageId | security_result.detection_fields | |
| properties.AppGuardContainerId | security_result.detection_fields | |
| 租户 | security_result.detection_fields | |
| properties.ActionType | security_result.summary | 直接复制值 |
| properties.ThreatTypes | security_result.threat_name | 如果 properties.ThreatTypes 不为空/null,则返回该值;否则,返回 properties.ThreatNames |
| properties.ThreatNames | security_result.threat_name | |
| properties.InitiatingProcessFileSize | target.process.file.size | 转换为字符串,然后再转换为无符号整数 |
| properties.ProcessTokenElevation | target.resource.attribute.labels | 已与根据属性创建的标签合并。ProcessTokenElevation |
| properties.RemoteUrl | target.url | 直接复制值 |
| properties.RecipientEmailAddress | target.user.email_addresses | 从 properties.RecipientEmailAddress 合并 |
| properties.RecipientObjectId | target.user.product_object_id | 直接复制值 |
| metadata.product_name | metadata.product_name | 设置为“Microsoft Defender Endpoint” |
| metadata.vendor_name | metadata.vendor_name | 设置为“MICROSOFT_DEFENDER_ENDPOINT_IOS” |
properties.DeviceName |
principal.hostname and principal.asset.hostname |
从变更日志映射 |
properties.Timestamp |
metadata.event_timestamp |
从变更日志映射 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。