Panduan Analisis Ancaman Sysmon, Bagian 1





Artikel ini adalah bagian pertama dari rangkaian analisis ancaman Sysmon. Semua bagian lain dari seri ini:



Bagian 1. Memperkenalkan analisis log Sysmon (kami di sini)

Bagian 2. Menggunakan data dari peristiwa Sysmon untuk mengidentifikasi ancaman

Bagian 3. Analisis mendalam tentang ancaman Sysmon menggunakan grafik



Jika Anda terlibat dalam keamanan informasi, Anda mungkin harus sering mencari tahu dalam serangan yang sedang berlangsung. Jika Anda sudah memiliki mata yang terlatih, Anda dapat mencari aktivitas non-standar dalam log mentah mentah - katakanlah, skrip PowerShell menjalankan perintah DownloadStringatau skrip VBS yang berpura-pura menjadi file Word - hanya membalik-balik aktivitas terakhir di log peristiwa Windows. Tapi ini sakit kepala yang sangat besar. Untungnya, Microsoft menciptakan Sysmon untuk membuat analisis serangan lebih mudah.



Ingin memahami ide dasar di balik ancaman yang ditampilkan di log Sysmon? Unduh panduan kami untuk Acara WMI sebagai Alat Spy dan Anda akan menemukan bagaimana orang dalam dapat secara diam - diam memata - matai karyawan lain. Masalah utama dengan bekerja dengan log peristiwa Windows adalah kurangnya informasi tentang proses induk, mis. hierarki proses tidak dapat dipahami darinya. Sebaliknya, entri log Sysmon berisi ID proses orang tua, nama, dan baris perintah untuk dijalankan. Terima kasih Microsoft.



Pada bagian pertama dari seri kami, kami akan melihat apa yang dapat Anda lakukan dengan informasi dasar dari Sysmon. Di Bagian 2, kami akan memanfaatkan sepenuhnya informasi pengasuhan anak untuk membuat struktur kesesuaian yang lebih kompleks, yang dikenal sebagai grafik ancaman. Pada bagian ketiga, kita akan melihat algoritma sederhana yang memindai grafik ancaman untuk mencari aktivitas non-standar dengan menganalisis grafik "bobot". Dan pada akhirnya, Anda akan menerima metode probabilistik yang rapi (dan dapat dipahami) untuk mendeteksi ancaman sebagai hadiah.





Bagian 1: Memperkenalkan Analisis Log Sysmon



Apa yang akan membantu untuk memahami kompleksitas log peristiwa? Akhirnya - SIEM. Ini menormalkan peristiwa dan menyederhanakan analisis mereka selanjutnya. Tapi kita tidak harus melangkah sejauh itu, setidaknya pada awalnya. Pada awalnya, untuk memahami prinsip-prinsip SIEM akan cukup untuk mencoba utilitas Sysmon gratis yang luar biasa. Dan dia sangat mudah diajak bekerja sama. Pertahankan, Microsoft!



Apa saja fitur Sysmon?



Singkatnya, informasi yang berguna dan dapat dibaca tentang proses (lihat gambar di bawah). Anda akan menemukan banyak detail berguna yang tidak ada di log peristiwa Windows, tetapi yang paling penting, bidang berikut:

  • ID proses (desimal, bukan hex!)
  • ID proses induk
  • Baris perintah proses
  • Baris perintah proses induk
  • Hash gambar file
  • Nama Gambar File


Sysmon diinstal baik sebagai driver perangkat dan sebagai layanan - detail lebih lanjut di sini. Keuntungan utamanya adalah kemampuan untuk menganalisis log dari beberapa sumber, mengkorelasikan informasi dan mengeluarkan nilai yang dihasilkan ke satu folder log peristiwa yang terletak di sepanjang jalur operasional Microsoft -> Windows -> Sysmon -> . Dalam penyelidikan saya sendiri tentang log Windows yang tumbuh rambut, saya terus-menerus harus beralih antara, katakanlah, folder PowerShell log dan folder Keamanan, membalik-balik log peristiwa dalam upaya heroik entah bagaimana cocok dengan nilai-nilai di antara mereka. Ini bukan tugas yang mudah, dan seperti yang saya sadari kemudian, lebih baik segera membeli aspirin.



Sysmon juga membuat lompatan ke depan dengan memberikan informasi yang berguna (atau, seperti yang dikatakan vendor, efektif) untuk membantu memahami proses yang mendasarinya. Sebagai contoh, saya memulai sesi wmiexec rahasia yang mensimulasikan pergerakan orang dalam yang cerdas dalam jaringan. Ini yang akan Anda lihat di log peristiwa Windows:



Beberapa informasi tentang proses ini terlihat di log Windows, tetapi tidak banyak berguna.  Ditambah pengidentifikasi proses dalam heksadesimal ???



Beberapa informasi tentang proses ini terlihat di log Windows, tetapi tidak banyak berguna. Ditambah ID proses dalam hex ???



Seorang profesional TI profesional dengan pemahaman tentang dasar-dasar peretasan harus curiga terhadap baris perintah. Menggunakan cmd.exe untuk selanjutnya menjalankan perintah lain dengan mengarahkan output ke file dengan nama aneh - ini jelas mirip dengan perintah-dan-kontrol (C2) perangkat lunak manajemen dan manajemen : dengan cara ini pseudo-shell dibuat menggunakan layanan WMI.

Sekarang mari kita lihat setara dengan entri Sysmon, mencatat berapa banyak informasi tambahan yang diberikan kepada kita:



Fitur Sysmon dalam satu tangkapan layar: informasi proses terperinci dalam bentuk yang dapat dibaca



