Petualangan Malvari yang Sulit dipahami, Bagian III: Skrip VBA yang rumit untuk Tawa dan Keuntungan



Artikel ini adalah bagian dari seri Fileless Malware. Semua bagian seri lainnya:


Dalam dua posting terakhir (di sini dan di sini ) kita berbicara tentang metode serangan bebas file, tetapi cukup berbahaya. Sekarang kita akhirnya siap untuk mengambil malware tanpa filel yang nyata. Situs analisis hibrid (selanjutnya disebut HA) adalah sumber daya yang saya andalkan untuk menemukan "makhluk" berbahaya ini. Sebagai aturan, informasi yang HA berikan untuk setiap sampel: panggilan sistem, lalu lintas internet, dll. - cukup untuk memenuhi kebutuhan keamanan TI yang khas. Saya tertarik untuk terjun ke salah satu contoh kode yang sangat membingungkan ini untuk melihat apa yang sebenarnya terjadi di sana.

Jika Anda ingin mengulangi setelah saya, maka saya sarankan Anda melakukan ini di kotak pasir, misalnya, di Amazon Web Services. Dan jika Anda memeriksa ini di komputer Anda, pastikan untuk mengomentari panggilan sistem yang meluncurkan PowerShell.

Di dalam kode VBA yang membingungkan


Malware yang akhirnya saya temukan di situs analisis hibrid adalah skrip VBA yang tertanam dalam dokumen Word. Seperti yang saya sebutkan terakhir kali, Anda perlu OfficeMalScanner milik Frank Baldwin untuk melihat kode sebenarnya.
Setelah mengekstrak skrip, saya mengunduh kode ke perpustakaan makro MS Word, dan kemudian meluncurkan debugging langkah-demi-langkah menggunakan debugger bawaan. Tujuan saya adalah untuk lebih memahami apa yang tersembunyi di balik kebingungan: untuk memainkan analitik IB dan mengalami keberhasilan dan kekecewaan yang terkait dengan pekerjaan ini.

Jika Anda, seperti saya, pertama kali memutuskan untuk melakukan ini di debugger, maka kemungkinan besar Anda akan minum lebih dari satu cangkir teh (atau kopi), membuat jalan Anda melalui kode rumit yang menakjubkan atau mengamati, berkedip, pada variabel L_JEK, yang diberi garis "77767E6C797A6F6" .
Bekerja dengan skrip VBA yang membingungkan ini, saya menyadari bahwa hanya sebagian kecil saja yang berguna. Sebagian besar kode ada hanya untuk menyesatkan Anda.
Pada akhirnya, saya mengambil tangkapan layar sebagian kecil dari kode yang melakukan semua pekerjaan jahat dengan memulai baris perintah PowerShell, yang akhirnya dipicu oleh makro VBA.


Tricky: ambil saja nilai hex dan kurangi 7 untuk ASCII nyata.


Ini sangat sederhana. Kode VBA berisi dalam beberapa variabel catatan dari baris perintah akhir dalam notasi heksadesimal, dan kemudian mengubahnya menjadi string karakter. Satu-satunya "trik" di sini adalah bahwa nilai heksadesimal diimbangi dengan 0x07. Jadi, misalnya, bagian pertama dari string heksadesimal diperoleh dari L_JEK, yang diberi nilai "77767E6C797A6F6". Jika Anda mengambil 0x77 dan mengurangi 0x07, Anda mendapatkan hex 0x70. Lakukan hal yang sama untuk 0x76 dan Anda mendapatkan hex 0x6F. Lihatlah mereka dalam tabel kode ASCII mana saja, dan Anda akan melihat bahwa itu cocok dengan dua huruf pertama dari β€œpowershell”.

Sebenarnya, ini bukan keterjeratan yang paling sulit, tetapi ini tidak diperlukan! Yang perlu Anda lakukan adalah melewati pemindai antivirus yang lalu untuk mencari kata kunci tertentu atau representasi mereka dalam bentuk string ASCII. Bahwa sampel ini cukup baik dan bagus. Akhirnya, setelah skrip membuat ulang baris perintah, skrip menjalankannya melalui fungsi CreateProcess (lihat di bawah):


Komentari panggilan sistem atau atur breakpoint di depannya.


Pikirkan sebentar. Dokumen Word dikirim ke karyawan melalui email phishing. Ketika dokumen dibuka, skrip VBA ini secara otomatis memulai sesi PowerShell untuk memulai fase serangan berikutnya. Tidak ada file yang dapat dieksekusi, dan skrip yang dikaburkan dengan tenang menghindar dari antivirus dan pemindai lainnya.

Ini dia Jahat!

Demi rasa ingin tahu, saya mengunduh makro lain dari situs HA (di bawah) untuk melihat apa lagi yang terjadi. Kode kedua ini kira-kira sama dengan kode di atas.


Kode rahasia tertanam dalam VBA.


Tetapi kemudian kode ini sedikit lebih inventif dalam cara mengembalikan baris perintah. Ada fungsi decoding yang disebut "d" yang menyaring karakter dari string dasar, membandingkannya dengan string kontrol kedua. Ini sudah merupakan gagasan tingkat sekolah menengah, dan juga melakukan pekerjaan yang sangat baik: dengan mudah menghindari scanner dan trik admin yang hanya melihat log untuk tindakan yang tidak biasa.

Perhentian selanjutnya


Dalam seri publikasi pertama saya tentang kebingungan, saya menunjukkan bahwa log peristiwa Windows mencatat banyak detail dari sesi PowerShell, yaitu, jika Anda mengaktifkan pengaturan yang sesuai untuk dapat melakukan analisis mendalam setelah fakta peretasan .

Tentu saja, ini juga memiliki kompleksitas tertentu dari serangan bebas file, karena hampir tidak mungkin untuk menentukan apakah skrip PowerShell melakukan sesuatu yang buruk dengan hanya memeriksa perintah di sana sambil melihat peristiwa log keamanan.

Kenapa kamu bertanya?

Karena sesi PowerShell dimulai setiap saat, dan kode berbahaya dari sesi PowerShell dari satu peretas dapat diluncurkan pada saat yang sama dengan kode yang sah dari administrator IT PowerShell yang baik. Jika Anda menerima pemberitahuan setiap kali skrip PS mengunduh sesuatu dari Internet, terlalu banyak kesalahan positif akan dihasilkan.

Kesimpulannya dapat ditarik sebagai berikut: kita melihat ketidakmampuan alat pertahanan perimeter tradisional untuk menghentikan serangan seperti itu, email phishing dan malware FUD, dan prospek yang bagus untuk analisis perilaku .

Singkatnya, ini adalah pertempuran yang sengaja dihilangkan untuk menghentikan peretas masuk ke dalam perimeter. Strategi terbaik adalah mengidentifikasi akses yang tidak biasa dan mencurigakan ke file dan meluncurkan aplikasi, dan kemudian menanggapinya dengan menonaktifkan akun atau mengambil tindakan lain dalam menanggapi pelanggaran.

Pada bagian selanjutnya, kita akan melihat jenis serangan bebas file yang lebih canggih.

Source: https://habr.com/ru/post/id459506/


All Articles