Dengan artikel ini, kami menyelesaikan serangkaian publikasi yang ditujukan untuk analisis malware. Pada bagian
pertama, kami melakukan analisis terperinci atas file yang terinfeksi yang diterima melalui pos oleh perusahaan Eropa dan menemukan spyware AgentTesla di sana. Bagian
kedua menggambarkan hasil analisis bertahap dari modul AgentTesla utama.
Hari ini Ilya Pomerantsev, spesialis analisis malware CERT Group-IB, akan berbicara tentang tahap pertama analisis malware - membongkar semi-otomatis sampel AgentTesla menggunakan tiga mini-case dari praktik ahli CERT Group-IB.
Biasanya tahap pertama dalam analisis malware adalah penghapusan perlindungan dalam bentuk packer, cryptor, tread atau bootloader. Dalam kebanyakan kasus, masalah ini diselesaikan dengan memulai malware dan dumping, tetapi ada situasi ketika metode ini tidak cocok. Misalnya, jika malware adalah enkripsi, jika melindungi wilayah memorinya dari dump, jika kode tersebut berisi mekanisme untuk mendeteksi mesin virtual, atau jika, segera setelah memulai, malware tersebut melakukan reboot. Dalam kasus seperti itu, apa yang disebut pembongkaran "semi otomatis" digunakan, yaitu, peneliti sepenuhnya mengontrol proses dan dapat campur tangan kapan saja. Pertimbangkan prosedur ini menggunakan tiga sampel keluarga AgentTesla sebagai contoh. Ini adalah malware yang relatif tidak berbahaya jika Anda menonaktifkan akses jaringannya.
Jumlah sampel 1
File sumber adalah dokumen MS Word yang mengeksploitasi kerentanan CVE-2017-11882.
Akibatnya, muatan dimuat dan diluncurkan.
Analisis pohon proses dan penanda perilaku menunjukkan suntikan ke proses
RegAsm.exe .
Penanda perilaku khusus AgentTesla tersedia.
Sampel yang diunduh adalah file
.NET yang dapat dieksekusi yang dilindungi oleh
.NET Reactor protector.
Buka di utilitas
x86 dnSpy dan beralih ke titik masuk.
Memasuki fungsi
DateTimeOffset , kami menemukan kode inisialisasi untuk modul
.NET baru. Letakkan
breakpoint pada baris yang menarik bagi kami dan jalankan file.
Di salah satu buffer yang dikembalikan, Anda dapat melihat tanda tangan MZ (
0x4D 0x5A ). Simpan itu.
File yang dapat dieksekusi yang dibuang adalah perpustakaan dinamis, yang merupakan pemuat, mis. mengekstrak payload dari bagian sumber daya dan meluncurkannya.
Pada saat yang sama, sumber daya yang diperlukan itu sendiri tidak tersedia di dump. Mereka berada di sampel induk.
Utilitas
dnSpy memiliki dua fitur yang sangat berguna yang akan membantu kami dengan cepat membuat Frankenstein dari dua file yang ditautkan.
- Yang pertama memungkinkan Anda untuk "menempelkan" perpustakaan dinamis ke dalam sampel induk.

