Mengumpulkan log Streaming CrowdStrike Falcon
Dokumen ini menjelaskan cara mengumpulkan log CrowdStrike Falcon Stream menggunakan Bindplane. Parser mengekstrak pasangan nilai kunci dan memetakan ke Unified Data Model (UDM), menangani pemisah yang berbeda, dan memperkaya data dengan konteks tambahan seperti tingkat keparahan dan jenis peristiwa. Alat ini juga melakukan transformasi tertentu untuk jenis dan kolom peristiwa tertentu, seperti login pengguna dan hasil keamanan.
Sebelum Memulai
- Pastikan Anda memiliki instance Google Security Operations.
- Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
. - Jika berjalan di balik proxy, pastikan port firewall terbuka.
- Pastikan Anda memiliki akses dengan hak istimewa ke konsol CrowdStrike Falcon.
- Dapatkan kredensial API untuk Falcon Stream (Client ID dan Client Secret).
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Proses Transfer. Simpan file dengan aman di sistem tempat Bindplane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal agen Bindplane
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/Bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Referensi Penginstalan Tambahan
- Untuk opsi penginstalan tambahan, lihat panduan penginstalan ini.
Mengonfigurasi agen Bindplane untuk menyerap Syslog dan mengirimnya ke Google SecOps
Akses file konfigurasi:
- Temukan file
config.yaml
. Biasanya, file ini berada di direktori/etc/Bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Temukan file
Edit file
config.yaml
sebagai berikut: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
- Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
- Ganti
<customer_id>
dengan ID pelanggan yang sebenarnya. - Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Mendapatkan file autentikasi penyerapan Google SecOps.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart Bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindplaneAgent && net start BindplaneAgent
Mengonfigurasi dan mendapatkan Kunci API CrowdStrike
- Login ke CrowdStrike Falcon dengan akun yang memiliki hak istimewa.
- Buka Menu > Dukungan.
- Klik API Clients > KeysSelect.
- Klik Tambahkan klien API baru.
- Di bagian Cakupan API, pilih Aliran peristiwa, lalu aktifkan opsi Baca.
- Klik Tambahkan.
- Salin dan simpan Client ID, Client Secret, dan Base URL.
Menginstal Konektor Falcon SIEM
- Download paket penginstal RPM untuk sistem operasi Anda.
Penginstalan paket:
Sistem operasi CentOS:
sudo rpm -Uvh <installer package>
Sistem operasi Ubuntu:
sudo dpkg -i <installer package>
Direktori penginstalan default:
- Konektor Falcon SIEM -
/opt/crowdstrike/
. - Layanan -
/etc/init.d/cs.falconhoseclientd/
.
- Konektor Falcon SIEM -
Mengonfigurasi Konektor SIEM untuk meneruskan peristiwa ke Bindplane
- Login ke komputer dengan SIEM Connector yang terinstal sebagai pengguna
sudo
. - Buka direktori
/opt/crowdstrike/etc/
. - Mengganti nama
cs.falconhoseclient.leef.cfg
menjadics.falconhoseclient.cfg
.- Konektor SIEM menggunakan konfigurasi
cs.falconhoseclient.cfg
secara default.
- Konektor SIEM menggunakan konfigurasi
- Edit file
cs.falconhoseclient.cfg
dan ubah atau tetapkan parameter berikut:api_url:
- URL Dasar CrowdStrike Falcon Anda yang disalin dari langkah sebelumnya.app_id:
- String apa pun sebagai ID untuk terhubung ke Falcon Streaming API; misalnya, ditetapkan keapp_id: SECOPS-LEEF
.client_id:
- Nilaiclient_id
yang disalin dari langkah sebelumnya.client_secret:
- Nilaiclient_secret
yang disalin dari langkah sebelumnya.send_to_syslog_server: true
- Mengaktifkan push ke server Syslog.host:
- IP atau nama host agen Bindplane.port:
- Port agen Bindplane.
- Simpan file
cs.falconhoseclient.cfg
. Mulai layanan Konektor SIEM:
Sistem operasi CentOS:
sudo service cs.falconhoseclientd start
Sistem operasi Ubuntu 16.04 atau yang lebih baru:
sudo systemctl start cs.falconhoseclientd.service
Opsional: hentikan layanan Konektor SIEM:
Sistem operasi CentOS:
sudo service cs.falconhoseclientd stop
Sistem operasi Ubuntu 16.04 atau yang lebih baru:
sudo systemctl stop cs.falconhoseclientd.service
Opsional: mulai ulang layanan Konektor SIEM:
Sistem operasi CentOS:
sudo service cs.falconhoseclientd restart
Sistem operasi Ubuntu 16.04 atau yang lebih baru:
sudo systemctl restart cs.falconhoseclientd.service
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
cat |
security_result.category_details |
Nilai kolom cat dipetakan langsung ke kolom security_result.category_details . |
commandLine |
target.process.command_line |
Nilai kolom commandLine dipetakan langsung ke kolom target.process.command_line . |
cs1 |
security_result.summary |
Jika cs1Label adalah "incidentType", nilai cs1 akan dipetakan ke security_result.summary . Jika tidak, nilai akan dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci dari cs1Label dan nilai dari cs1 . |
cs1Label |
security_result.detection_fields.key |
Digunakan sebagai kunci di security_result.detection_fields jika cs1 bukan jenis insiden. |
cs2 |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci dari cs2Label dan nilai dari cs2 . |
cs2Label |
security_result.detection_fields.key |
Digunakan sebagai kunci di security_result.detection_fields bersama dengan cs2 . |
cs3 |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci dari cs3Label dan nilai dari cs3 . |
cs3Label |
security_result.detection_fields.key |
Digunakan sebagai kunci di security_result.detection_fields bersama dengan cs3 . |
cs4 |
security_result.about.url |
Jika cs4Label adalah "falconHostLink", nilai cs4 akan dipetakan ke security_result.about.url . Jika tidak, nilai akan dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci dari cs4Label dan nilai dari cs4 . |
cs4Label |
security_result.detection_fields.key |
Digunakan sebagai kunci di security_result.detection_fields jika cs4 bukan falconHostLink. |
description |
metadata.description |
Nilai kolom description dipetakan langsung ke kolom metadata.description . Jika kosong, incidentDescription atau msg atau serviceName akan digunakan. |
devTime |
metadata.event_timestamp |
Nilai kolom devTime diuraikan dan dipetakan ke kolom metadata.event_timestamp . |
deviceCustomDate1 |
metadata.event_timestamp |
Jika devTime tidak ada, nilai kolom deviceCustomDate1 akan diuraikan dan dipetakan ke kolom metadata.event_timestamp . |
domain |
principal.administrative_domain |
Diekstrak dari kolom userName menggunakan ekspresi reguler dan dipetakan ke principal.administrative_domain . |
duser |
principal.user.userid |
Jika ada, nilai duser akan menimpa kolom usrName , lalu digunakan untuk mengisi kolom pengguna. |
endpointName |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci "endpointName". |
eventType |
metadata.product_event_type |
Nilai kolom eventType dipetakan langsung ke kolom metadata.product_event_type . |
falconHostLink |
security_result.about.url |
Nilai kolom falconHostLink dipetakan langsung ke kolom security_result.about.url . |
filePath |
target.process.file.full_path |
Nilai kolom filePath dipetakan langsung ke kolom target.process.file.full_path . |
identityProtectionIncidentId |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci "identityProtectionIncidentId". |
incidentDescription |
metadata.description |
Jika description kosong, nilai kolom incidentDescription akan dipetakan ke kolom metadata.description . |
incidentType |
security_result.summary |
Nilai kolom incidentType dipetakan langsung ke kolom security_result.summary . |
log_type |
metadata.log_type |
Nilai kolom log_type dipetakan langsung ke kolom metadata.log_type . |
msg |
metadata.description |
Jika description dan incidentDescription kosong, nilai kolom msg akan dipetakan ke kolom metadata.description . |
numbersOfAlerts |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci "numbersOfAlerts". |
numberOfCompromisedEntities |
security_result.detection_fields.value |
Dipetakan sebagai key-value pair di security_result.detection_fields dengan kunci "numberOfCompromisedEntities". |
product |
metadata.product_name |
Nilai kolom product dipetakan langsung ke kolom metadata.product_name . |
resource |
target.resource.name |
Nilai kolom resource dipetakan langsung ke kolom target.resource.name . |
serviceName |
target.application |
Nilai kolom serviceName dipetakan langsung ke kolom target.application . Juga digunakan sebagai penggantian untuk metadata.description . |
severityName |
security_result.severity |
Nilai kolom severityName dipetakan ke kolom security_result.severity setelah diubah menjadi huruf besar. Logika pemetaan mencakup konversi tertentu untuk nama tingkat keparahan yang berbeda. |
sha256 |
target.file.sha256 |
Nilai kolom sha256 dipetakan langsung ke kolom target.file.sha256 . |
src |
principal.ip |
Nilai kolom src dipetakan langsung ke kolom principal.ip . |
srcMAC |
principal.mac |
Nilai kolom srcMAC dipetakan langsung ke kolom principal.mac setelah mengganti tanda hubung dengan titik dua. |
state |
security_result.detection_fields.value |
Dipetakan sebagai pasangan nilai kunci di security_result.detection_fields dengan kunci "state". |
success |
security_result.action |
Jika success "true", security_result.action ditetapkan ke "ALLOW". Jika success adalah "false", security_result.action ditetapkan ke "BLOCK". |
userName |
principal.user.userid |
Jika usrName tidak ada, nilai kolom userName akan digunakan untuk mengisi kolom pengguna. Domain diekstrak jika ada. |
usrName |
principal.user.userid /target.user.userid |
Jika ada, nilai kolom usrName akan dipetakan ke principal.user.userid atau target.user.userid , bergantung pada eventType . Jika berupa alamat email, alamat tersebut juga akan ditambahkan ke kolom email_addresses masing-masing. |
vendor |
metadata.vendor_name |
Nilai kolom vendor dipetakan langsung ke kolom metadata.vendor_name . |
version |
metadata.product_version |
Nilai kolom version dipetakan langsung ke kolom metadata.product_version . |
(Logika Parser) | extensions.auth.mechanism |
Tetapkan ke "USERNAME_PASSWORD" jika eventType adalah "saml2Assert" atau "twoFactorAuthenticate". |
(Logika Parser) | extensions.auth.type |
Tetapkan ke "AUTHTYPE_UNSPECIFIED" jika eventType adalah "assert" atau "userAuthenticate". |
(Logika Parser) | metadata.event_timestamp |
Stempel waktu dari kolom collection_time atau timestamp log mentah digunakan sebagai stempel waktu peristiwa. |
(Logika Parser) | metadata.event_type |
Ditentukan berdasarkan eventType dan kolom lainnya. Default-nya adalah "GENERIC_EVENT" dan dapat diubah menjadi "USER_LOGIN", "GROUP_MODIFICATION", "GROUP_DELETION", "SERVICE_STOP", "SERVICE_START", atau "USER_UNCATEGORIZED". |
(Logika Parser) | target.resource.type |
Tetapkan ke "GROUP" jika eventType adalah "remove_group", "update_group", atau "delete_group". |
Perubahan
2025-01-10
Peningkatan:
- Jika "OperationBlocked" adalah "true", pemetaan "security_result.action" ke "BLOCK".
- Jika "OperationBlocked" adalah "false", pemeta "security_result.action" ke "ALLOW".
- Jika "event_type" adalah "IdentityProtectionEvent", maka petakan "event_data.IncidentDescription" ke "security_result.summary".
- Jika "event_type" adalah "IdentityProtectionEvent", petakan "event_data.SeverityName" ke "security_result.severity".
2025-01-09
Peningkatan:
- Memetakan "event_data.Technique" ke "security_result.rule_name".
- Memetakan "event_data.CommandLine" ke "target.process.command_line".
- Jika "event_data.IOCType" adalah "ipv4", petakan "event_data.IOCValue" ke "target.ip" dan "target.asset.ip".
- Jika "event_data.IOCType" adalah "hash_sha256", maka pemetakan "event_data.IOCValue" ke "target.file.sha256".
2024-12-12
Peningkatan:
- Memetakan "event.SeverityName" ke "security_result.severity".
- Memetakan "event.Description" ke "security_result.summary".
- Memetakan "security_result.action" berdasarkan "event.PatternDispositionFlags.OperationBlocked".
2024-10-29
Peningkatan:
- Menambahkan dukungan untuk format log JSON.
- Memetakan "request" ke "network.http.referral_url".
- Memetakan "networkDetectionType" ke "security_result.detection_fields".
2022-07-18
Peningkatan:
- Menambahkan pemetaan berikut untuk log format LEEF:
- Kolom "version" dipetakan ke "metadata.product_version".
- Kolom "usrName" dan "userName" ke "principal.user.email_addresses" jika merupakan email, atau dipetakan ke "principal.user.userid".
- Kolom "severityName" dipetakan ke "security_result.severity".
- Kolom "cat" dipetakan ke "security_result.category_details".
- Kolom "incidentType" dipetakan ke "security_result.summary".
- Kolom "falconHostLink" dipetakan ke "security_result.about.url".
- Kolom "numberOfCompromisedEntities" dipetakan ke "security_result.detection_fields[n]".
- Kolom "identityProtectionIncidentId" dipetakan ke "security_result.detection_fields[n]".
- Kolom "numbersOfAlerts" dipetakan ke "security_result.detection_fields[n]".
- Kolom "state" dipetakan ke "security_result.detection_fields[n]".
- Menambahkan pemetaan berikut untuk log format CEF:
- Kolom "version" dipetakan ke "metadata.product_version".
- Kolom "deviceCustomDate1" dipetakan ke "metadata.event_type".
- Kolom "msg" dipetakan ke "metadata.description".
- Kolom "cs1" dipetakan ke "security_result.summary" jika nilai "cs1Label" adalah "incidentType", jika tidak, dipetakan ke "security_result.detection_fields[n]".
- Kolom "cs2" dipetakan ke "security_result.detection_fields[n]".
- Kolom "cs3" dipetakan ke "security_result.detection_fields[n]".
- Kolom "cs1" dipetakan ke "security_result.about.url" jika nilai "cs4Label" adalah "falconHostLink", jika tidak, dipetakan ke "security_result.detection_fields[n]".
- Kolom "cn1" dipetakan ke "security_result.detection_fields[n]".
- Kolom "cn2" dipetakan ke "security_result.detection_fields[n]".
- Kolom "cn3" dipetakan ke "security_result.detection_fields[n]".
- Kolom "duser" ke "principal.user.email_addresses" jika berupa email, atau dipetakan ke "principal.user.userid".
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.