Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

Dengan artikel ini kami melengkapkan siri penerbitan yang dikhaskan untuk analisis perisian hasad. DALAM bahagian pertama Kami menjalankan analisis terperinci tentang fail yang dijangkiti yang diterima oleh syarikat Eropah melalui mel dan menemui perisian pengintip AgentTesla di sana. Dalam bahagian kedua menerangkan hasil analisis langkah demi langkah modul AgentTesla utama.

Hari ini Ilya Pomerantsev, pakar dalam analisis perisian hasad di CERT Group-IB, akan bercakap tentang peringkat pertama analisis perisian hasad - pembongkaran separa automatik sampel AgentTesla menggunakan contoh tiga kes mini daripada amalan pakar CERT Group-IB.

Biasanya, peringkat pertama dalam analisis perisian hasad ialah penyingkiran perlindungan dalam bentuk pembungkus, cryptor, pelindung atau pemuat. Dalam kebanyakan kes, masalah ini boleh diselesaikan dengan menjalankan perisian hasad dan melakukan pembuangan, tetapi terdapat situasi di mana kaedah ini tidak sesuai. Contohnya, jika perisian hasad ialah penyulitan, jika ia melindungi kawasan ingatannya daripada dibuang, jika kod tersebut mengandungi mekanisme pengesanan mesin maya atau jika perisian hasad but semula serta-merta selepas bermula. Dalam kes sedemikian, apa yang dipanggil "separa automatik" membongkar digunakan, iaitu, penyelidik mempunyai kawalan sepenuhnya ke atas proses dan boleh campur tangan pada bila-bila masa. Mari kita pertimbangkan prosedur ini menggunakan tiga sampel keluarga AgentTesla sebagai contoh. Ini adalah perisian hasad yang agak tidak berbahaya jika anda melumpuhkan akses rangkaiannya.

Nombor sampel 1

Fail sumber ialah dokumen MS Word yang mengeksploitasi kerentanan CVE-2017-11882.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Akibatnya, muatan dimuat turun dan dilancarkan.

Analisis pokok proses dan penanda tingkah laku menunjukkan suntikan ke dalam proses RegAsm.exe.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Terdapat ciri penanda tingkah laku AgentTesla.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Sampel yang dimuat turun ialah yang boleh dilaksanakan . NET-fail dilindungi oleh pelindung Reaktor .NET.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Mari buka dalam utiliti dnSpy x86 dan teruskan ke pintu masuk.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Dengan pergi ke fungsi DateTimeOffset, kami akan mencari kod permulaan untuk yang baharu . NET-modul. Mari letak titik putus pada talian yang kami minati dan jalankan fail.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Dalam salah satu penimbal yang dikembalikan anda boleh melihat tandatangan MZ (0x4D 0x5A). Jom simpan.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Fail boleh laku yang dibuang ialah perpustakaan dinamik yang merupakan pemuat, i.e. mengekstrak muatan daripada bahagian sumber dan melancarkannya.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Pada masa yang sama, sumber yang diperlukan sendiri tidak ada di tempat pembuangan. Mereka berada dalam sampel induk.

Utiliti dnSpy mempunyai dua fungsi yang sangat berguna yang akan membantu kami mencipta "Frankenstein" dengan cepat daripada dua fail berkaitan.

  1. Yang pertama membolehkan anda "menampal" perpustakaan dinamik ke dalam sampel induk.

    Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

  2. Yang kedua ialah menulis semula kod fungsi pada titik masuk untuk memanggil kaedah yang dikehendaki bagi perpustakaan dinamik yang dimasukkan.

    Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

Kami menyimpan set "Frankenstein" kami titik putus pada baris mengembalikan penimbal dengan sumber yang dinyahsulit, dan menghasilkan pembuangan dengan analogi dengan peringkat sebelumnya.

Lambakan kedua ditulis dalam VB.NET fail boleh laku yang dilindungi oleh pelindung yang biasa kita kenali ConfuserEx.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Selepas mengalih keluar pelindung, kami menggunakan peraturan YARA yang ditulis sebelum ini dan memastikan perisian hasad yang tidak dibungkus itu benar-benar AgentTesla.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