- Yang kedua adalah menulis ulang kode fungsi di titik masuk untuk memanggil metode yang diinginkan dari perpustakaan dinamis yang dimasukkan.
Kami menyimpan "Frankenstein" kami, meletakkan
breakpoint pada baris yang mengembalikan buffer dengan sumber yang didekripsi, dan membuangnya dengan analogi dengan langkah sebelumnya.
Dump kedua adalah file yang dapat dieksekusi yang ditulis dalam
VB.NET yang dilindungi oleh pelindung
ConfuserEx yang kita
tahu .
Setelah menghapus tapak, kami menggunakan aturan YARA yang ditulis sebelumnya dan memastikan bahwa malware yang dibongkar itu benar-benar AgentTesla.
Jumlah sampel 2
File sumber adalah dokumen MS Excel. Makro built-in mengarah ke pelaksanaan kode berbahaya.
Akibatnya, skrip PowerShell diluncurkan.
Script mendekripsi kode dalam C # dan mentransfer kontrol ke sana. Kode itu sendiri adalah loader, yang juga terlihat di laporan kotak pasir.
Payload adalah file
.NET yang dapat dieksekusi.
Dengan membuka file di
dnSpy x86 , Anda dapat melihat bahwa file itu dikaburkan. Hapus kebingungan dengan utilitas
de4dot dan kembali ke analisis.
Selama penelitian kode, Anda dapat menemukan fungsi berikut:
String yang dikodekan
EntryPoint dan
Invoke sangat
mencolok . Kami
meletakkan breakpoint di baris pertama, mulai dan simpan nilai buffer
byte_0 .
Dump lagi
aplikasi .NET dan dilindungi oleh
ConfuserEx .
Hapus kebingungan dengan
de4dot dan muat ke
dnSpy . Kami mengerti dari deskripsi file yang kami temui
loader CyaX-Sharp .
Bootloader ini memiliki fungsionalitas anti-parsing yang luas.
Fungsionalitas ini mencakup memintas sistem perlindungan Windows bawaan, menonaktifkan Windows Defender, serta mekanisme untuk mendeteksi kotak pasir dan mesin virtual. Dimungkinkan untuk memuat muatan dari jaringan atau menyimpannya di bagian sumber daya. Peluncuran ini dilakukan melalui suntikan ke dalam proses sendiri, ke dalam duplikat dari proses sendiri, atau ke dalam proses
MSBuild.exe ,
vbc.exe dan
RegSvcs.exe , tergantung pada parameter yang dipilih oleh penyerang.
Namun, bagi kami mereka kurang signifikan daripada fungsi
AntiDump yang ditambahkan oleh
ConfuserEx . Kode sumbernya dapat ditemukan di
GitHub .
Untuk menonaktifkan perlindungan, gunakan
fitur dnSpy , yang memungkinkan Anda untuk mengedit kode
IL .
Kami menyimpan dan meletakkan
breakpoint pada saluran panggilan fungsi dekripsi payload. Itu ada di konstruktor kelas utama.
Luncurkan dan buang muatannya. Menggunakan aturan YARA yang ditulis sebelumnya, kami memastikan bahwa kami memiliki AgentTesla.
Jumlah sampel 3
File sumber adalah file
VB Native PE32 yang dapat dieksekusi.
Analisis entropi menunjukkan adanya fragmen besar data terenkripsi.
Saat menganalisis formulir aplikasi dalam
VB Decompiler, Anda mungkin melihat latar belakang piksel yang aneh.
Plot entropi dari gambar
bmp identik dengan plot entropi dari file sumber, dan ukurannya adalah 85% dari ukuran file.
Tampilan umum gambar menunjukkan penggunaan steganografi.
Mari kita perhatikan tampilan pohon proses, serta keberadaan penanda injeksi.
Ini menunjukkan pembongkaran. Untuk loader pada Visual Basic (alias
VBKrypt atau
VBInjector ), biasanya menggunakan
shellcode untuk menginisialisasi payload, serta untuk mengeksekusi injeksi itu sendiri.
Analisis dalam
VB Decompiler mengungkapkan keberadaan acara
Load pada formulir
FegatassocAirballoon2 .
Mari kita pergi ke
IDA pro di alamat yang ditentukan dan mempelajari fungsinya. Kode ini sangat dikaburkan. Fragmen yang menarik minat kami disajikan di bawah ini.
Di sinilah ruang alamat dari proses dipindai untuk tanda tangan. Pendekatan ini sangat diragukan.
Pertama, alamat mulai pindai adalah
0x400100 . Nilai ini statis dan tidak disesuaikan ketika basis digeser. Dalam kondisi rumah kaca yang ideal, ini akan mengarah ke akhir header
PE dari file yang dapat dieksekusi. Namun, database tidak statis, nilainya dapat berubah, dan pencarian alamat sebenarnya dari tanda tangan yang diinginkan, meskipun tidak menyebabkan variabel meluap, bisa memakan waktu yang sangat lama.
Kedua, nilai tanda tangan
iWGK . Saya pikir jelas bahwa 4 byte terlalu kecil untuk menjamin keunikan. Dan jika Anda memperhitungkan poin pertama, kemungkinan melakukan kesalahan cukup tinggi.
Bahkan, fragmen yang diinginkan melekat pada akhir gambar
bmp yang ditemukan sebelumnya pada offset
0xA1D0D .
Shellcode berjalan dalam dua tahap. Yang pertama mendekripsi tubuh utama. Dalam hal ini, kunci ditentukan oleh pencarian lengkap.
Buang
Shellcode yang didekripsi dan lihat garis-garisnya.
Pertama, kita sekarang tahu fungsi untuk membuat proses anak:
CreateProcessInternalW .
Kedua, kami menjadi sadar akan mekanisme konsolidasi dalam sistem.
Kembali ke proses semula. Setel
breakpoint ke
CreateProcessInternalW dan lanjutkan eksekusi. Selanjutnya, kita amati bundel
NtGetContextThread / NtSetContextThread , yang mengubah alamat mulai dari eksekusi ke alamat
ShellCode .
Kami terhubung ke proses yang dibuat oleh debugger, mengaktifkan acara
Tunda pada pustaka muat / bongkar , lanjutkan proses dan tunggu pemuatan pustaka
.NET .
Selanjutnya, menggunakan
ProcessHucker, kami membuang daerah yang berisi aplikasi
.NET yang belum dibongkar.
Kami menghentikan semua proses dan menghapus salinan malware yang diperbaiki dalam sistem.
File dump dilindungi oleh
.NET Reactor protector, yang dapat dengan mudah dihapus menggunakan utilitas
de4dot .
Menggunakan aturan YARA yang ditulis sebelumnya, kami memastikan bahwa kami memiliki AgentTesla di depan kami.
Untuk meringkas
Jadi, kami mendemonstrasikan secara terperinci proses pembongkaran sampel semi-otomatis dengan menggunakan contoh tiga mini-case, dan juga menganalisis malware berdasarkan kasus lengkap, menemukan bahwa sampel yang diselidiki adalah AgentTesla, menetapkan fungsionalitasnya dan daftar lengkap indikator kompromi.
Analisis objek jahat yang kami lakukan memerlukan banyak waktu dan upaya, dan pekerjaan ini harus dilakukan oleh karyawan khusus di perusahaan, tetapi tidak semua perusahaan siap untuk mempertahankan analis pada staf.
Salah satu layanan yang disediakan oleh Laboratorium Group-IB untuk Forensik Komputer dan Analisis Kode Berbahaya adalah respons terhadap insiden cyber. Dan agar pelanggan tidak membuang waktu untuk mengoordinasikan dokumen dan berdiskusi di tengah-tengah serangan dunia maya, Group-IB meluncurkan
Incident Response Retainer , layanan respons insiden pra-berlangganan yang juga mencakup langkah analisis kode berbahaya. Informasi lebih lanjut tentang ini dapat ditemukan di
sini .
Jika Anda ingin mempelajari sekali lagi bagaimana sampel AgentTesla dibongkar dan melihat bagaimana spesialis CERT Group-IB melakukannya, Anda dapat mengunduh rekaman webinar tentang topik ini di
sini .