Artikel ini adalah yang pertama dari seri analisis ancaman Sysmon. Semua bagian lain dari seri ini:
Bagian 1. Memperkenalkan Analisis Log Sysmon
Bagian 2. Menggunakan Data Acara Sysmon untuk Mendeteksi Ancaman (kami ada di sini)
Bagian 3. Analisis mendalam ancaman Sysmon menggunakan grafik
Pada bagian ini, kami akan masuk lebih dalam dan mulai menggunakan informasi terperinci disediakan oleh Sysmon. Berikut adalah tiga poin utama yang akan kami kerjakan:
- Menggunakan PowerShell untuk secara langsung mengakses informasi terperinci tentang proses;
- Membangun dan memvisualisasikan hierarki proses adalah langkah penting pertama dalam menemukan ancaman;
- Gunakan metadata Sysmon untuk menghasilkan metrik penting yang berguna dalam investigasi ancaman tingkat lanjut, seperti menghitung frekuensi di mana proses spesifik diluncurkan.
Menggunakan Get-Sysmonlogs
Sekarang mari kita melihat lebih dekat pada perintah luar biasa saya yang mengubah peristiwa Sysmon menjadi objek PowerShell. Saya agak bangga bahwa saya tidak harus secara manual menulis baris kode yang terpisah untuk masing-masing bidang. Dan inilah, sebenarnya, pengungkapan kode yang hebat:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 }
foreach ($event in $events) {
$ev = $event.Message -split "`r`n"
$jsons="{ "
foreach ($line in $ev) {
$line=$line -replace "\\","\\" `
-replace "\{"," " `
-replace "\}"," " `
-replace '"','\"' `
-replace "`n"," "
$line=$line -replace '(\s*[\w\s]+):\s*(.*)', '"$1":"$2",'
$jsons = $jsons + $line }
$jsons =$jsons + '"blah" : "blah" }'
ConvertFrom-Json -InputObject $jsons
}
}
Semua kode sekarang tersedia di GitHub dan Anda dapat mengunduh dan mengimpornya sebagai modul Sysmon untuk proyek Anda sendiri. Satu-satunya ketidakstabilan terkait dengan penghapusan beberapa karakter jahat - tanda kurung, garis miring terbalik, karakter akhir baris, tanda kutip - untuk membuat output lebih dekat ke JSON.
Jadi, sinyal klasik penyusup berkeliaran di sekitar sistem adalah penggunaan perintah "whoami", dan sering mengikuti setelah "nama host". Seorang peretas (atau mungkin orang dalam) yang memegang akun seseorang ingin memastikan bahwa peniruan berfungsi, sehingga ia sering mengetik perintah di atas segera setelah ia berada di server korban. Selebihnya, "whoami" dan "hostname" bukanlah kata-kata yang akan mereka ketik di konsol sistem mereka sendiri, bahkan jika mereka pernah menggunakan baris perintah.
Dengan perintah rapi saya yang memberikan akses ke semua entri log Sysmon, kita dapat dengan mudah membuat rantai penyaringan nama proses (seperti yang kita lakukan di bagian satu ). Pada saat yang sama, dengan Sysmon, kita dapat mendekati masalah dengan lebih terperinci dengan melihatnyabaris perintah dari proses induk .
Biasanya, ketika seorang hacker menembus jaringan dan mendapatkan akses ke baris perintah, itu adalah cmd yang ketinggalan zaman - ngomong-ngomong, inilah yang terjadi dalam kasus peretasan dengan psexec atau smbexec . Menggunakan output dari get-symonlogs, adalah mungkin untuk menangkap proses whoami yang dihasilkan oleh cangkang warisan ini, dan ini akan menjadi bukti ancaman yang baik.
Perhatian: Whoami diluncurkan melalui shell cmd yang sudah usang
Dari sudut pandang praktis, mencari melalui log "mentah" dari log peristiwa Windows dan proses pencocokan sama sekali tidak mungkin. Seperti yang baru saja kita lihat, rekaman Sysmon membuka banyak kemungkinan untuk analisis ancaman. Jadi mari kita lanjutkan eksplorasi kita dengan memetakan data Sysmom ke dalam struktur yang lebih kompleks.
Dasar-dasar struktur data: daftar dan grafik
Log Sysmon tidak hanya memberi kami baris perintah dari proses induk, tetapi juga ID proses!
Saya pikir Anda sudah menebak apa artinya ini. Tapi tetap saja: sekarang kita bisa menghubungkan proses bersama dalam hierarki dan, saya tidak takut untuk mengatakan, jaringan. Dengan mengingat konsep dasar ilmu komputer, Anda dapat menemukan struktur data alami untuk memperoleh daftar dan grafik yang terkait informasi tersebut adalah yang pertama kali terlintas dalam pikiran.
Pada awalnya saya pikir saya harus membersihkan salinan Struktur Data untuk Penyair dan Sous-Chefs, tetapi kemudian Internet membantu saya. Saya menemukan kumpulan algoritma dasar Doug Finke yang cantik di Gihub yang ditulis dalam PowerShell. Doug terima kasih!
Setelah melalui beberapa kurva belajar, saya dapat menggunakan algoritmanya untuk menyusun acara Sysmon saya. Saya membangun struktur data sebagai daftar dan grafik, dan kemudian, menggunakan API, menulis fungsi PowerShell untuk mencari perintah dan menampilkan hierarki proses. Keren.
Saya menamakannya show-ancaman-path . Ini mencari kedalaman-pertama melalui hirarki proses dan menampilkan nama aplikasi dan perintah terkait untuk aplikasi root yang ditentukan sebagai parameter input. Untuk pengujian pertama saya, saya mencari "whoami.exe". Dan inilah yang saya lihat:
Hierarki Proses: Proses 2452 terlihat mencurigakan!
Bonus tambahan bagi mereka yang memperhatikan dalam output di atas bahwa whoami yang terkait dengan proses 2452 dipanggil melalui shell cmd yang sudah ketinggalan zaman, yang pada gilirannya diluncurkan oleh file exe dengan nama aneh di folder Windows.
Hmmm. Jika Anda terbiasa dengan mekanisme panggilan jarak jauh psexec yang dijelaskan di sini , maka dalam pikiran Anda, Anda seharusnya sudah membunyikan bel. Tapi saya akan memberi tahu Anda sedikit rahasia: memainkan peran sebagai seorang hacker, saya sebelumnya meluncurkan whoami ini dari server Linux jarak jauh menggunakan skrip python Impacket.
Tujuannya adalah untuk menunjukkan bahwa dengan bantuan log yang diperkaya Sysmon dan sebagian kecil dari PowerShell, Anda dapat menyiapkan utilitas yang sepenuhnya praktis untuk mengidentifikasi kerentanan, seperti yang baru saja saya lakukan denganmenunjukkan-ancaman-jalan .
Perburuan Ancaman dengan Grafik yang Diarahkan
Sudah waktunya untuk melakukan hal-hal asing. Dengan semua informasi proses ini yang bersumber dari Sysmon, Anda dapat melihat hubungan secara lebih umum. Dengan kata lain, saya ingin melihat aplikasi yang sedang berjalan - PowerShell.exe, Explorer.exe, dll. - sebagai simpul dari grafik dan mengaitkannya dengan aplikasi yang pada gilirannya meluncurkannya. Hasilnya adalah diagram yang menunjukkan bagaimana aplikasi berinteraksi satu sama lain (alih-alih membuat simpul terpisah untuk setiap instance proses).
Dari sudut pandang teknis, kita berbicara tentang grafik terarah di mana sebuah jalur, bisa dikatakan, adalah jalur satu arah dari aplikasi ke proses induknya.
Pada titik ini, akan lebih baik untuk melihat visualisasi dari apa yang saya bicarakan. Untungnya, ada utilitas visualisasi grafik PowerShell yang hebat yang disebut GraphViz , yang memiliki pembungkus yang sangat sederhana tersedia melalui PSQuickGraph . Kemudian dengan sepotong kode ...
#Let's graph it!!!
$gv = New-Graph -Type BiDirectionalGraph # PSQuickGraph
foreach ($e in $g.getAllEdges() ) { $g from Doug Fink's functions
$vs= $e.startvertex
$ve= $e.endvertex
PSQuickGraph\Add-Edge -From $vs.value.Key -To $ve.value.Key -Graph $gv |Out-Null
}
Show-GraphLayout -Graph $gv
... Anda dapat memvisualisasikan interaksi kompleks antara aplikasi melalui antarmuka GraphViz:
GraphViz: Perpustakaan PowerShell untuk memvisualisasikan Hierarki
Apa fungsinya ? Intinya, ini adalah cara grafis untuk mengidentifikasi ancaman. Alih-alih mencari tanda tangan tertentu dari teks, seperti yang kita lakukan sebelumnya dengan perintah show-ancaman-path, kita sekarang dapat mencoba untuk menemukan anomali pada grafik.
Idenya adalah untuk memahami apa yang merupakan gambaran normal dari lingkungan grafik dan subgraf - mereka biasanya terlihat seperti struktur yang terhubung dalam visualisasi - dan kemudian mencoba untuk menemukan simpul yang terlihat lebih terpisah. Dan nyatanya, mata kita beradaptasi dengan baik untuk tugas ini. Untungnya, ada juga beberapa deteksi lingkungan sederhana dan algoritma deteksi ancaman yang tersedia. Dan pada suatu waktu, hambamu yang rendah hati bahkan menulis posting tentang penggunaan teknik mendeteksi lingkungan dalam jaringan koneksi sosial, yang terkait dengan ... pahlawan revolusi yang terkenal di Amerika Serikat .
Keuntungan dari pendekatan ini dalam menemukan penyerang adalah bahwa peretas dapat mengubah teknik mereka dan mengaburkan serangan mereka, tetapi sulit bagi mereka untuk menyembunyikan pola grafik mereka.
Pada bagian ketiga dari tinjauan kami, kami akan mempelajari lebih dalam analisis dan penerapan algoritma dan metode untuk menemukan kerentanan. Tetaplah bersama kami!