Mengumpulkan log IOC MISP
Ringkasan
Parser ini mengekstrak IOC dari data MISP yang diformat sebagai JSON atau CSV. Fungsi ini mengurai input, memetakan kolom ke UDM, menangani berbagai jenis IOC (IP, domain, hash file, dll.), dan memperkaya data dengan konteks intelijen ancaman seperti keyakinan dan tingkat keparahan. Parser juga menjalankan logika tertentu untuk berbagai format data dan menangani kasus dengan kolom yang tidak ada atau tidak didukung.
Sebelum memulai
- Pastikan Anda memiliki instance Google Chronicle.
- Pastikan Anda memiliki akses dengan hak istimewa ke MISP.
Mengonfigurasi feed di Google SecOps untuk menyerap log Kecerdasan Ancaman MISP
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log MISP).
- Pilih Webhook sebagai Jenis sumber.
- Pilih MISP Threat Intelligence sebagai Jenis log.
- Klik Berikutnya.
- Opsional: Tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
\n
. - Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
- Dari tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Konsol Google Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL.
Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ganti kode berikut:
ENDPOINT_URL
: URL endpoint feed.API_KEY
: kunci API untuk mengautentikasi ke Google Security Operations.SECRET
: kunci rahasia yang Anda buat untuk mengautentikasi feed.
Mengaktifkan permintaan HTTP kirim ke URL eksternal di MISP
- Akses komputer tempat MISP di-deploy.
- Edit file config.php yang terletak di
app/Config/
. - Temukan konfigurasi
rest_client_enable_arbitrary_urls
dan tetapkan ke True.none 'rest_client_enable_arbitrary_urls' => true
- Simpan file.
Mengonfigurasi webhook di MISP untuk Google SecOps
- Login ke MISP Threat Intelligence.
- Buka Administrasi > Alur Kerja > Daftar Modul.
- Pilih Webhook.
- Buka kolom Action, lalu klik Enable.
- Buka Alur kerja > Daftar pemicu.
- Pilih pemicu webhook yang Anda inginkan.
- Pilih Webhook dari daftar modul.
- Tarik lalu Lepaskan ke ruang kerja.
- Hubungkan input dengan output pemicu.
- Di modul Webhook, isi kolom berikut:
- URL: Masukkan ENDPOINT_URL, diikuti dengan API_KEY dan SECRET.
- HTTP Request Method: Pilih POST
- Klik Simpan.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
Attribute.category |
event.idm.entity.metadata.threat.category_details |
Dipetakan langsung dari Attribute.category dalam objek JSON bertingkat dalam kolom "data". Digunakan di jalur penguraian JSON. |
Attribute.comment |
event.idm.entity.metadata.threat.summary |
Dipetakan langsung dari Attribute.comment dalam objek JSON bertingkat dalam kolom "data". Digunakan di jalur penguraian JSON. |
Attribute.deleted |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.deleted dan ditambahkan sebagai kolom deteksi dengan kunci "Atribut dihapus". Digunakan di jalur penguraian JSON. |
Attribute.event_id |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.event_id dan ditambahkan sebagai kolom deteksi dengan kunci "Attribute event_id". Digunakan di jalur penguraian JSON. |
Attribute.first_seen |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.first_seen dan ditambahkan sebagai kolom deteksi dengan kunci "Atribut first_seen". Digunakan di jalur penguraian JSON. |
Attribute.id |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.id dan ditambahkan sebagai kolom deteksi dengan kunci "Attribute id" atau "Attribute id $$", bergantung pada jalur penguraian. Digunakan di jalur penguraian CSV dan JSON. |
Attribute.timestamp |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.timestamp dan ditambahkan sebagai kolom deteksi dengan kunci "Stempel waktu atribut". Digunakan di jalur penguraian JSON. |
Attribute.to_ids |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Attribute.to_ids dan ditambahkan sebagai kolom deteksi dengan kunci "Attribute to_ids". Digunakan di jalur penguraian JSON. |
Attribute.type |
log_type |
Dipetakan langsung dari Attribute.type dalam objek JSON bertingkat dalam kolom "data". Digunakan sebagai kolom sementara, dan kemudian digunakan untuk mengisi kolom UDM lainnya. Digunakan di jalur penguraian JSON. |
Attribute.uuid |
event.idm.entity.metadata.product_entity_id |
Dipetakan langsung dari Attribute.uuid dalam objek JSON bertingkat dalam kolom "data". Digunakan di jalur penguraian JSON. |
Attribute.value |
Beberapa | Nilai kolom ini digunakan untuk mengisi beberapa kolom UDM, bergantung pada Attribute.type (atau log_type jika berasal dari Attribute.type ):- event.idm.entity.entity.hostname jika type adalah "domain".- event.idm.entity.entity.file.md5 jika type adalah "md5".- event.idm.entity.entity.file.sha1 jika type adalah "sha1".- event.idm.entity.entity.file.sha256 jika type adalah "sha256".- event.idm.entity.entity.resource.name jika type adalah "mutex".- event.idm.entity.entity.registry.registry_key jika type adalah "regkey".- event.idm.entity.entity.user.email_addresses jika type adalah "threat-actor".- event.idm.entity.entity.url jika type adalah "uri" atau "url".- event.idm.entity.entity.file.full_path jika type adalah "filename".- Diurai untuk IP dan port jika type adalah "ip-dst|port", "ip-dst", atau "ip-src". Digunakan di jalur penguraian JSON. |
column1 |
event.idm.entity.metadata.product_entity_id |
Dipetakan langsung dari column1 di jalur penguraian CSV. |
column14 |
Bagian dari event.idm.entity.metadata.threat.description |
Dihubungkan dengan description untuk membentuk deskripsi akhir dalam metadata ancaman. Digunakan di jalur penguraian CSV. |
column16 |
event.idm.entity.metadata.threat.threat_feed_name , event.ioc.feed_name |
Dipetakan langsung dari column16 . Digunakan di jalur penguraian CSV. |
column18 |
event.idm.entity.metadata.threat.severity_details , event.ioc.raw_severity |
Dipetakan langsung dari column18 . Digunakan di jalur penguraian CSV. |
column21 |
Bagian dari event.idm.entity.metadata.threat.description , event.ioc.description |
Digunakan sebagai dasar untuk deskripsi, yang kemudian digabungkan dengan event_info . Digunakan di jalur penguraian CSV. |
column3 |
Bagian dari event.ioc.categorization |
Dipetakan langsung dari column3 dan digabungkan dengan "IOC" untuk membentuk kategorisasi akhir. Digunakan di jalur penguraian CSV. |
column4 |
event.idm.entity.metadata.description |
Dipetakan langsung dari column4 . Digunakan di jalur penguraian CSV. |
column5 |
Beberapa | Nilai kolom ini digunakan untuk mengisi beberapa kolom UDM, bergantung pada kolom column4 (yang dipetakan ke type ):- event.idm.entity.entity.hostname jika type adalah "domain".- Diurai untuk IP dan port jika type adalah "ip-dst|port", "ip-dst", atau "ip-src".- event.idm.entity.entity.file.md5 jika type adalah "md5".- event.idm.entity.entity.file.sha1 jika type adalah "sha1".- event.idm.entity.entity.file.sha256 jika type adalah "sha256".- event.idm.entity.entity.resource.name jika type adalah "mutex".- event.idm.entity.entity.registry.registry_key jika type adalah "regkey".- event.idm.entity.entity.user.email_addresses jika type adalah "threat-actor".- event.idm.entity.entity.url jika type adalah "uri" atau "url".- event.idm.entity.entity.file.full_path jika type adalah "filename". Digunakan di jalur penguraian CSV. |
column6 |
event.idm.entity.metadata.threat.summary |
Dipetakan langsung dari column6 . Digunakan di jalur penguraian CSV. |
column8 |
event.ioc.active_timerange.start , event.idm.entity.metadata.interval.start_time |
Diurai sebagai stempel waktu UNIX. Digunakan di jalur penguraian CSV. |
date description |
event.idm.entity.metadata.threat.description |
Dipetakan langsung dari description dalam objek JSON bertingkat dalam kolom "data". Digunakan di jalur penguraian JSON. |
event_creator_email |
event.idm.entity.entity.labels.value |
Dipetakan langsung dari event_creator_email dan ditambahkan sebagai label dengan kunci "event_creator_email". Digunakan di jalur penguraian JSON. |
event_id Feed.publish |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Feed.publish dan ditambahkan sebagai kolom deteksi dengan kunci "Publikasi feed". Digunakan di jalur penguraian JSON. |
first_seen |
event.ioc.active_timerange.start , event.idm.entity.metadata.interval.start_time |
Diurai sebagai stempel waktu dalam format "yyyy-MM-ddTHH:mm:ssZZ". Digunakan di jalur penguraian JSON. |
id info |
event.idm.entity.metadata.description |
Dipetakan langsung dari info dalam objek JSON bertingkat dalam kolom "data". Digunakan di jalur penguraian JSON. |
last_seen |
event.ioc.active_timerange.end |
Diurai sebagai stempel waktu dalam format "yyyy-MM-ddTHH:mm:ssZZ". Digunakan di jalur penguraian JSON. |
Org.name |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Org.name dan ditambahkan sebagai kolom deteksi dengan kunci "Nama organisasi". Digunakan di jalur penguraian JSON. |
published |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari published dan ditambahkan sebagai kolom deteksi dengan kunci "published". Digunakan di jalur penguraian JSON. |
Tag.colour |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.colour dan ditambahkan sebagai kolom deteksi dengan kunci "tag colour". Digunakan di jalur penguraian JSON. |
Tag.exportable |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.exportable dan ditambahkan sebagai kolom deteksi dengan kunci "tag exportable". Digunakan di jalur penguraian JSON. |
Tag.hide_tag |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.hide_tag dan ditambahkan sebagai kolom deteksi dengan kunci "tag hide_tag". Digunakan di jalur penguraian JSON. |
Tag.id |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.id dan ditambahkan sebagai kolom deteksi dengan kunci "tag id". Digunakan di jalur penguraian JSON. |
Tag.is_custom_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.is_custom_galaxy dan ditambahkan sebagai kolom deteksi dengan kunci "tag is_custom_galaxy". Digunakan di jalur penguraian JSON. |
Tag.is_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.is_galaxy dan ditambahkan sebagai kolom deteksi dengan kunci "tag is_galaxy". Digunakan di jalur penguraian JSON. |
Tag.isinherited |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.isinherited dan ditambahkan sebagai kolom deteksi dengan kunci "tag isinherited". Digunakan di jalur penguraian JSON. |
Tag.name |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.name dan ditambahkan sebagai kolom deteksi dengan kunci "nama tag". Digunakan di jalur penguraian JSON. |
Tag.numerical_value |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.numerical_value dan ditambahkan sebagai kolom deteksi dengan kunci "tag numerical_value". Digunakan di jalur penguraian JSON. |
Tag.user_id |
event.idm.entity.metadata.threat.detection_fields.value |
Dipetakan langsung dari Tag.user_id dan ditambahkan sebagai kolom deteksi dengan kunci "tag user_id". Digunakan di jalur penguraian JSON. |
threat_level_id |
event.idm.entity.entity.labels.value |
Dipetakan langsung dari threat_level_id dan ditambahkan sebagai label dengan kunci "threat_level_id". Digunakan di jalur penguraian JSON. |
timestamp |
event.idm.entity.metadata.collected_timestamp , event.idm.entity.metadata.interval.start_time |
Diurai sebagai stempel waktu UNIX. Digunakan di jalur penguraian CSV. |
uuid |
event.idm.entity.metadata.vendor_name |
Ditetapkan ke "MISP" oleh parser. Ditetapkan ke "MISP" oleh parser. Tetapkan ke nilai default di masa mendatang (253402300799 detik sejak epoch). Ditentukan oleh parser berdasarkan kolom type atau log_type . Dapat berupa "FILE", "DOMAIN_NAME", "IP_ADDRESS", "MUTEX", "RESOURCE", atau "USER". Dapat berasal dari Attribute.comment atau Attribute.value bergantung pada Attribute.type . Diurai dari Attribute.value atau column5 jika jenisnya terkait IP. Diurai dari Attribute.value atau column5 jika jenisnya adalah "ip-dst|port". Berasal dari column3 dalam penguraian CSV atau Attribute.category dalam penguraian JSON. Berasal dari column21 dan column14 dalam penguraian CSV. Berasal dari column8 atau first_seen . Berasal dari last_seen . Berasal dari description menggunakan pola grok. Berasal dari column16 atau ditetapkan ke "MISP". Berasal dari column18 . Diurai dari Attribute.value atau column5 jika jenisnya terkait IP. Diurai dari Attribute.value atau column5 jika jenisnya adalah "ip-dst|port". Berasal dari Attribute.value atau column5 jika jenisnya adalah "domain". Berasal dari kolom confidence , yang diekstrak dari kolom description . Nilainya dapat berupa "HIGH_CONFIDENCE", "MEDIUM_CONFIDENCE", "LOW_CONFIDENCE", atau "UNKNOWN_CONFIDENCE". Dipetakan langsung dari kolom confidence , yang diekstrak dari kolom description . Dipetakan langsung dari kolom threat_level , yang berasal dari column18 di jalur penguraian CSV. Dipetakan langsung dari kolom feed_name , yang berasal dari column16 di jalur penguraian CSV. Berasal dari column21 dan column14 dalam penguraian CSV. Berasal dari column6 dalam penguraian CSV atau Attribute.comment dalam penguraian JSON. Beberapa kolom ditambahkan sebagai kolom deteksi dengan kunci yang sesuai. Beberapa kolom ditambahkan sebagai label dengan kunci yang sesuai. Disalin dari kolom timestamp tingkat atas dalam log mentah. |
Perubahan
2023-09-26
- Memetakan "published", "Feed.publish", "Org.name", "Attribute.id", "Attribute.event_id", "Attribute.to_ids", "Attribute.timestamp", "Attribute.comment", "Attribute.deleted", "Attribute.first_seen", semua "tag.names" ke "threat.detection_fields".
2023-08-17
- Perbaikan Bug :
- Menambahkan kondisi untuk melakukan operasi 'gsub', yang menghapus garis miring terbalik tambahan, hanya jika log bukan JSON.
2023-07-20
- Perbaikan Bug :
- Mengubah 'metadata.entity_type' menjadi 'MUTEX' saat log berjenis mutex.
2023-07-04
- Parser yang baru dibuat.