Fitur Sysmon dalam satu tangkapan layar: informasi terperinci tentang proses dalam bentuk yang dapat dibaca.





Anda tidak hanya melihat baris perintah, tetapi juga nama file, jalur ke aplikasi yang dapat dieksekusi yang diketahui oleh Windows ("Windows Command Processor"), pengidentifikasi proses induk , baris perintah induk yang meluncurkan cmd-shell, serta nama file asli dari proses induk. Semuanya di satu tempat, akhirnya!

Dari log Sysmon, kita dapat menyimpulkan bahwa dengan tingkat probabilitas yang tinggi, baris perintah yang mencurigakan ini, yang kita lihat di log "mentah", bukanlah hasil kerja normal karyawan. Sebaliknya, itu dihasilkan oleh proses seperti C2 - wmiexec, seperti yang saya sebutkan sebelumnya - dan langsung dihasilkan oleh proses layanan WMI (WmiPrvSe). Kami sekarang memiliki indikator bahwa penyerang jarak jauh atau orang dalam sedang mencoba infrastruktur perusahaan.



Memperkenalkan Get-Sysmonlogs



Tentu saja, sangat bagus ketika Sysmon memiliki log di satu tempat. Tetapi mungkin akan lebih baik jika kita dapat mengakses masing-masing bidang log secara terprogram - misalnya, melalui perintah PowerShell. Dalam hal ini, Anda bisa menulis skrip PowerShell kecil yang akan mengotomatisasi pencarian ancaman potensial!

Saya bukan orang pertama yang memiliki ide ini. Dan ada baiknya bahwa beberapa posting forum dan proyek GitHub telah menjelaskan cara menggunakan PowerShell untuk mem-parsing log Sysmon. Dalam kasus saya, saya ingin menghindari menulis baris parsing skrip terpisah untuk setiap bidang Sysmon. Jadi saya menggunakan prinsip orang malas dan saya pikir saya menghasilkan sesuatu yang menarik sebagai hasilnya.

Poin penting pertama adalah kemampuan timGet-WinEvent membaca log Sysmon, memfilter peristiwa yang diperlukan dan menampilkan hasilnya ke variabel PS, seperti di sini:



$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}




Jika Anda ingin menguji sendiri perintahnya, maka dengan menampilkan konten di elemen pertama dari array $ events, $ events [0]. Pesan, Anda bisa mendapatkan serangkaian string teks dengan format yang sangat sederhana: nama bidang Sysmon, titik dua dan kemudian nilainya sendiri.



Hore!  Sysmon log output dalam format JSON-ready



Hore! Sysmon log output ke format JSON ready





Apakah Anda memikirkan hal yang sama tentang saya? Dengan sedikit usaha, Anda dapat mengubah output menjadi string yang diformat JSON dan kemudian memuatnya langsung ke objek PS menggunakan perintah ConvertFrom-Json yang kuat .

Saya akan menunjukkan kode PowerShell untuk konversi - sangat sederhana - di bagian selanjutnya. Sementara itu, mari kita lihat apa yang bisa dilakukan oleh perintah baru saya yang disebut get-sysmonlogs, yang saya instal sebagai modul PS.

Alih-alih mempelajari analisis log Sysmon melalui antarmuka log peristiwa yang tidak nyaman, kita dapat dengan mudah mencari aktivitas tambahan langsung dari sesi PowerShell dan menggunakan perintah where PS (alias - β€œ?”) Untuk mengurangi output:



Daftar cangkang cmd diluncurkan melalui WMI.  Analisis ancaman secara murah dengan tim Get-Sysmonlog kami sendiri



Daftar cangkang cmd diluncurkan melalui WMI. Analisis ancaman murah dengan tim Get-Sysmonlogs kita sendiri.





Amazing! Saya membuat alat polling log Sysmon seolah-olah itu adalah database. Dalam artikel kami tentang EQL, tercatat bahwa fungsi ini akan dilakukan oleh utilitas keren yang dijelaskan di dalamnya, meskipun secara formal akan dilakukan melalui antarmuka seperti SQL nyata. Ya, EQL elegan , tapi kami akan menyentuhnya di bagian ketiga.



Sysmon dan analisis grafik



Mari abstrak dan pikirkan apa yang baru saja kita buat. Pada dasarnya, kami sekarang memiliki database acara Windows yang tersedia melalui PowerShell. Seperti yang saya catat sebelumnya, ada koneksi atau hubungan antara catatan - melalui ParentProcessId - sehingga Anda bisa mendapatkan hierarki proses yang lengkap.



Jika Anda telah membaca seri Adventures of Elusive Malware, Anda tahu bahwa peretas suka membuat serangan multi-tahap yang canggih, di mana setiap proses memainkan peran kecilnya sendiri dan menyiapkan batu loncatan untuk langkah selanjutnya. Hal-hal seperti itu sangat sulit ditangkap hanya dari log "mentah".

Tetapi dengan tim Get-Sysmonlogs saya dan struktur data tambahan, yang akan kita bahas nanti dalam teks (tentu saja, ini adalah grafik), kita akan memiliki cara praktis untuk mendeteksi ancaman - yang hanya perlu melakukan pencarian yang benar pada simpul.

Seperti biasa dalam proyek blog DYI kami, semakin Anda berupaya menganalisis rincian ancaman dalam skala kecil, semakin Anda menyadari betapa sulitnya mendeteksi ancaman di tingkat organisasi. Dan kesadaran ini sangat penting .



Kita akan menemui komplikasi menarik pertama di bagian kedua artikel, di mana kita mulai menghubungkan peristiwa Sysmon satu sama lain dalam struktur yang jauh lebih kompleks.



All Articles