Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

Dengan artikel ini kami melengkapi rangkaian publikasi yang ditujukan untuk analisis perangkat lunak berbahaya. DI DALAM bagian pertama Kami melakukan analisis mendetail terhadap file terinfeksi yang diterima perusahaan Eropa melalui surat dan menemukan spyware AgentTesla di sana. Di dalam bagian kedua menjelaskan hasil analisis langkah demi langkah modul utama AgentTesla.

Hari ini Ilya Pomerantsev, spesialis analisis malware di CERT Group-IB, akan berbicara tentang tahap pertama analisis malware - pembongkaran sampel AgentTesla secara semi-otomatis menggunakan contoh tiga kasus kecil dari praktik spesialis CERT Group-IB.

Biasanya, tahap pertama dalam analisis malware adalah penghapusan proteksi berupa pengemas, kriptor, pelindung, atau pemuat. Dalam kebanyakan kasus, masalah ini dapat diselesaikan dengan menjalankan malware dan melakukan dump, namun ada situasi di mana metode ini tidak cocok. Misalnya, jika malware tersebut merupakan enkripsi, jika malware tersebut melindungi wilayah memorinya agar tidak dibuang, jika kode tersebut berisi mekanisme deteksi mesin virtual, atau jika malware melakukan boot ulang segera setelah dimulai. Dalam kasus seperti itu, apa yang disebut pembongkaran β€œsemi-otomatis” digunakan, yaitu peneliti memiliki kendali penuh atas proses tersebut dan dapat melakukan intervensi kapan saja. Mari kita pertimbangkan prosedur ini menggunakan tiga sampel keluarga AgentTesla sebagai contoh. Ini adalah malware yang relatif tidak berbahaya jika Anda menonaktifkan akses jaringannya.

Contoh No.1

File sumber adalah dokumen MS Word yang mengeksploitasi kerentanan CVE-2017-11882.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Hasilnya, payload diunduh dan diluncurkan.

Analisis pohon proses dan penanda perilaku menunjukkan injeksi ke dalam proses RegAsm.exe.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Ada penanda perilaku yang merupakan karakteristik AgentTesla.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Sampel yang diunduh adalah sampel yang dapat dieksekusi NET.-file dilindungi oleh pelindung .NET Reaktor.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Mari kita buka di utilitas dnSpy x86.dnSpy xXNUMX dan melanjutkan ke titik masuk.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Dengan masuk ke fungsinya TanggalWaktuOffset, kita akan menemukan kode inisialisasi untuk yang baru NET.-modul. Ayo taruh breakpoint pada baris yang kita minati dan jalankan file tersebut.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Di salah satu buffer yang dikembalikan Anda dapat melihat tanda tangan MZ (0x4D 0x5A). Mari kita simpan.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
File executable yang dibuang adalah perpustakaan dinamis yang merupakan pemuat, mis. mengekstrak muatan dari bagian sumber daya dan meluncurkannya.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Pada saat yang sama, sumber daya yang diperlukan tidak tersedia di tempat pembuangan sampah. Mereka ada dalam sampel orang tua.

Π° dnSpy memiliki dua fungsi yang sangat berguna yang akan membantu kita membuat "Frankenstein" dengan cepat dari dua file terkait.

  1. Yang pertama memungkinkan Anda untuk "menempelkan" perpustakaan dinamis ke dalam sampel induk.

    Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

  2. Yang kedua adalah menulis ulang kode fungsi pada titik masuk untuk memanggil metode yang diinginkan dari perpustakaan dinamis yang dimasukkan.

    Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

Kami menyimpan set "Frankenstein" kami breakpoint di jalur mengembalikan buffer dengan sumber daya yang didekripsi, dan menghasilkan dump dengan analogi dengan tahap sebelumnya.

Dump kedua ditulis VB.NET file yang dapat dieksekusi yang dilindungi oleh pelindung yang kita kenal BingungEx.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Setelah menghapus pelindung, kami menggunakan aturan YARA yang ditulis sebelumnya dan memastikan bahwa malware yang dibongkar benar-benar AgentTesla.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

Contoh No.2

File sumber adalah dokumen MS Excel. Makro bawaan menyebabkan eksekusi kode berbahaya.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Hasilnya, skrip PowerShell diluncurkan.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Skrip mendekripsi kode C# dan mentransfer kontrol ke dalamnya. Kodenya sendiri adalah bootloader, seperti juga terlihat dari laporan sandbox.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Payloadnya dapat dieksekusi NET.-mengajukan.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Membuka file di dnSpy x86.dnSpy xXNUMX, Anda dapat melihat bahwa itu dikaburkan. Menghapus kebingungan menggunakan utilitas de4dot dan kembali ke analisis.

Saat memeriksa kode, Anda mungkin menemukan fungsi berikut:

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Garis-garis yang dikodekan sangat mencolok Titik masuk ΠΈ memohon. Kami meletakkan breakpoint ke baris pertama, jalankan dan simpan nilai buffer byte_0.

Dump lagi-lagi merupakan aplikasi aktif NET. dan dilindungi BingungEx.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Kami menghapus kebingungan menggunakan de4dot dan unggah ke dnSpy. Dari deskripsi file kami memahami apa yang kami hadapi Pemuat CyaX-Sharp.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Loader ini memiliki fungsi anti-analisis yang luas.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Fungsionalitas ini mencakup melewati sistem perlindungan Windows bawaan, menonaktifkan Windows Defender, serta mekanisme deteksi kotak pasir dan mesin virtual. Dimungkinkan untuk memuat payload dari jaringan atau menyimpannya di bagian sumber daya. Peluncuran dilakukan melalui injeksi ke dalam prosesnya sendiri, ke dalam duplikat prosesnya sendiri, atau ke dalam proses MSBuild.exe, vbc.exe ΠΈ RegSvcs.exe tergantung pada parameter yang dipilih oleh penyerang.

