收集 CrowdStrike Falcon Stream 記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何使用 Bindplane 收集 CrowdStrike Falcon Stream 記錄。剖析器會擷取鍵/值組合,並對應至 Unified Data Model (UDM),處理不同的分隔符號,並以嚴重程度和事件類型等額外背景資訊豐富資料。此外,系統也會針對特定事件類型和欄位執行特定轉換,例如使用者登入和安全性結果。
事前準備
- 確認您有 Google Security Operations 執行個體。
- 確認您使用的是 Windows 2016 以上版本,或是搭載
systemd
的 Linux 主機。 - 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟。
- 確認您擁有 CrowdStrike Falcon 控制台的特殊權限。
- 取得 Falcon Stream 的 API 憑證 (用戶端 ID 和用戶端密鑰)。
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
Windows 安裝
- 以系統管理員身分開啟「命令提示字元」或「PowerShell」。
執行下列指令:
msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安裝
- 開啟具有根層級或 sudo 權限的終端機。
執行下列指令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/Bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安裝資源
- 如需其他安裝選項,請參閱這份安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
存取設定檔:
- 找出
config.yaml
檔案。通常位於 Linux 的/etc/Bindplane-agent/
目錄,或 Windows 的安裝目錄。 - 使用文字編輯器 (例如
nano
、vi
或記事本) 開啟檔案。
- 找出
按照下列方式編輯
config.yaml
檔案:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: SYSLOG namespace: cs_stream raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
- 視基礎架構需求,替換通訊埠和 IP 位址。
- 將
<customer_id>
替換為實際的客戶 ID。 - 將
/path/to/ingestion-authentication-file.json
更新為「取得 Google SecOps 擷取驗證檔案」一節中儲存驗證檔案的路徑。
重新啟動 Bindplane 代理程式,以套用變更
如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:
sudo systemctl restart Bindplane-agent
如要在 Windows 中重新啟動 Bindplane 代理程式,可以使用「服務」控制台,或輸入下列指令:
net stop BindplaneAgent && net start BindplaneAgent
設定及取得 CrowdStrike API 金鑰
- 使用具備權限的帳戶登入 CrowdStrike Falcon。
- 依序前往「選單」>「支援」。
- 依序點選「API 用戶端」>「金鑰」。
- 按一下「新增 API 用戶端」。
- 在「API 範圍」部分,選取「事件串流」,然後啟用「讀取」選項。
- 按一下「新增」。
- 複製並儲存用戶端 ID、用戶端密碼和基本網址。
安裝 Falcon SIEM Connector
- 根據所用的作業系統下載 RPM 安裝程式套件。
安裝套件:
CentOS 作業系統:
sudo rpm -Uvh <installer package>
Ubuntu 作業系統:
sudo dpkg -i <installer package>
預設安裝目錄:
- Falcon SIEM 連接器 -
/opt/crowdstrike/
。 - 服務 -
/etc/init.d/cs.falconhoseclientd/
。
- Falcon SIEM 連接器 -
設定 SIEM 連接器,將事件轉送至 Bindplane
- 以
sudo
使用者身分登入已安裝 SIEM 連接器的電腦。 - 前往
/opt/crowdstrike/etc/
目錄。 - 將
cs.falconhoseclient.leef.cfg
重新命名為cs.falconhoseclient.cfg
。- SIEM 連接器預設使用
cs.falconhoseclient.cfg
設定。
- SIEM 連接器預設使用
- 編輯
cs.falconhoseclient.cfg
檔案,並修改或設定下列參數:api_url:
- 您在上一步複製的 CrowdStrike Falcon 基礎網址。app_id:
- 任何字串,做為連線至 Falcon Streaming API 的 ID;例如,設為app_id: SECOPS-LEEF
。client_id:
:從上一個步驟複製的client_id
值。client_secret:
:從上一個步驟複製的client_secret
值。send_to_syslog_server: true
- 啟用推送至 Syslog 伺服器。host:
- Bindplane 代理程式的 IP 或主機名稱。port:
- Bindplane 代理程式的通訊埠。
- 儲存
cs.falconhoseclient.cfg
檔案。 啟動 SIEM 連接器服務:
CentOS 作業系統:
sudo service cs.falconhoseclientd start
Ubuntu 16.04 以上版本作業系統:
sudo systemctl start cs.falconhoseclientd.service
選用:停止 SIEM 連接器服務:
CentOS 作業系統:
sudo service cs.falconhoseclientd stop
Ubuntu 16.04 以上版本作業系統:
sudo systemctl stop cs.falconhoseclientd.service
選用:重新啟動 SIEM 連接器服務:
CentOS 作業系統:
sudo service cs.falconhoseclientd restart
Ubuntu 16.04 以上版本作業系統:
sudo systemctl restart cs.falconhoseclientd.service
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
cat |
security_result.category_details |
cat 欄位的值會直接對應至 security_result.category_details 欄位。 |
commandLine |
target.process.command_line |
commandLine 欄位的值會直接對應至 target.process.command_line 欄位。 |
cs1 |
security_result.summary |
如果 cs1Label 是「incidentType」,cs1 的值會對應至 security_result.summary 。否則,系統會將其對應為 security_result.detection_fields 中的鍵/值組合,並以 cs1Label 中的鍵和 cs1 中的值做為鍵/值組合。 |
cs1Label |
security_result.detection_fields.key |
當 cs1 不是事件類型時,用做 security_result.detection_fields 中的鍵。 |
cs2 |
security_result.detection_fields.value |
在 security_result.detection_fields 中對應為鍵/值組合,其中鍵來自 cs2Label ,值來自 cs2 。 |
cs2Label |
security_result.detection_fields.key |
與 cs2 一併做為 security_result.detection_fields 中的鍵。 |
cs3 |
security_result.detection_fields.value |
在 security_result.detection_fields 中對應為鍵/值組合,其中鍵來自 cs3Label ,值來自 cs3 。 |
cs3Label |
security_result.detection_fields.key |
與 cs3 一併做為 security_result.detection_fields 中的鍵。 |
cs4 |
security_result.about.url |
如果 cs4Label 是「falconHostLink」,cs4 的值會對應至 security_result.about.url 。否則,系統會將其對應為 security_result.detection_fields 中的鍵/值組合,並以 cs4Label 中的鍵和 cs4 中的值做為鍵/值組合。 |
cs4Label |
security_result.detection_fields.key |
當 cs4 不是 falconHostLink 時,會做為 security_result.detection_fields 中的鍵。 |
description |
metadata.description |
description 欄位的值會直接對應至 metadata.description 欄位。如果為空白,則會改用 incidentDescription 、msg 或 serviceName 。 |
devTime |
metadata.event_timestamp |
系統會剖析 devTime 欄位的值,並對應至 metadata.event_timestamp 欄位。 |
deviceCustomDate1 |
metadata.event_timestamp |
如果沒有 devTime ,系統會剖析 deviceCustomDate1 欄位的值,並對應至 metadata.event_timestamp 欄位。 |
domain |
principal.administrative_domain |
使用規則運算式從 userName 欄位擷取,並對應至 principal.administrative_domain 。 |
duser |
principal.user.userid |
如果存在,duser 的值會覆寫 usrName 欄位,並用於填入使用者欄位。 |
endpointName |
security_result.detection_fields.value |
在 security_result.detection_fields 中以鍵/值組合的形式對應,索引鍵為「endpointName」。 |
eventType |
metadata.product_event_type |
eventType 欄位的值會直接對應至 metadata.product_event_type 欄位。 |
falconHostLink |
security_result.about.url |
falconHostLink 欄位的值會直接對應至 security_result.about.url 欄位。 |
filePath |
target.process.file.full_path |
filePath 欄位的值會直接對應至 target.process.file.full_path 欄位。 |
identityProtectionIncidentId |
security_result.detection_fields.value |
在 security_result.detection_fields 中以鍵/值組合形式對應,索引鍵為「identityProtectionIncidentId」。 |
incidentDescription |
metadata.description |
如果 description 為空,incidentDescription 欄位的值會對應至 metadata.description 欄位。 |
incidentType |
security_result.summary |
incidentType 欄位的值會直接對應至 security_result.summary 欄位。 |
log_type |
metadata.log_type |
log_type 欄位的值會直接對應至 metadata.log_type 欄位。 |
msg |
metadata.description |
如果 description 和 incidentDescription 為空,msg 欄位的值會對應至 metadata.description 欄位。 |
numbersOfAlerts |
security_result.detection_fields.value |
在 security_result.detection_fields 中以鍵/值組合形式對應,且鍵為「numbersOfAlerts」。 |
numberOfCompromisedEntities |
security_result.detection_fields.value |
在 security_result.detection_fields 中以鍵/值組合的形式對應,索引鍵為「numberOfCompromisedEntities」。 |
product |
metadata.product_name |
product 欄位的值會直接對應至 metadata.product_name 欄位。 |
resource |
target.resource.name |
resource 欄位的值會直接對應至 target.resource.name 欄位。 |
serviceName |
target.application |
serviceName 欄位的值會直接對應至 target.application 欄位。也可用於 metadata.description 的備用選項。 |
severityName |
security_result.severity |
severityName 欄位的值會先轉換為大寫,再對應至 security_result.severity 欄位。對應邏輯包含不同嚴重程度名稱的特定轉換。 |
sha256 |
target.file.sha256 |
sha256 欄位的值會直接對應至 target.file.sha256 欄位。 |
src |
principal.ip |
src 欄位的值會直接對應至 principal.ip 欄位。 |
srcMAC |
principal.mac |
以半形冒號取代連字號後,srcMAC 欄位的值會直接對應至 principal.mac 欄位。 |
state |
security_result.detection_fields.value |
在 security_result.detection_fields 中以鍵/值組合形式對應,索引鍵為「state」。 |
success |
security_result.action |
如果 success 為「true」,security_result.action 會設為「ALLOW」。如果 success 為「false」,security_result.action 會設為「BLOCK」。 |
userName |
principal.user.userid |
如果沒有 usrName ,系統會使用 userName 欄位的值填入使用者欄位。如果存在,系統會擷取網域。 |
usrName |
principal.user.userid /target.user.userid |
如有,usrName 欄位的值會根據 eventType 對應至 principal.user.userid 或 target.user.userid 。如果是電子郵件地址,系統也會將其新增至對應的 email_addresses 欄位。 |
vendor |
metadata.vendor_name |
vendor 欄位的值會直接對應至 metadata.vendor_name 欄位。 |
version |
metadata.product_version |
version 欄位的值會直接對應至 metadata.product_version 欄位。 |
(剖析器邏輯) | extensions.auth.mechanism |
如果 eventType 是「saml2Assert」或「twoFactorAuthenticate」,請設為「USERNAME_PASSWORD」。 |
(剖析器邏輯) | extensions.auth.type |
如果 eventType 是「assert」或「userAuthenticate」,請設為「AUTHTYPE_UNSPECIFIED」。 |
(剖析器邏輯) | metadata.event_timestamp |
原始記錄的 collection_time 或 timestamp 欄位中的時間戳記會做為事件時間戳記。 |
(剖析器邏輯) | metadata.event_type |
根據 eventType 和其他欄位判斷。預設為「GENERIC_EVENT」,可變更為「USER_LOGIN」、「GROUP_MODIFICATION」、「GROUP_DELETION」、「SERVICE_STOP」、「SERVICE_START」或「USER_UNCATEGORIZED」。 |
(剖析器邏輯) | target.resource.type |
如果 eventType 是「remove_group」、「update_group」或「delete_group」,請設為「GROUP」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。