收集 Microsoft System Center Endpoint Protection (SCEP) 記錄
本文說明如何使用 Microsoft Azure Blob 儲存體 V2 設定 Google Security Operations 資訊提供,藉此收集 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 監視器代理程式收集,並匯出至 Azure Blob 儲存體。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備下列權限的 Microsoft Azure 入口網站特殊存取權:
- 建立儲存空間帳戶
- 建立及管理 Log Analytics 工作區
- 建立及管理資料收集規則
- 設定資料匯出規則
- 管理存取金鑰
- 已安裝 SCEP 的 Windows Server 2012 R2 以上版本,或已安裝 Windows Defender 防毒軟體的 Windows Server 2016 以上版本
- Windows 伺服器上安裝的 Azure 監視器代理程式 (地端部署伺服器需要 Azure Arc,或 Azure VM 的原生支援)
在部署 SCEP 的 Windows 伺服器上擁有管理員存取權
設定 Azure 儲存體帳戶
建立儲存空間帳戶
- 在 Azure 入口網站中,搜尋「儲存體帳戶」。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取現有資料庫或建立新資料庫 儲存體帳戶名稱 輸入不重複的名稱 (例如 sceplogssa)區域 選取區域 (例如 East US)效能 標準 (建議) 備援功能 GRS (異地備援儲存空間) 或 LRS (本機備援儲存空間) 按一下「Review + create」。
查看帳戶總覽,然後按一下「建立」。
等待部署作業完成。
取得儲存空間帳戶憑證
- 前往您剛建立的「儲存空間帳戶」。
- 在左側導覽中,選取「Security + networking」(安全性 + 網路) 下方的「Access keys」(存取金鑰)。
- 按一下「顯示金鑰」。
- 複製並儲存下列項目,以供日後使用:
- 儲存體帳戶名稱:您建立的名稱 (例如
sceplogssa) - 金鑰 1 或金鑰 2:共用存取金鑰 (採用 Base64 編碼的 512 位元隨機字串)
- 儲存體帳戶名稱:您建立的名稱 (例如
取得 Blob 服務端點
- 在同一個儲存空間帳戶中,選取左側導覽列的「Endpoints」(端點)。
- 複製並儲存 Blob 服務端點網址。
- 範例:
https://sceplogssa.blob.core.windows.net/
- 範例:
建立 Log Analytics 工作區
- 在 Azure 入口網站中,搜尋 記錄檔分析工作區。
- 點選「+ 建立」。
請提供下列設定詳細資料:
設定 值 訂閱項目 選取 Azure 訂閱項目 資源群組 選取與儲存空間帳戶相同的資源群組 名稱 輸入不重複的名稱 (例如 scep-logs-workspace)區域 選取與儲存空間帳戶相同的區域 按一下「檢查並建立」。
點選「建立」。
等待部署作業完成。
在 Windows 伺服器上安裝 Azure 監視器代理程式
如要使用執行 SCEP 的地端部署伺服器,您必須先將伺服器加入 Azure Arc,然後安裝 Azure 監視器代理程式。
將地端部署伺服器加入 Azure Arc
- 在 Azure 入口網站中,搜尋 Azure Arc。
- 選取「基礎架構」下方的「伺服器」。
- 按一下「+ 新增」。
- 選取「新增單一伺服器」,然後按一下「產生指令碼」。
- 請提供下列設定詳細資料:
- 訂閱項目:選取 Azure 訂閱項目
- 資源群組:選取資源群組
- 區域:選取與儲存空間帳戶相同的區域
- 作業系統:選取「Windows」
- 按一下「下載並執行指令碼」。
- 在執行 SCEP 的 Windows 伺服器上,以管理員身分開啟 PowerShell。
執行下載的指令碼,完成 Azure Arc 新手上路流程。
安裝 Azure Monitor 代理程式
- 在 Azure 入口網站中,依序前往「Azure Arc」>「伺服器」 (或 Azure VM 的「虛擬機器」)。
- 選取執行 SCEP 的伺服器。
- 在左側導覽中,選取「設定」下方的「擴充功能」。
- 按一下「+ 新增」。
- 搜尋並選取「Azure Monitor Agent」。
- 依序點選「下一步」和「檢閱 + 建立」。
- 點選「建立」。
- 等待擴充功能安裝完成。
為 SCEP 事件建立資料收集規則
- 在 Azure 入口網站中,搜尋「Monitor」。
- 選取「設定」下方的「資料收集規則」。
- 點選「+ 建立」。
- 在「基本」分頁中,提供下列設定詳細資料:
- 規則名稱:輸入描述性名稱,例如
dcr-scep-events。 - 訂閱項目:選取 Azure 訂閱項目
- 資源群組:選取資源群組
- 區域:選取與記錄檔分析工作區相同的區域
- 平台類型:選取「Windows」
- 規則名稱:輸入描述性名稱,例如
- 按一下「下一步:資源」。
- 在「資源」分頁中:
- 按一下「+ 新增資源」。
- 展開資源群組,然後選取執行 SCEP 的伺服器 (Azure Arc 伺服器或 Azure VM)。
- 按一下「套用」。
- 按一下「下一步:收取和交付」。
在「收取和運送」分頁中:
- 按一下「+ 新增資料來源」。
- 在「資料來源類型」下拉式選單中,選取「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 Logs」(Azure 監視器記錄) 做為「Destination type」(目的地類型)。
選取您先前建立的記錄檔分析工作區 (例如
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 儲存體
註冊 Microsoft.Insights 資源提供者
- 在 Azure 入口網站中,前往「訂閱項目」。
- 選取訂閱方案。
- 在左側導覽中,選取「設定」下方的「資源供應商」。
- 搜尋「Microsoft.Insights」Microsoft.Insights。
- 如果狀態不是「已註冊」,請選取該 CMP,然後按一下「註冊」。
建立資料匯出規則
- 在 Azure 入口網站中,前往 記錄檔分析工作區 (例如
scep-logs-workspace)。 - 在左側導覽選單中,選取「設定」下方的「資料匯出」。
- 按一下「+ 新增匯出規則」。
- 在「Basics」(基本) 分頁中:
- 資料匯出規則名稱:輸入描述性名稱,例如
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 中設定資訊提供,以便擷取 Microsoft System Center Endpoint Protection (SCEP) 記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Microsoft SCEP Logs)。 - 選取「Microsoft Azure Blob Storage V2」做為「來源類型」。
- 選取「Microsoft System Center Endpoint Protection (SCEP)」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- Azure URI:輸入 Blob 服務端點網址和容器路徑:
https://sceplogssa.blob.core.windows.net/am-Event/更改下列內容:
sceplogssa:您的 Azure 儲存體帳戶名稱。am-Event:儲存匯出事件的 Blob 容器名稱。
- 來源刪除選項:根據偏好選取刪除選項:
- 永不:轉移後一律不刪除任何檔案。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空白目錄:成功轉移檔案後,刪除檔案和空白目錄。
- 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
- 共用金鑰:輸入從儲存空間帳戶擷取的共用金鑰值 (存取金鑰)
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
設定 Azure 儲存空間防火牆 (如已啟用)
如果 Azure 儲存體帳戶使用防火牆,您必須新增 Google SecOps IP 範圍。
- 在 Azure 入口網站中,前往「儲存體帳戶」。
- 選取「Security + networking」(安全性 + 網路) 下方的「Networking」(網路)。
- 在「防火牆和虛擬網路」下方,選取「從所選虛擬網路和 IP 位址啟用」。
- 在「防火牆」部分的「位址範圍」下方,按一下「+ 新增 IP 範圍」。
以 CIDR 標記法新增每個 Google SecOps IP 範圍。
如要取得目前的 IP 範圍,請按照下列步驟操作:
- 請參閱 IP 許可清單說明文件
- 或使用 Feed Management API 以程式輔助方式擷取
此外,請選取「Allow Azure services on the trusted services list to access this storage account」(允許受信任服務清單上的 Azure 服務存取這個儲存體帳戶) 核取方塊,允許記錄檔分析工作區資料匯出作業寫入儲存體帳戶。
按一下 [儲存]。
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_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 不是空白,則取用該值,否則取用 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」;如果 no_target_host 為 false 且 path_available 為 true,則設為「SCAN_FILE」;如果 no_target_host 為 false,則設為「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 | 如果「程序」不為空白,則直接複製值 |
| 使用者名稱 | principal.user.user_display_name | 直接複製值 |
| 使用者名稱 | principal.user.userid | 如果 UserName 有值,則使用該值;否則使用 user 的值 (如果有的話) |
| 使用者 | principal.user.userid | |
| 動作 | security_result.action | 根據動作值設定 (ALLOW 代表成功/已建立/已啟動/已傳送/已允許,BLOCK 代表失敗/已封鎖/已終止/已延遲/已刪除/已拒絕/已捨棄/錯誤/已鎖定,ALLOW_WITH_MODIFICATION 代表 acl_modified/modified,QUARANTINE 代表已隔離) 或 CleanAction (FAIL 代表失敗,QUARANTINE 代表已隔離,ALLOW 代表已允許,BLOCK 代表已封鎖) |
| CleanAction | security_result.action | |
| CleanAction | security_result.action_details | 如果 CleanAction 不為空白,則直接複製值 |
| category | security_result.category_details | 如果類別不為空白,則從類別合併,否則從「類別」合併 |
| 類別 | 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 | |
| 嚴重性 | 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 (如果 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 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。