RATKing: kampanye baru dengan Trojan akses jarak jauh
Pada akhir bulan Mei, kami menemukan kampanye untuk mendistribusikan malware Remote Access Trojan (RAT)—program yang memungkinkan penyerang mengontrol sistem yang terinfeksi dari jarak jauh.
Kelompok yang kami periksa dibedakan berdasarkan fakta bahwa kelompok tersebut tidak memilih keluarga RAT tertentu untuk infeksi. Beberapa Trojan terlihat dalam serangan dalam kampanye tersebut (semuanya tersedia secara luas). Dengan fitur ini, kelompok tersebut mengingatkan kita pada raja tikus - hewan mitos yang terdiri dari hewan pengerat dengan ekor yang saling bertautan.
Dokumen asli diambil dari monografi oleh K. N. Rossikov “Tikus dan hewan pengerat mirip tikus, yang paling penting secara ekonomi” (1908)
Untuk menghormati makhluk ini, kami menamai grup yang kami pertimbangkan sebagai RATKing. Dalam postingan ini, kami akan menjelaskan secara detail tentang bagaimana penyerang melakukan serangan, alat apa yang mereka gunakan, dan juga berbagi pemikiran kami tentang atribusi untuk kampanye ini.
Kemajuan serangan
Semua serangan dalam kampanye ini terjadi berdasarkan algoritma berikut:
Pengguna menerima email phishing dengan link ke Google Drive.
Dengan menggunakan tautan tersebut, korban mengunduh skrip VBS berbahaya yang menentukan perpustakaan DLL untuk memuat muatan akhir ke dalam registri Windows dan meluncurkan PowerShell untuk menjalankannya.
Pustaka DLL menyuntikkan muatan terakhir - pada kenyataannya, salah satu RAT yang digunakan oleh penyerang - ke dalam proses sistem dan mendaftarkan skrip VBS di autorun untuk mendapatkan pijakan di mesin yang terinfeksi.
Payload terakhir dieksekusi dalam proses sistem dan memberikan penyerang kemampuan untuk mengendalikan komputer yang terinfeksi.
Secara skematis dapat direpresentasikan seperti ini:
Selanjutnya, kami akan fokus pada tiga tahap pertama, karena kami tertarik dengan mekanisme pengiriman malware. Kami tidak akan menjelaskan secara detail mekanisme kerja malware itu sendiri. Mereka tersedia secara luas - baik dijual di forum khusus, atau bahkan didistribusikan sebagai proyek sumber terbuka - dan oleh karena itu tidak unik untuk grup RATKing.
Analisis tahapan serangan
Tahap 1. Email phishing
Serangan dimulai dengan korban menerima surat jahat (penyerang menggunakan templat berbeda dengan teks; tangkapan layar di bawah menunjukkan satu contoh). Pesan tersebut berisi link ke repositori yang sah drive.google.com, yang seharusnya mengarah ke halaman pengunduhan dokumen PDF.
Contoh email phishing
Namun nyatanya yang dimuat bukanlah dokumen PDF sama sekali, melainkan script VBS.
Saat Anda mengklik link dari email pada gambar di atas, sebuah file bernama Cargo Flight Details.vbs. Dalam kasus ini, penyerang bahkan tidak mencoba menyamarkan file tersebut sebagai dokumen yang sah.
Pada saat yang sama, sebagai bagian dari kampanye ini, kami menemukan sebuah skrip bernama Cargo Trip Detail.pdf.vbs. Itu sudah bisa dianggap sebagai PDF yang sah karena Windows menyembunyikan ekstensi file secara default. Benar, dalam hal ini, kecurigaan masih dapat timbul dari ikonnya, yang sesuai dengan skrip VBS.
Pada tahap ini, korban dapat mengenali penipuan tersebut: lihat saja lebih dekat file yang diunduh sebentar. Namun, dalam kampanye phishing seperti itu, penyerang sering kali mengandalkan pengguna yang lalai atau terburu-buru.
Tahap 2. Pengoperasian skrip VBS
Skrip VBS, yang dapat dibuka pengguna secara tidak sengaja, mendaftarkan perpustakaan DLL di registri Windows. Skripnya dikaburkan: baris-baris di dalamnya ditulis sebagai byte yang dipisahkan oleh karakter arbitrer.
Contoh skrip yang dikaburkan
Algoritme deobfuscation cukup sederhana: setiap karakter ketiga dikeluarkan dari string yang dikaburkan, setelah itu hasilnya didekodekan dari base16 ke dalam string asli. Misalnya saja dari nilainya 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (disorot pada gambar di atas) garis yang dihasilkan adalah WScript.Shell.
Untuk mengaburkan string, kami menggunakan fungsi Python:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Di bawah, pada baris 9-10, kami menyorot nilai yang deobfuscationnya menghasilkan file DLL. Dialah yang diluncurkan pada tahap selanjutnya menggunakan PowerShell.
String dengan DLL yang dikaburkan
Setiap fungsi dalam skrip VBS dijalankan saat string di-deobfuscate.
Setelah menjalankan skrip, fungsi tersebut dipanggil wscript.sleep — itu digunakan untuk melakukan eksekusi yang ditangguhkan.
Selanjutnya, skrip bekerja dengan registri Windows. Dia menggunakan teknologi WMI untuk ini. Dengan bantuannya, kunci unik dibuat, dan isi file yang dapat dieksekusi ditulis ke parameternya. Registri diakses melalui WMI menggunakan perintah berikut:
Pada tahap ketiga, DLL berbahaya memuat muatan terakhir, menyuntikkannya ke dalam proses sistem, dan memastikan bahwa skrip VBS dimulai secara otomatis ketika pengguna masuk.
Jalankan melalui PowerShell
DLL dijalankan menggunakan perintah berikut di PowerShell:
menerima data nilai registri dengan nama rnd_value_name — data ini adalah file DLL yang ditulis pada platform .Net;
memuat modul .Net yang dihasilkan ke dalam memori proses powershell.exe menggunakan fungsi tersebut [System.Threading.Thread]::GetDomain().Load()(deskripsi rinci tentang fungsi Load() tersedia di situs web Microsoft);
menjalankan fungsinya GUyyvmzVhebFCw]::EhwwK() - Eksekusi perpustakaan DLL dimulai dengan itu - dengan parameter vbsScriptPath, xorKey, vbsScriptName. Parameter xorKey menyimpan kunci untuk mendekripsi muatan akhir, dan parameternya vbsScriptPath и vbsScriptName ditransfer untuk mendaftarkan skrip VBS di autorun.
Deskripsi perpustakaan DLL
Dalam bentuk dekompilasi, bootloader terlihat seperti ini:
Loader dalam bentuk dekompilasi (fungsi awal eksekusi perpustakaan DLL digarisbawahi dengan warna merah)
Bootloader dilindungi oleh pelindung .Net Reactor. Utilitas de4dot melakukan pekerjaan yang sangat baik dalam menghilangkan pelindung ini.
Pemuat ini:
menyuntikkan payload ke dalam proses sistem (dalam contoh ini svchost.exe);
Saya menambahkan skrip VBS ke autorun.
Injeksi muatan
Mari kita lihat fungsi yang dipanggil oleh skrip PowerShell.
Fungsi dipanggil oleh skrip PowerShell
Fungsi ini melakukan tindakan berikut:
mendekripsi dua set data (array и array2 di tangkapan layar). Mereka awalnya dikompresi menggunakan gzip dan dienkripsi dengan algoritma XOR dengan kuncinya xorKey;
menyalin data ke area memori yang dialokasikan. Data dari array - ke area memori yang ditunjuk intPtr (payload pointer di tangkapan layar); data dari array2 - ke area memori yang ditunjuk intPtr2 (shellcode pointer di tangkapan layar);
disebut fungsinya CallWindowProcA(описание Fungsi ini tersedia di situs web Microsoft) dengan parameter berikut (nama parameter tercantum di bawah, di tangkapan layar parameter tersebut berada dalam urutan yang sama, tetapi dengan nilai yang berfungsi):
lpPrevWndFunc - penunjuk ke data dari array2;
hWnd — penunjuk ke string yang berisi jalur ke file yang dapat dieksekusi svchost.exe;
Msg - penunjuk ke data dari array;
wParam, lParam — parameter pesan (dalam hal ini, parameter ini tidak digunakan dan memiliki nilai 0);
membuat file %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlDimana <name> - ini adalah 4 karakter pertama dari parameter vbsScriptName (di tangkapan layar, potongan kode dengan tindakan ini dimulai dengan perintah File.Copy). Dengan cara ini, malware menambahkan file URL ke daftar file autorun saat pengguna masuk dan dengan demikian melekat pada komputer yang terinfeksi. File URL berisi tautan ke skrip:
Untuk memahami bagaimana injeksi dilakukan, kami mendekripsi susunan data array и array2. Untuk melakukan ini kami menggunakan fungsi Python berikut:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
Hasilnya, kami menemukan bahwa:
array adalah file PE - ini adalah muatan terakhir;
array2 adalah kode shell yang diperlukan untuk melakukan injeksi.
Shellcode dari array array2 diteruskan sebagai nilai fungsi lpPrevWndFunc menjadi suatu fungsi CallWindowProcA. lpPrevWndFunc — fungsi panggilan balik, prototipenya terlihat seperti ini:
Jadi ketika Anda menjalankan fungsinya CallWindowProcA dengan parameter hWnd, Msg, wParam, lParam shellcode dari array dijalankan array2 dengan argumen hWnd и Msg. hWnd adalah penunjuk ke string yang berisi jalur ke file yang dapat dieksekusi svchost.exeDan Msg — penunjuk ke muatan akhir.
Shellcode menerima alamat fungsi dari kernel32.dll и ntdll32.dll berdasarkan nilai hash dari namanya dan memasukkan muatan akhir ke dalam memori proses svchost.exemenggunakan teknik Process Hollowing (lebih lanjut dapat dibaca di sini Artikel). Saat menyuntikkan kode shell:
menciptakan sebuah proses svchost.exe dalam keadaan ditangguhkan menggunakan fungsi tersebut CreateProcessW;
lalu sembunyikan tampilan bagian di ruang alamat proses svchost.exe menggunakan fungsi NtUnmapViewOfSection. Dengan demikian, program membebaskan memori dari proses aslinya svchost.exeuntuk kemudian mengalokasikan memori untuk payload di alamat ini;
memori yang dialokasikan untuk payload di ruang alamat proses svchost.exe menggunakan fungsi VirtualAllocEx;
Mulai dari proses injeksi
menulis isi payload ke dalam ruang alamat proses svchost.exe menggunakan fungsi WriteProcessMemory (seperti pada gambar di bawah);
melanjutkan prosesnya svchost.exe menggunakan fungsi ResumeThread.
Menyelesaikan proses injeksi
Malware yang dapat diunduh
Sebagai hasil dari tindakan yang dijelaskan, salah satu dari beberapa malware kelas RAT diinstal pada sistem yang terinfeksi. Tabel di bawah mencantumkan malware yang digunakan dalam serangan tersebut, yang dapat kami kaitkan dengan yakin ke satu kelompok penyerang, karena sampel mengakses server perintah dan kontrol yang sama.
Contoh malware yang didistribusikan dengan server kontrol yang sama
Ada dua hal yang perlu diperhatikan di sini.
Pertama, fakta bahwa penyerang menggunakan beberapa keluarga RAT yang berbeda sekaligus. Perilaku ini tidak biasa terjadi pada kelompok dunia maya terkenal, yang sering kali menggunakan seperangkat alat yang kurang lebih sama dengan yang mereka kenal.
Kedua, RATKing menggunakan malware yang dijual di forum khusus dengan harga murah, atau bahkan merupakan proyek sumber terbuka.
Daftar malware yang lebih lengkap yang digunakan dalam kampanye ini—dengan satu peringatan penting—diberikan di akhir artikel.
Tentang grup
Kami tidak dapat mengaitkan kampanye jahat yang dijelaskan tersebut dengan penyerang yang diketahui. Untuk saat ini, kami yakin serangan-serangan ini dilakukan oleh kelompok yang secara fundamental baru. Seperti yang kami tulis di awal, kami menyebutnya RATKing.
Untuk membuat skrip VBS, grup tersebut mungkin menggunakan alat yang mirip dengan utilitas VBS-Crypter dari pengembang NYAN-x-CAT. Hal ini ditandai dengan kemiripan skrip yang dibuat program ini dengan skrip penyerang. Secara khusus, keduanya:
melakukan eksekusi tertunda menggunakan fungsi tersebut Sleep;
gunakan WMI;
daftarkan isi file yang dapat dieksekusi sebagai parameter kunci registri;
jalankan file ini menggunakan PowerShell di ruang alamatnya sendiri.
Untuk lebih jelasnya, bandingkan perintah PowerShell untuk menjalankan file dari registri, yang digunakan oleh skrip yang dibuat menggunakan VBS-Crypter:
Perhatikan bahwa penyerang menggunakan utilitas lain dari NYAN-x-CAT sebagai salah satu muatannya - LimeRAT.
Alamat server C&C menunjukkan ciri khas lain dari RATKing: grup lebih memilih layanan DNS dinamis (lihat daftar C&C di tabel IoC).
IoC
Tabel di bawah ini memberikan daftar lengkap skrip VBS yang kemungkinan besar dapat dikaitkan dengan kampanye yang dijelaskan. Semua skrip ini serupa dan melakukan kira-kira urutan tindakan yang sama. Semuanya menyuntikkan malware kelas RAT ke dalam proses Windows yang tepercaya. Semuanya memiliki alamat C&C yang terdaftar menggunakan layanan DNS Dinamis.
Namun, kami tidak dapat mengklaim bahwa semua skrip ini didistribusikan oleh penyerang yang sama, kecuali sampel dengan alamat C&C yang sama (misalnya, kimjoy007.dyndns.org).