Mengumpulkan log Carbon Black EDR
Dokumen ini menjelaskan cara mengumpulkan log Carbon Black EDR dari lingkungan Cloud dan On-Prem menggunakan AWS S3. Parser mengekstrak kolom dari pesan berformat JSON, CSV, atau syslog, menormalisasinya, dan memetakan ke UDM. Fitur ini menangani berbagai jenis peristiwa Carbon Black, termasuk koneksi jaringan, peristiwa proses, modifikasi file, perubahan registry, dan hit IOC, yang memperkaya data dengan intelijen ancaman dan informasi perangkat jika tersedia.
Sebelum memulai
Pastikan Anda memiliki:
- Instance Google SecOps yang dikonfigurasi.
- Akses dengan hak istimewa ke AWS IAM dan S3.
- Akses dengan hak istimewa ke Carbon Black EDR Cloud atau On-Prem.
Mengonfigurasi Carbon Black EDR On-Prem
Mengonfigurasi bucket Amazon S3 untuk On-Prem
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket
- Simpan Nama dan Region bucket untuk digunakan nanti.
- Buat pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
- Pilih Pengguna yang dibuat.
- Pilih tab Kredensial keamanan.
- Klik Create Access Key di bagian Access Keys.
- Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
- Klik Berikutnya.
- Opsional: tambahkan tag deskripsi.
- Klik Create access key.
- Klik Download file CSV untuk menyimpan Kunci Akses dan Kunci Akses Rahasia untuk digunakan nanti.
- Klik Selesai.
- Pilih tab Izin.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Telusuri dan pilih kebijakan AmazonS3FullAccess.
- Klik Berikutnya.
- Klik Tambahkan izin.
Menginstal cb-event-forwarder di Server EDR On-Prem
Instal repositori CbOpenSource jika belum ada:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
Instal RPM menggunakan YUM:
yum install cb-event-forwarder
Jika Anda menggunakan EDR 7.1.0 atau yang lebih baru, jalankan skrip berikut untuk menetapkan izin yang sesuai yang diperlukan oleh EDR:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
Mengonfigurasi cb-event-forwarder untuk Menghasilkan Log JSON
Buka file konfigurasi:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
Ubah parameter berikut:
[event_forwarder] output_format=json # Enable JSON format output_type=s3 # Send logs to AWS S3 s3_bucket_name=YOUR-S3-BUCKET-NAME s3_region=YOUR-S3-BUCKET-NAME s3_access_key_id=YOUR_AWS_ACCESS_KEY s3_secret_access_key=YOUR_AWS_SECRET_KEY s3_prefix=carbonblack/edr/logs
Simpan dan keluar menggunakan keyboard:
- Ctrl + X, lalu Y dan Enter.
Mulai cb-event-forwarder:
sudo systemctl enable cb-event-forwarder sudo systemctl restart cb-event-forwarder sudo systemctl status cb-event-forwarder
Mengonfigurasi Carbon Black Cloud Event Forwarder untuk S3
Membuat Bucket AWS S3
- Login ke AWS Management Console.
- Pastikan region AWS cocok dengan region Event Forwarder:
- Di halaman AWS Console, temukan region.
- Gunakan drop-down untuk memilih region yang benar dari Event Forwarder Anda.
- Daftar berikut memberikan Region AWS yang berlaku untuk setiap URL Carbon Black EDR.
- "instance-alias".my.carbonblack.io - Region: US East (N. Virginia) (us-east-1)
- "instance-alias".my.cbcloud.de - Region: Eropa (Frankfurt) (eu-central-1)
- "instance-alias".my.cbcloud.sg Region: Asia Pasifik (Singapura) (ap-southeast-1)
- Pilih Layanan.
- Buka konsol S3.
- Klik Buat bucket untuk membuka wizard Buat bucket.
- Di Nama bucket, masukkan nama unik untuk bucket Anda (misalnya, CB-EDR).
- Pastikan Region ditetapkan secara default ke region yang Anda pilih sebelumnya.
- Perbarui setelan default Blokir Akses Publik untuk mengizinkan akses publik (tindakan ini diperlukan untuk menyerap log ke Google SecOps).
- Pilih Create Bucket.
Mengonfigurasi Bucket S3 untuk mengizinkan Event Forwarder menulis peristiwa
- Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
- Pilih Pengguna yang dibuat.
- Pilih tab Kredensial keamanan.
- Klik Create Access Key di bagian Access Keys.
- Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
- Klik Berikutnya.
- Opsional: tambahkan tag deskripsi.
- Klik Create access key.
- Klik Download file CSV untuk menyimpan Kunci Akses dan Kunci Akses Rahasia untuk digunakan nanti.
- Klik Selesai.
- Pilih tab Izin.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Telusuri kebijakan AmazonS3FullAccess.
- Pilih kebijakan.
- Klik Berikutnya.
- Klik Tambahkan izin.
Mengonfigurasi Penerusan peristiwa di Konsol EDR
- Login ke VMware Carbon Black Cloud.
- Buka tab pengirim peristiwa
- Aktifkan peristiwa yang ingin Anda upload ke S3 oleh produk.
- Buka Output and Type, lalu tetapkan ke S3.
- Berikan nama bucket S3 dalam format berikut
<region>:<bucket-name>
(misalnya,us-east-1:cb-edr
). - Pilih file upload AWS credentials dalam format INI.
Berikut adalah contoh profil:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
Klik Simpan dan mulai ulang layanan agar perubahan diterapkan.
Mengonfigurasi feed di Google SecOps untuk menyerap log Carbon Black EDR
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log EDR Carbon Black).
- Pilih Amazon S3 sebagai Source type.
- Pilih Carbon Black EDR sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Region: region tempat bucket Amazon S3 berada.
- S3 URI: URI bucket.
s3:/BUCKET_NAME
- Ganti
BUCKET_NAME
dengan nama bucket yang sebenarnya.
- Ganti
- URI adalah: pilih URI_TYPE sesuai dengan konfigurasi aliran log (File tunggal | Direktori | Direktori yang menyertakan subdirektori).
- Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
- Access Key ID: Kunci akses pengguna dengan akses ke bucket S3.
- Kunci Akses Rahasia: kunci rahasia Pengguna dengan akses ke bucket S3.
- Namespace aset: namespace aset.
- Label penyerapan: label yang akan diterapkan ke peristiwa dari feed ini.
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
action |
security_result.detection_fields[?key == 'action'].value |
Nilai kolom action dari log mentah. |
cb_server |
intermediary.hostname |
Nilai kolom cb_server dari log mentah. |
cb_version |
metadata.product_version |
Nilai kolom cb_version dari log mentah. |
child_pid |
target.process.pid (untuk peristiwa ingress.event.childproc ) |
Nilai kolom child_pid dari log mentah saat type adalah ingress.event.childproc . |
child_process_guid |
target.process.product_specific_process_id (untuk peristiwa ingress.event.childproc ) |
"CB:" digabungkan dengan nilai kolom child_process_guid dari log mentah saat type adalah ingress.event.childproc . |
child_username |
target.user.userid (untuk peristiwa ingress.event.childproc ) |
Nilai kolom child_username dari log mentah saat type adalah ingress.event.childproc . |
childproc_guid |
target.process.product_specific_process_id (untuk peristiwa endpoint.event.procstart ) |
"CB:" digabungkan dengan nilai kolom childproc_guid dari log mentah saat type adalah endpoint.event.procstart . |
childproc_hash.0 |
target.process.file.md5 (untuk peristiwa endpoint.event.procstart ) |
Elemen pertama array childproc_hash dari log mentah saat type adalah endpoint.event.procstart . |
childproc_hash.1 |
target.process.file.sha256 (untuk peristiwa endpoint.event.procstart ) |
Elemen kedua array childproc_hash dari log mentah saat type adalah endpoint.event.procstart . |
childproc_name |
target.process.file.full_path (untuk peristiwa endpoint.event.procstart ) |
Nilai kolom childproc_name dari log mentah saat type adalah endpoint.event.procstart . |
childproc_pid |
target.process.pid (untuk peristiwa endpoint.event.procstart ) |
Nilai kolom childproc_pid dari log mentah saat type adalah endpoint.event.procstart . |
childproc_publisher.0.name |
security_result.detection_fields[?key == 'childproc_publisher_name'].value (untuk peristiwa endpoint.event.procstart ) |
"childproc_publisher_name:" digabungkan dengan nilai childproc_publisher.0.name dari log mentah saat type adalah endpoint.event.procstart . |
childproc_publisher.0.state |
security_result.detection_fields[?key == 'childproc_publisher_state'].value (untuk peristiwa endpoint.event.procstart ) |
"childproc_publisher_state:" digabungkan dengan nilai childproc_publisher.0.state dari log mentah saat type adalah endpoint.event.procstart . |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (untuk peristiwa endpoint.event.procstart ) |
Nilai kolom childproc_reputation dari log mentah saat type adalah endpoint.event.procstart . |
childproc_username |
target.user.userid (untuk peristiwa endpoint.event.procstart ) |
Nilai kolom childproc_username dari log mentah saat type adalah endpoint.event.procstart . |
clientIp |
principal.ip , principal.asset.ip |
Nilai kolom clientIp dari log mentah. |
cmdline |
target.process.command_line (untuk peristiwa feed.query.hit.process dan feed.storage.hit.process ), additional.fields[?key == 'cmdline_*'].value.string_value (untuk peristiwa watchlist.storage.hit.process ) |
Nilai kolom cmdline dari log mentah saat type adalah feed.query.hit.process atau feed.storage.hit.process . Untuk peristiwa watchlist.storage.hit.process , peristiwa tersebut disimpan di additional.fields dengan kunci "cmdline_*". |
command_line |
target.process.command_line (untuk peristiwa ingress.event.procstart ) |
Nilai kolom command_line dari log mentah saat type adalah ingress.event.procstart . |
comms_ip |
intermediary.ip |
Nilai kolom comms_ip dari log mentah. |
computer_name |
principal.hostname , principal.asset.hostname |
Nilai kolom computer_name dari log mentah. |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (untuk peristiwa endpoint.event.apicall ) |
Nilai kolom crossproc_api dari log mentah saat type adalah endpoint.event.apicall . |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (untuk peristiwa endpoint.event.crossproc ) |
Nilai kolom crossproc_guid dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (untuk peristiwa endpoint.event.crossproc ) |
Elemen pertama array crossproc_hash dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (untuk peristiwa endpoint.event.crossproc ) |
Elemen kedua array crossproc_hash dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_name |
target.process.file.full_path (untuk peristiwa endpoint.event.crossproc ) |
Nilai kolom crossproc_name dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_publisher.0.name |
security_result.detection_fields[?key == 'crossproc_publisher_name'].value (untuk peristiwa endpoint.event.crossproc ) |
"crossproc_publisher_name:" digabungkan dengan nilai crossproc_publisher.0.name dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_publisher.0.state |
security_result.detection_fields[?key == 'crossproc_publisher_state'].value (untuk peristiwa endpoint.event.crossproc ) |
"crossproc_publisher_state:" digabungkan dengan nilai crossproc_publisher.0.state dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (untuk peristiwa endpoint.event.crossproc ) |
Nilai kolom crossproc_reputation dari log mentah saat type adalah endpoint.event.crossproc . |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (untuk peristiwa endpoint.event.crossproc ) |
Nilai kolom crossproc_target dari log mentah saat type adalah endpoint.event.crossproc . Dikonversi menjadi string "true" atau "false". |
Perubahan
2024-05-13
- Memetakan kolom "alert_url" ke kolom UDM "metadata.url_back_to_product".
2024-01-19
- Menambahkan pemeriksaan null untuk "filemod_hash.0" dan "filemod_hash.1" sebelum pemetaan.
2023-12-27
- Melakukan inisialisasi "filemod_hash.0" dan "filemod_hash.1" ke null untuk mengurai log yang tidak diuraikan.
2023-10-26
- Menambahkan fungsi "gsub" untuk mengurai kolom yang tidak diuraikan.
2023-10-13
- Menangani log JSON baru dengan menambahkan blok JSON.
- Menghapus kode yang berlebihan untuk kolom "computer_name", "parent_name", "process_name", "pid", "process_path", "md5", "sha256", "process_guid", "parent_pid", "docs.0.process_pid", "cb_version", "process_hash.0", "process_hash.1", "parent_hash.0", dan "parent_hash.1".
2023-07-21
- Menambahkan detail taktik dan teknik MITRE ATT&CK ke "security_result.attack_details".
24-03-2023
- Memetakan kolom "protocol" ke "network.ip_protocol".
- Menambahkan pemeriksaan kondisional null untuk kolom "child_username", "child_pid", "child_command_line".
- Mengubah "metadata.event_type" dari "GENERIC_EVENT" menjadi "STATUS_UPDATE" saat "principal.hostname" atau "principal.ip" bukan null.
2023-03-14
- Perbaikan bug:
- Memetakan kolom berikut saat kolom "type" null:
- Memetakan kolom "process_guid" ke "principal.process.product_specific_process_id".
- Memetakan kolom "device_external_ip" ke "target.ip".
- Memetakan kolom "device_os" ke "principal.platform".
- Memetakan kolom "device_group" ke "principal.group.group_display_name".
- Memetakan kolom "process_pid" ke "principal.process.pid".
- Memetakan kolom "process_path" ke "principal.process.file.full_path".
- Memetakan kolom "process_cmdline" ke "principal.process.command_line".
- Memetakan kolom "process_hash.0" ke "principal.process.file.md5".
- Memetakan kolom "principal.1" ke "principal.process.file.sha256".
- Memetakan kolom "process_username" ke "principal.user.userid".
- Memetakan kolom "clientIp" ke "principal.ip".
- Memetakan kolom "description" ke "metadata.description".
- Memetakan kolom "orgName" ke "principal.administrative_domain".
- Memetakan kolom berikut saat kolom "ruleName" berisi "CYDERES":
- Memetakan kolom "deviceInfo.internalIpAddress" ke "principal.ip".
- Memetakan kolom "deviceInfo.externalIpAddress" ke "target.ip".
- Memetakan kolom "ruleName" ke "security_result.rule_name".
- Memetakan kolom "deviceInfo.deviceType" ke "principal.asset.platform_software.platform".
- Memetakan kolom "domain" ke "principal.administrative_domain".
- Memetakan kolom "deviceInfo.groupName" ke "principal.group.group_display_name".
- Memetakan kolom "deviceInfo.deviceVersion" ke "principal.asset.platform_software.platform_version".
- Memetakan kolom "deviceInfo.deviceId" ke "principal.asset.asset_id".
- Memetakan kolom "eventId" ke "additional.fields".
- Mengubah "metadata.event_type" dari "GENERIC_EVENT" menjadi "NETWORK_CONNECTION" jika "principal.ip" dan "target.ip" bukan null.
- Mengubah "metadata.event_type" dari "GENERIC_EVENT" menjadi "STATUS_UPDATE" saat "principal.ip" bukan null.
2023-02-03
- Perbaikan bug: Memetakan "filemod_hash" ke "target.file", bukan "target.process.file".
2023-01-20
- Perbaikan bug: Berhenti mengisi dan memetakan product_specific_process_id untuk ID proses kosong.
2022-11-25
- Memetakan 'remote_ip' ke 'principal.ip' dan 'local_ip' ke 'target.ip' untuk peristiwa TCP/UDP 'Inbound'.
- Memetakan 'remote_port' ke 'principal.port' dan 'local_port' ke 'target.port' untuk peristiwa TCP/UDP 'Inbound'.
2022-10-06
- Memigrasikan semua parser khusus pelanggan ke parser default.
2022-07-10
- Memperbarui pemetaan 'event_type' ke 'PROCESS_LAUNCH' untuk log jenis 'endpoint.event.'.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.