Nombor sampel 2

Fail sumber ialah dokumen MS Excel. Makro terbina dalam menyebabkan pelaksanaan kod hasad.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Akibatnya, skrip PowerShell dilancarkan.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Skrip menyahsulit kod C# dan memindahkan kawalan kepadanya. Kod itu sendiri ialah pemuat but, seperti yang boleh dilihat daripada laporan kotak pasir.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Muatan adalah boleh laku . NET-fail.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Membuka fail masuk dnSpy x86, anda boleh melihat bahawa ia dikaburkan. Mengeluarkan kekeliruan menggunakan utiliti de4dot dan kembali kepada analisis.

Apabila memeriksa kod, anda mungkin menemui fungsi berikut:

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Baris yang dikodkan sangat menarik Titik Masuk ΠΈ sembah. Kita letak titik putus ke baris pertama, jalankan dan simpan nilai penimbal byte_0.

Tempat pembuangan itu sekali lagi dihidupkan . NET dan dilindungi ConfuserEx.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Kami mengalih keluar kekeliruan menggunakan de4dot dan muat naik ke dnSpy. Daripada huraian fail kita faham bahawa kita sedang berhadapan dengan Pemuat CyaX-Sharp.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Pemuat ini mempunyai fungsi anti-analisis yang luas.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Fungsi ini termasuk memintas sistem perlindungan Windows terbina dalam, melumpuhkan Windows Defender, serta mekanisme pengesanan kotak pasir dan mesin maya. Ia adalah mungkin untuk memuatkan muatan dari rangkaian atau menyimpannya di bahagian sumber. Pelancaran dilakukan melalui suntikan ke dalam prosesnya sendiri, ke dalam pendua prosesnya sendiri, atau ke dalam proses MSBuild.exe, vbc.exe ΠΈ RegSvcs.exe bergantung pada parameter yang dipilih oleh penyerang.

Walau bagaimanapun, bagi kami mereka kurang penting daripada AntiDump-fungsi yang menambah ConfuserEx. Kod sumbernya boleh didapati di GitHub.

Untuk melumpuhkan perlindungan, kami akan menggunakan peluang itu dnSpy, yang membolehkan anda mengedit IL-kod.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Simpan dan pasang titik putus ke baris panggilan fungsi penyahsulitan muatan. Ia terletak di dalam pembina kelas utama.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Kami melancarkan dan membuang muatan. Menggunakan peraturan YARA yang telah ditulis sebelum ini, kami memastikan bahawa ini adalah AgentTesla.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3

Nombor sampel 3

Fail sumber adalah boleh laku VB Asli PE32-fail.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Analisis entropi menunjukkan kehadiran sekeping besar data yang disulitkan.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Semasa menganalisis borang permohonan dalam VB Decompiler anda mungkin melihat latar belakang piksel yang pelik.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Graf entropi bmp-imej adalah sama dengan graf entropi fail asal, dan saiznya ialah 85% daripada saiz fail.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Penampilan umum imej menunjukkan penggunaan steganografi.

Mari kita perhatikan rupa pokok proses, serta kehadiran penanda suntikan.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Ini menunjukkan bahawa pembongkaran sedang dijalankan. Untuk pemuat Visual Basic (aka VBKrypt atau VBInjector) kegunaan biasa shellcode untuk memulakan muatan, serta melakukan suntikan itu sendiri.

Analisis dalam VB Decompiler menunjukkan kehadiran sesuatu acara Muatkan pada borang FegatassocAirballoon2.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Mari pergi ke IDA pro ke alamat yang ditentukan dan kaji fungsinya. Kod itu sangat dikaburkan. Serpihan yang menarik minat kami dibentangkan di bawah.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Di sini ruang alamat proses diimbas untuk mendapatkan tandatangan. Pendekatan ini amat meragukan.