Namun, bagi kami, hal itu kurang penting dibandingkan Anti Dump-fungsi yang menambahkan BingungEx. Kode sumbernya dapat ditemukan di GitHub.

Untuk menonaktifkan perlindungan, kami akan menggunakan kesempatan ini dnSpy, yang memungkinkan Anda mengedit IL-kode.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Simpan dan instal breakpoint ke jalur pemanggilan fungsi dekripsi muatan. Itu terletak di konstruktor kelas utama.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Kami meluncurkan dan membuang muatannya. Dengan menggunakan aturan YARA yang ditulis sebelumnya, kami memastikan bahwa ini adalah AgentTesla.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3

Contoh No.3

File sumber dapat dieksekusi VB Asli PE32-mengajukan.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Analisis entropi menunjukkan adanya sebagian besar data terenkripsi.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Saat menganalisis formulir aplikasi di Dekompiler VB Anda mungkin melihat latar belakang piksel yang aneh.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Grafik entropi bmp-gambar identik dengan grafik entropi file asli, dan ukurannya 85% dari ukuran file.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Tampilan umum gambar menunjukkan penggunaan steganografi.

Mari kita perhatikan tampilan pohon proses, serta keberadaan penanda injeksi.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Ini menunjukkan bahwa pembongkaran sedang berlangsung. Untuk pemuat Visual Basic (alias VBKrypt ΠΈΠ»ΠΈ VBInjektor) penggunaan biasa kode cangkang untuk menginisialisasi payload, serta untuk melakukan injeksi itu sendiri.

Analisis di Dekompiler VB menunjukkan adanya suatu peristiwa Beban pada formulir FegatassocBalon Udara2.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Mari pergi ke IDA pro ke alamat yang ditentukan dan pelajari fungsinya. Kode ini sangat dikaburkan. Fragmen yang menarik bagi kami disajikan di bawah ini.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Di sini ruang alamat proses dipindai untuk mendapatkan tanda tangan. Pendekatan ini sangat meragukan.

Pertama, alamat awal pemindaian 0x400100. Nilai ini bersifat statis dan tidak berubah ketika alasnya digeser. Dalam kondisi rumah kaca yang ideal, ini akan menunjukkan akhir PE-header file yang dapat dieksekusi. Namun, database tidak statis, nilainya dapat berubah, dan pencarian alamat sebenarnya dari tanda tangan yang diperlukan, meskipun tidak menyebabkan variabel meluap, dapat memakan waktu yang sangat lama.

Kedua, arti tanda tangan iWGK. Saya rasa sudah jelas bahwa 4 byte terlalu kecil untuk menjamin keunikan. Dan jika kita memperhitungkan poin pertama, kemungkinan terjadinya kesalahan cukup tinggi.

Faktanya, fragmen yang diperlukan dilampirkan pada akhir dari yang ditemukan sebelumnya bmp-gambar dengan offset 0xA1D0D.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Eksekusi Kode cangkang dilakukan dalam dua tahap. Yang pertama menguraikan bagian utama. Dalam hal ini, kuncinya ditentukan dengan kekerasan.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Buang yang sudah didekripsi Kode cangkang dan lihat garisnya.

Pertama, sekarang kita mengetahui fungsi untuk membuat proses anak: BuatProsesInternalW.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Kedua, kita menjadi sadar akan mekanisme fiksasi dalam sistem.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Mari kita kembali ke proses awal. Ayo taruh breakpoint pada BuatProsesInternalW dan melanjutkan eksekusi. Selanjutnya kita melihat hubungannya NtGetContextThread/NtSetContextThread, yang mengubah alamat awal eksekusi menjadi alamat Kode Shell.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Kami terhubung ke proses yang dibuat dengan debugger dan mengaktifkan acara Tangguhkan saat perpustakaanu memuat/membongkar, lanjutkan proses dan tunggu pemuatan NET.-perpustakaan.

Penggunaan lebih lanjut Peretas Proses daerah pembuangan yang berisi belum dikemas NET.-aplikasi.

Kami menghentikan semua proses dan menghapus salinan malware yang tertanam di sistem.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
File yang dibuang dilindungi oleh pelindung .NET Reaktor, yang dapat dengan mudah dihapus menggunakan utilitas de4dot.

Jumlah pemilih gagal: mari kita paparkan AgentTesla ke air bersih. Bagian 3
Dengan menggunakan aturan YARA yang ditulis sebelumnya, kami memastikan bahwa ini adalah AgentTesla.

untuk meringkas

Jadi, kami mendemonstrasikan secara detail proses pembongkaran sampel semi-otomatis menggunakan tiga kasus mini sebagai contoh, dan juga menganalisis malware berdasarkan kasus lengkap, menemukan bahwa sampel yang diteliti adalah AgentTesla, menetapkan fungsinya dan a daftar lengkap indikator kompromi.

Analisis terhadap objek jahat yang kami lakukan memerlukan banyak waktu dan tenaga, dan pekerjaan ini harus dilakukan oleh karyawan khusus di perusahaan, namun tidak semua perusahaan siap mempekerjakan seorang analis.

Salah satu layanan yang disediakan oleh Laboratorium Forensik Komputer dan Analisis Kode Berbahaya Group-IB adalah respons terhadap insiden dunia maya. Dan agar pelanggan tidak membuang waktu untuk menyetujui dokumen dan mendiskusikannya di tengah serangan dunia maya, Group-IB meluncurkan Retainer Respons Insiden, layanan respons insiden pra-langganan yang juga mencakup langkah analisis malware. 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.

Sumber: www.habr.com

Tambah komentar