Pada penghujung bulan Mei, kami menemui kempen untuk mengedarkan perisian hasad Remote Access Trojan (RAT)—program yang membenarkan penyerang mengawal sistem yang dijangkiti dari jauh.
Kumpulan yang kami periksa dibezakan oleh fakta bahawa ia tidak memilih mana-mana keluarga RAT khusus untuk jangkitan. Beberapa Trojan telah diperhatikan dalam serangan dalam kempen (semuanya tersedia secara meluas). Dengan ciri ini, kumpulan itu mengingatkan kami tentang raja tikus - haiwan mitos yang terdiri daripada tikus dengan ekor berjalin.
Asal diambil dari monograf oleh K. N. Rossikov "Tikus dan tikus seperti tikus, yang paling penting dari segi ekonomi" (1908)
Untuk menghormati makhluk ini, kami menamakan kumpulan yang kami pertimbangkan untuk RATKing. Dalam siaran ini, kami akan menerangkan secara terperinci tentang cara penyerang melakukan serangan, alat yang mereka gunakan, dan juga berkongsi pendapat kami tentang atribusi untuk kempen ini.
Kemajuan serangan
Semua serangan dalam kempen ini berlaku mengikut algoritma berikut:
Pengguna menerima e-mel pancingan data dengan pautan ke Google Drive.
Menggunakan pautan, mangsa memuat turun skrip VBS berniat jahat yang menentukan perpustakaan DLL untuk memuatkan muatan akhir ke dalam pendaftaran Windows dan melancarkan PowerShell untuk melaksanakannya.
Pustaka DLL menyuntik muatan akhir - sebenarnya, salah satu RAT yang digunakan oleh penyerang - ke dalam proses sistem dan mendaftarkan skrip VBS dalam autorun untuk mendapatkan pijakan dalam mesin yang dijangkiti.
Muatan akhir telah dilaksanakan dalam proses sistem dan memberikan penyerang keupayaan untuk mengawal komputer yang dijangkiti.
Secara skematik ia boleh diwakili seperti ini:
Seterusnya, kami akan memberi tumpuan kepada tiga peringkat pertama, kerana kami berminat dengan mekanisme penghantaran perisian hasad. Kami tidak akan menerangkan secara terperinci mekanisme pengendalian perisian hasad itu sendiri. Ia tersedia secara meluas - sama ada dijual di forum khusus, atau bahkan diedarkan sebagai projek sumber terbuka - dan oleh itu tidak unik kepada kumpulan RATKing.
Analisis peringkat serangan
Peringkat 1. E-mel pancingan data
Serangan bermula dengan mangsa menerima surat berniat jahat (penyerang menggunakan templat berbeza dengan teks; tangkapan skrin di bawah menunjukkan satu contoh). Mesej itu mengandungi pautan ke repositori yang sah drive.google.com, yang kononnya membawa kepada halaman muat turun dokumen PDF.
Contoh e-mel pancingan data
Walau bagaimanapun, sebenarnya, ia bukan dokumen PDF yang dimuatkan sama sekali, tetapi skrip VBS.
Apabila anda mengklik pada pautan dari e-mel dalam tangkapan skrin di atas, fail bernama Cargo Flight Details.vbs. Dalam kes ini, penyerang tidak cuba untuk menyamar fail sebagai dokumen yang sah.
Pada masa yang sama, sebagai sebahagian daripada kempen ini, kami menemui skrip bernama Cargo Trip Detail.pdf.vbs. Ia sudah boleh lulus untuk PDF yang sah kerana Windows menyembunyikan sambungan fail secara lalai. Benar, dalam kes ini, syak wasangka masih boleh ditimbulkan oleh ikonnya, yang sepadan dengan skrip VBS.
Pada peringkat ini, mangsa dapat mengenali penipuan: cuma lihat lebih dekat pada fail yang dimuat turun sebentar. Walau bagaimanapun, dalam kempen pancingan data sedemikian, penyerang sering bergantung pada pengguna yang lalai atau tergesa-gesa.
Peringkat 2. Operasi skrip VBS
Skrip VBS, yang boleh dibuka oleh pengguna secara tidak sengaja, mendaftarkan perpustakaan DLL dalam pendaftaran Windows. Skrip itu dikaburkan: baris di dalamnya ditulis sebagai bait yang dipisahkan oleh aksara sewenang-wenangnya.
Contoh skrip yang dikelirukan
Algoritma penyahkeliruan agak mudah: setiap aksara ketiga dikecualikan daripada rentetan yang dikelirukan, selepas itu hasilnya dinyahkodkan daripada base16 ke dalam rentetan asal. Sebagai contoh, daripada nilai 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (diserlahkan dalam tangkapan skrin di atas) baris yang terhasil ialah WScript.Shell.
Untuk menyahkelirukan rentetan, 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 menyerlahkan nilai yang penyahkeliruannya menghasilkan fail DLL. Dialah yang dilancarkan pada peringkat seterusnya menggunakan PowerShell.
Rentetan dengan DLL yang dikelirukan
Setiap fungsi dalam skrip VBS telah dilaksanakan apabila rentetan dinyahkelirukan.
Selepas menjalankan skrip, fungsi itu dipanggil wscript.sleep — ia digunakan untuk melaksanakan pelaksanaan tertunda.
Seterusnya, skrip berfungsi dengan pendaftaran Windows. Dia menggunakan teknologi WMI untuk ini. Dengan bantuannya, kunci unik telah dicipta, dan badan fail boleh laku ditulis pada parameternya. Pendaftaran telah diakses melalui WMI menggunakan arahan berikut:
Entri yang dibuat dalam pendaftaran oleh skrip VBS
Peringkat 3. Pengendalian perpustakaan DLL
Pada peringkat ketiga, DLL berniat jahat memuatkan muatan akhir, menyuntiknya ke dalam proses sistem, dan memastikan bahawa skrip VBS dimulakan secara automatik apabila pengguna log masuk.
Jalankan melalui PowerShell
DLL telah dilaksanakan menggunakan arahan berikut dalam PowerShell:
menerima data nilai pendaftaran dengan nama rnd_value_name — data ini ialah fail DLL yang ditulis pada platform .Net;
memuatkan modul .Net yang terhasil ke dalam memori proses powershell.exe menggunakan fungsi tersebut [System.Threading.Thread]::GetDomain().Load()(huraian terperinci tentang fungsi Load(). tersedia di laman web Microsoft);
melaksanakan fungsi tersebut GUyyvmzVhebFCw]::EhwwK() - pelaksanaan perpustakaan DLL bermula dengannya - dengan parameter vbsScriptPath, xorKey, vbsScriptName. Parameter xorKey menyimpan kunci untuk menyahsulit muatan akhir, dan parameter vbsScriptPath и vbsScriptName telah dipindahkan untuk mendaftarkan skrip VBS dalam autorun.
Penerangan mengenai perpustakaan DLL
Dalam bentuk decompiled, pemuat but kelihatan seperti ini:
Pemuat dalam bentuk decompiled (fungsi yang memulakan pelaksanaan perpustakaan DLL digariskan dengan warna merah)
Pemuat but dilindungi oleh pelindung .Net Reactor. Utiliti de4dot melakukan tugas yang sangat baik untuk mengalih keluar pelindung ini.
Pemuat ini:
menyuntik muatan ke dalam proses sistem (dalam contoh ini ia svchost.exe);
Saya menambah skrip VBS ke autorun.
Suntikan muatan
Mari lihat fungsi yang dipanggil skrip PowerShell.
Fungsi dipanggil oleh skrip PowerShell
Fungsi ini melakukan tindakan berikut:
menyahsulit dua set data (array и array2 dalam tangkapan skrin). Mereka pada asalnya dimampatkan menggunakan gzip dan disulitkan dengan algoritma XOR dengan kunci xorKey;
menyalin data ke kawasan memori yang diperuntukkan. Data daripada array - ke kawasan ingatan yang ditunjuk intPtr (payload pointer dalam tangkapan skrin); data daripada array2 - ke kawasan ingatan yang ditunjuk intPtr2 (shellcode pointer dalam tangkapan skrin);
dipanggil fungsi CallWindowProcA(Penerangan Fungsi ini tersedia di laman web Microsoft) dengan parameter berikut (nama parameter disenaraikan di bawah, dalam tangkapan skrin mereka berada dalam susunan yang sama, tetapi dengan nilai yang berfungsi):
lpPrevWndFunc - penunjuk kepada data daripada array2;
hWnd — penunjuk kepada rentetan yang mengandungi laluan ke fail boleh laku svchost.exe;
Msg - penunjuk kepada data daripada array;
wParam, lParam — parameter mesej (dalam kes ini, parameter ini tidak digunakan dan mempunyai nilai 0);
mencipta fail %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlJika <name> - ini ialah 4 aksara pertama parameter vbsScriptName (dalam tangkapan skrin, serpihan kod dengan tindakan ini bermula dengan arahan File.Copy). Dengan cara ini, perisian hasad menambah fail URL pada senarai fail autorun apabila pengguna log masuk dan dengan itu menjadi dilampirkan pada komputer yang dijangkiti. Fail URL mengandungi pautan ke skrip:
Untuk memahami cara suntikan dijalankan, kami menyahsulit tatasusunan 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 mendapati bahawa:
array ialah fail PE - ini ialah muatan akhir;
array2 adalah shellcode yang diperlukan untuk menjalankan suntikan.
Shellcode daripada tatasusunan array2 diluluskan sebagai nilai fungsi lpPrevWndFunc menjadi fungsi CallWindowProcA. lpPrevWndFunc — fungsi panggil balik, prototaipnya kelihatan seperti ini:
Jadi apabila anda menjalankan fungsi CallWindowProcA dengan parameter hWnd, Msg, wParam, lParam shellcode daripada tatasusunan dilaksanakan array2 dengan hujah hWnd и Msg. hWnd ialah penunjuk kepada rentetan yang mengandungi laluan ke fail boleh laku svchost.exeDan Msg — penunjuk kepada muatan akhir.
Kod shell menerima alamat fungsi daripada kernel32.dll и ntdll32.dll berdasarkan nilai hash dari nama mereka dan menyuntik muatan akhir ke dalam memori proses svchost.exemenggunakan teknik Proses Hollowing (anda boleh membaca lebih lanjut mengenainya dalam ini artikel). Apabila menyuntik shellcode:
mencipta satu proses svchost.exe dalam keadaan digantung menggunakan fungsi tersebut CreateProcessW;
kemudian menyembunyikan paparan bahagian dalam ruang alamat proses svchost.exe menggunakan fungsi tersebut NtUnmapViewOfSection. Oleh itu, program ini membebaskan memori proses asal svchost.exeuntuk kemudian memperuntukkan memori untuk muatan di alamat ini;
memori yang diperuntukkan untuk muatan dalam ruang alamat proses svchost.exe menggunakan fungsi tersebut VirtualAllocEx;
Permulaan proses suntikan
menulis kandungan muatan ke dalam ruang alamat proses svchost.exe menggunakan fungsi tersebut WriteProcessMemory (seperti dalam tangkapan skrin di bawah);
meneruskan proses itu svchost.exe menggunakan fungsi tersebut ResumeThread.
Menyelesaikan proses suntikan
perisian hasad yang boleh dimuat turun
Hasil daripada tindakan yang diterangkan, salah satu daripada beberapa perisian hasad kelas RAT telah dipasang pada sistem yang dijangkiti. Jadual di bawah menyenaraikan perisian hasad yang digunakan dalam serangan itu, yang kami yakin boleh mengaitkan kepada satu kumpulan penyerang, memandangkan sampel tersebut mengakses pelayan arahan dan kawalan yang sama.
Contoh perisian hasad yang diedarkan dengan pelayan kawalan yang sama
Dua perkara yang patut diberi perhatian di sini.
Pertama, fakta bahawa penyerang menggunakan beberapa keluarga RAT yang berbeza sekaligus. Tingkah laku ini bukan tipikal untuk kumpulan siber yang terkenal, yang sering menggunakan lebih kurang set alat yang sama yang biasa bagi mereka.
Kedua, RATKing menggunakan perisian hasad yang sama ada dijual di forum khusus dengan harga yang rendah, atau malah projek sumber terbuka.
Senarai perisian hasad yang lebih lengkap yang digunakan dalam kempen—dengan satu kaveat penting—diberikan pada penghujung artikel.
Mengenai kumpulan itu
Kami tidak boleh mengaitkan kempen berniat jahat yang diterangkan kepada mana-mana penyerang yang diketahui. Buat masa ini, kami percaya bahawa serangan ini dilakukan oleh kumpulan yang pada asasnya baru. Seperti yang kami tulis pada mulanya, kami memanggilnya RATKing.
Untuk mencipta skrip VBS, kumpulan itu mungkin menggunakan alat yang serupa dengan utiliti VBS-Crypter daripada pemaju NYAN-x-CAT. Ini ditunjukkan oleh persamaan skrip yang dibuat oleh program ini dengan skrip penyerang. Secara khusus, mereka berdua:
melaksanakan pelaksanaan tertunda menggunakan fungsi tersebut Sleep;
gunakan WMI;
daftarkan badan fail boleh laku sebagai parameter kunci pendaftaran;
laksanakan fail ini menggunakan PowerShell dalam ruang alamatnya sendiri.
Untuk kejelasan, bandingkan arahan PowerShell untuk menjalankan fail daripada pendaftaran, yang digunakan oleh skrip yang dibuat menggunakan VBS-Crypter:
Ambil perhatian bahawa penyerang menggunakan utiliti lain daripada NYAN-x-CAT sebagai salah satu muatan - LimeRAT.
Alamat pelayan C&C menunjukkan satu lagi ciri tersendiri RATKing: kumpulan itu memilih perkhidmatan DNS dinamik (lihat senarai C&C dalam jadual IoC).
IoC
Jadual di bawah menyediakan senarai lengkap skrip VBS yang kemungkinan besar boleh dikaitkan dengan kempen yang diterangkan. Semua skrip ini adalah serupa dan melakukan lebih kurang urutan tindakan yang sama. Kesemua mereka menyuntik perisian hasad kelas RAT ke dalam proses Windows yang dipercayai. Kesemua mereka mempunyai alamat C&C yang didaftarkan menggunakan perkhidmatan DNS Dinamik.
Walau bagaimanapun, kami tidak boleh mendakwa bahawa semua skrip ini diedarkan oleh penyerang yang sama, kecuali sampel dengan alamat C&C yang sama (contohnya, kimjoy007.dyndns.org).