Pertama, alamat permulaan pengimbasan 0x400100. Nilai ini adalah statik dan tidak dilaraskan apabila tapak dianjak. Dalam keadaan rumah hijau yang ideal ia akan menunjukkan penghujungnya PE-pengepala fail boleh laku. Walau bagaimanapun, pangkalan data tidak statik, nilainya boleh berubah, dan mencari alamat sebenar tandatangan yang diperlukan, walaupun ia tidak akan menyebabkan limpahan berubah, boleh mengambil masa yang sangat lama.

Kedua, maksud tandatangan iWGK. Saya rasa jelas bahawa 4 bait terlalu kecil untuk menjamin keunikan. Dan jika anda mengambil kira titik pertama, kebarangkalian untuk membuat kesilapan adalah agak tinggi.

Malah, serpihan yang diperlukan dilampirkan pada hujung yang ditemui sebelum ini bmp-gambar mengikut offset 0xA1D0D.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
pelaksanaan Shellcode dijalankan dalam dua peringkat. Yang pertama menguraikan badan utama. Dalam kes ini, kunci ditentukan oleh kekerasan.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Buang yang dinyahsulit Shellcode dan lihat garisan.

Pertama, kita kini mengetahui fungsi untuk mencipta proses anak: CreateProcessInternalW.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Kedua, kami menyedari mekanisme penetapan dalam sistem.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Mari kita kembali kepada proses asal. Mari letak titik putus pada CreateProcessInternalW dan meneruskan pelaksanaan. Seterusnya kita lihat sambungannya NtGetContextThread/NtSetContextThread, yang menukar alamat permulaan pelaksanaan kepada alamat ShellCode.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Kami menyambung kepada proses yang dibuat dengan penyahpepijat dan mengaktifkan acara tersebut Gantung semasa memuat/memunggah libraryu, sambung semula proses dan tunggu untuk dimuatkan . NET-perpustakaan.

Lebih lanjut menggunakan ProcessHacker kawasan pembuangan yang mengandungi terbongkar . NET-permohonan.

Kami menghentikan semua proses dan memadamkan salinan perisian hasad yang telah dibenamkan dalam sistem.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Fail yang dibuang dilindungi oleh pelindung Reaktor .NET, yang boleh dialih keluar dengan mudah menggunakan utiliti de4dot.

Jumlah keluar mengundi gagal: mari dedahkan AgentTesla kepada air bersih. Bahagian 3
Menggunakan peraturan YARA yang ditulis sebelum ini, kami memastikan bahawa ini adalah AgentTesla.

Ringkasnya

Jadi, kami menunjukkan secara terperinci proses pembongkaran sampel separa automatik menggunakan tiga kes mini sebagai contoh, dan juga menganalisis perisian hasad berdasarkan kes sepenuhnya, mengetahui bahawa sampel yang dikaji ialah AgentTesla, mewujudkan fungsinya dan senarai lengkap penunjuk kompromi.

Analisis objek berniat jahat yang kami jalankan memerlukan banyak masa dan usaha, dan kerja ini harus dilakukan oleh pekerja khas dalam syarikat, tetapi tidak semua syarikat bersedia untuk menggaji penganalisis.

Salah satu perkhidmatan yang disediakan oleh Makmal Forensik Komputer dan Analisis Kod Hasad Kumpulan-IB adalah tindak balas terhadap insiden siber. Dan supaya pelanggan tidak membuang masa meluluskan dokumen dan membincangkannya di tengah-tengah serangan siber, Group-IB melancarkan Penahan Tindak Balas Insiden, perkhidmatan tindak balas insiden pra-langganan yang turut merangkumi langkah analisis perisian hasad. Maklumat lanjut tentang ini boleh didapati di sini.

Jika anda ingin mengkaji sekali lagi cara sampel AgentTesla dibongkar dan melihat cara pakar CERT Group-IB melakukannya, anda boleh memuat turun rakaman webinar mengenai topik ini di sini.

Sumber: www.habr.com

Tambah komen