Pengunduh Buhtrap Baru

Hari ini kami akan memberi tahu Anda tentang pendekatan baru untuk mengirim malware ke grup Buhtrap.



Modul bootloader


Pada tanggal 19 Desember, kami mengetahui adanya surat berbahaya yang berisi file yang dapat dieksekusi ( md5: faf833a1456e1bb85117d95c23892368 ). File tersebut mengambil berbagai nama: "Rekonsiliasi untuk December.exe", "Documents wednesday.exe", "Dokumen 19.12.exe", "Menutup dokumen wednesday.exe".

Dari menarik - file ini ditulis dalam. Net, yang tidak khas untuk kelompok kriminal ini. Untuk mendekompilasi .Net, Anda dapat menggunakan perangkat lunak apa pun: Reflektor , dotPeek , dnSpy , ILSpy . Dalam artikel ini kita akan berbicara tentang fitur implementasi file ini dan bagaimana kita menganalisanya.

Inspeksi awal bootloader


Untuk analisis, kami menggunakan dnSpy , dan semua tangkapan layar lebih lanjut akan berasal dari itu.
Karena kebiasaan, buka executable di IDA Pro dan lihat bagian impor. Contoh:



Kehadiran beberapa fungsi menunjukkan adanya muatan yang dikemas ( LoadCursorW , LoadIconW - dapatkan objek dari sumber daya, VirtualProtect - mengubah atribut halaman, lalu Anda dapat menjalankan kode) dan anti-debugging sederhana ( IsDebuggerPresent ). Tapi semuanya ternyata lebih sederhana. Eksekusi bahkan tidak mencapai IsDebuggerPresent, dan LoadCursorW dan LoadIconW tidak berguna karena mereka mencoba mengakses sumber daya yang tidak ada (LoadCursorW dari " fiza " dan LoadIconW dari " saxikulatebutohutejijobododore "):





Tetapi kembali ke dekompiler dnSpy . Dalam file yang dapat dieksekusi, kami melihat sejumlah besar kode yang tidak dikelola:



Untuk memahami kode yang tidak dikelola dalam file yang sedang diselidiki, kami akan menggunakan IDA Pro. Cara termudah adalah dengan melihat isi kode yang tidak dikelola dalam bentuk hex. Untuk melakukan ini, buka Offset File offset. Menggunakan fungsi _main () sebagai contoh:





Selanjutnya, di IDA Pro, kami akan mencari berdasarkan hex-sequence:



Pada output, kita mendapatkan fungsi _main () yang tidak dikelola, yang dengannya Anda dapat dengan mudah bekerja dengan bantuan dekompiler idov:





Menerima payload


Kembali ke dnSpy. Perhatian ditarik ke data payloadData .





Kami menemukan urutan ini di IDA Pro, dapatkan tautan ke sana, dan mengetahui bahwa panggilan tersebut terjadi hanya pada fungsi _main () :



Kode yang didekompilasi menggunakan buffer ini terlihat seperti ini:



Fungsi-fungsi berikut bertanggung jawab untuk mengonversi buffer ini:



Di sini, variabel holdrand diinisialisasi ke 0xEA48CB16 dan fungsi foo () dipanggil dalam loop untuk setiap byte dari payloadData ( parameter c sbyte ). Perlu dicatat bahwa fungsi t () berasal dari kode yang tidak aman: jika Anda melihat kodenya, Anda dapat memastikan bahwa selalu mengembalikan 0x343FD .

Kami mempersenjatai diri dengan IDA Pro dan, melihat buffer yang dibongkar, kami melihat bahwa itu berisi beberapa kode di awal:



Pada offset 0x15A0 dari awal buffer, file yang dapat dieksekusi terletak:



Simpan untuk analisis nanti.

Nah, dalam kode yang dapat dieksekusi itu sendiri, hal yang agak sepele diimplementasikan. Pertama, struktur berikut terbentuk (di sini mz_base adalah alamat offset dalam buffer dengan PE yang dibongkar, dan bidang yang tersisa adalah alamat fungsi yang diperlukan dan pegangan perpustakaan ):



Dan kemudian, menggunakan fungsi yang diperoleh, proses dari file yang dapat dieksekusi yang sama dibuat ( md5: faf833a1456e1bb85117d95c23892368 ), dan executable yang tidak dibongkar dipetakan ke alamat virtual dari proses baru. Setelah mengubah alamat instruksi yang dapat dieksekusi ( GetThreadContext dan bundel SetThreadContext ), utas proses baru dimulai, dan proses induk itu sendiri terbunuh.

Nah, sekarang kita beralih ke analisis file executable yang dihasilkan (payload).

Bongkar Muat


Payload ( md5 dump: d8f40c7060c44fab57df87ab709f058f ) juga ditulis di .Net Framework.

Untuk melindungi dari analisis statis dan dinamis, pengembang malware menggunakan pelindung ConfuserEx populer terbaru:



ConfuserEx adalah pelindung open source yang mapan.

Pembongkaran primer


Titik masuk file yang dilindungi oleh pelindung ini adalah sebagai berikut:



Setelah dekripsi, array byte dimuat ke dalam memori dalam bentuk modul yang disebut koi . Kemudian metode utama modul ini ditentukan dan dipanggil. Pada platform .Net, metode atau konstruktor dalam sebuah modul dapat diperoleh dari token metadata dengan memanggil fungsi Module.ResolveMethod () . Untuk mentransfer kontrol ke metode yang diperoleh, fungsi MethodBase.Invoke () digunakan.



Kode yang dapat dieksekusi dalam modul koi adalah sebagai berikut:



Untuk menghapus tapak, kami menggunakan utilitas berikut:


ConfuserEx-Unpacker mendekripsi baris dan kode di dalam metode, dan de4dot membuat nama metode dapat dibaca.

Hasilnya adalah kode yang cocok untuk analisis statis:



Tentu saja, kami beruntung mendapatkan kode yang dapat dibaca. Penulis virus dapat memodifikasi kode sumber untuk tapak ConfuserEx untuk lebih mempersulit analisis.
Masih ada dua masalah yang harus diselesaikan untuk analisis file yang nyaman.

Masalah 1


Setelah menghapus tapak, decompiler tidak dapat menguraikan beberapa metode. Sebagai contoh:



Jika Anda beralih ke kode-IL, Anda akan melihat panggilan di pointer nol:



Untuk memperbaiki kesalahan dekompilasi, ganti instruksi yang salah dengan instruksi nop. (Utilitas dnSpy memungkinkan Anda untuk memodifikasi kode dekompilasi dan kode IL.)
Setelah penggantian, kode yang didekompilasi terlihat benar:



Mengubah kode-IL dalam semua metode yang bermasalah, kami mendapat file yang sepenuhnya terurai.

Masalah 2


File yang dihasilkan tidak mungkin untuk memulai, dan ini mengecualikan kemungkinan analisis dinamis. Untuk mengatasi masalah ini, Anda harus menentukan token metode input dalam struktur file yang dapat dieksekusi.

Anda dapat menemukannya di salah satu dari dua cara:

  • lihat di bawah debugging dengan parameter mana fungsi dipanggil

Module.ResolveMethod () sebelum membongkar file:



  • di file yang belum dibongkar cari metode dengan label [STAThread] :



Dalam hal ini, token metadata untuk metode input adalah 0x6000106 . Kami mengubahnya menggunakan utilitas CFF Explorer :



Setelah menyimpan perubahan, file yang sudah dibuka mulai dan mendebug dengan benar.

Analisis bootloader


Segera setelah mulai bekerja, bootloader memeriksa apakah sedang berjalan di lingkungan virtual.
Berjalan di bawah VMWare atau QEMU ditentukan dengan mencari substring "vmware" dan "qemu" dalam nilai registri berikut:

  • [HKLM \ System \ CurrentControlSet \ Services \ Disk \ Enum \ 0].

Jika mesin virtual terdeteksi, bootloader menampilkan pesan jendela yang sesuai:



Menariknya, output dari pesan ini tidak mempengaruhi operasi proses.

Setelah itu, malware mencoba memuat pustaka dari daftar berikut ke dalam memori: SbieDll.dll, dbghelp.dll, api_log.dll, dir_watch.dll, pstorec.dll, vmcheck.dll, wpespy.dll, snxhk.dll, guard32.dll .

Selain itu, dengan menggunakan panggilan ke fungsi Debugger.IsLogging () dan Debugger.get_IsAttached () , loader memeriksa apakah ia berjalan di bawah debugger.
Jika setidaknya salah satu pustaka memuat dengan sukses atau loader mendeteksi bahwa ia berjalan di bawah debugger, itu akan menghapus sendiri menggunakan perintah " cmd / C ping 8.8.8.8 -n 1 -w 3000> Nul & Del ". Menariknya, bootloader dapat menghapus sendiri bahkan pada sistem nyata dengan memuat pustaka dbghelp.dl .

Selanjutnya, malware memeriksa apakah diluncurkan dari direktori yang berisi substring "Mozilla".

Jika prosesnya tidak dimulai dari direktori yang berisi substring "Mozilla"


  • VPO membentuk daftar direktori yang terletak di desktop dan berisi substring berikut (semua baris di dalam bootloader dienkripsi menggunakan algoritma AES-256-ECB, kunci enkripsi dihasilkan menggunakan kata sandi yang dikodekan dengan keras):



  • Menghasilkan daftar URL dari riwayat browser yang berisi substring berikut:



  • Menghasilkan daftar file yang terletak di direktori "% UserProfile% \\ Desktop", "% AppData%", "C: \\ Program Files (x86)", "C: \\ Program Files (x86) (x86)" dan memiliki nama-nama berikut:



  • Menghitung jumlah daftar tidak kosong dari indikator yang terkait dengan operasi perbankan (dalam versi saat ini dari bootloader, fungsi ini tidak mempengaruhi apa pun).
  • Membuat tugas untuk menjalankan file ini setiap kali pengguna login menggunakan perintah "schtasks / create / f / sc ONLOGON / RL TERTINGGI / tn LimeRAT-Admin / tr".
  • Jika tugas tidak dapat dibuat, buat pintasan "% AppData% \\ Microsoft \\ Windows \\ Start Menu \\ Program \\ Startup \\ MozillaUpdate.lnk", yang menunjukkan "% Appdata% \\ Mozilla \\ xaudiodg.exe" , yang memastikan bahwa file xaudiodg.exe diluncurkan setiap kali sistem dihidupkan ulang.
  • Ini menyalin dirinya di sepanjang jalan "% AppData% \\ Mozilla \\ xaudiodg.exe".
  • Menghapus file <self_path>: Zone.Identifier, menjalankan xaudiodg.exe dan menghapus sendiri.

Jika proses dimulai dari direktori yang berisi substring "Mozilla"


  • Malware juga mencari indikator operasi perbankan di atas dalam sistem yang terinfeksi.
  • Mengumpulkan informasi sistem lainnya untuk dikirim ke server manajemen.
  • Dalam utas terpisah mengirim informasi ke C&C dan menunggu respons dari server.
  • Di utas lain, ia mengirimkan string terenkripsi "PING?" Ke server dalam satu lingkaran tanpa akhir.

Interaksi Server Manajemen


Alamat IP server dalam sampel malware yang diuji adalah 213.252.244 [.] 200. Koneksi diinisialisasi oleh port yang dipilih secara acak dari daftar:

β€’ 8989,
β€’ 5656,
β€’ 2323.

Segera setelah koneksi diinisialisasi, bootloader mengirimkan informasi tentang sistem yang terinfeksi ke C&C:

β€’ ID pengguna,
β€’ nama pengguna
β€’ versi OS,
β€’ versinya sendiri (loader v0.2.1),
β€’ daftar indikator operasi perbankan yang ditemukan pada sistem yang terinfeksi.

Contoh garis yang dikirim oleh loader ke server manajemen:

Β«INFO<NYANxCAT>9D3A4B22D21C<NYANxCAT>IEUser<NYANxCAT> Windows 7 Enterprise SP 1 <NYANxCAT>loader v0.2.1<NYANxCAT><NYANxCAT><NYANxCAT>1c, Β» 


Baris ini akan dikirim jika ada folder "1c" di desktop pengguna yang terinfeksi, dan tidak ada indikator lain.
Fungsi untuk memproses respons dari server adalah sebagai berikut:



Respons yang didekripsi dari server adalah sebagai berikut:

  •  COMMAND<NYANxCAT>DATA1<NYANxCAT>DATA2<NYANxCAT>… 

Seperti yang dapat dilihat dari tangkapan layar, COMMAND dapat mengambil salah satu dari nilai berikut:

  • TUTUP - mengakhiri koneksi dan menutup proses saat ini;
  • DW - menerjemahkan konten base64 dari DATA2, menulisnya ke file <temp_file_name> dengan ekstensi dari DATA1, dan meluncurkan file untuk dieksekusi;
  • UPDATE - menerjemahkan konten base64 dari DATA1, menulisnya ke file dengan nama <temp_file_name> dan ekstensi .exe, meluncurkan file yang dapat dieksekusi baru dan membersihkannya sendiri;
  • RD- - mengirimkan string "RD-" sebagai respons;
  • RD + - mengirim tangkapan layar ke server manajemen;
  • DEL - hapus sendiri.

Selama penyelidikan bootloader, kami berhasil mendapatkan perintah DW dari server penyerang. Sebagai akibatnya, perangkat lunak Punto Switcher diinstal dengan DLL winmm.dll berbahaya (md5: 9d25553bb09e2785262b2f7ba7923605), yang merupakan modul spyware Buhtrap.

TCP Stream adalah sebagai berikut:





Untuk mengenkripsi data yang dikirimkan antara klien dan server manajemen, algoritma AES-128-ECB digunakan. Kunci enkripsi diinisialisasi dengan kata sandi hard-coded.

Setelah dekripsi, lalu lintas adalah sebagai berikut:





Dari base64, penginstal NSIS diterjemahkan dengan konten berikut:



Menariknya, server merespons, meskipun daftar indikator perbankan kosong.

DLL berbahaya


Pustaka winmm.dll dieksekusi menggunakan teknik pembajakan dll. Modul berbahaya mengirim informasi tentang sistem yang terinfeksi dan daftar pembaca kartu pintar yang aktif ke C&C. Selain itu, ia memiliki komponen keylogger dan dapat menerima modul berbahaya lainnya dari server pengelola, jalankan dari disk atau dalam memori proses saat ini. C & C-server dari sampel yang diteliti berada di alamat berikut:

  • hxxp: // my1cprovider [.] xyz: 6060 / klog [.] php
  • hxxp: // tinderminderorli1999 [.] xyz: 7764 / klog [.] php

Kesimpulan


Proses infeksi dapat direpresentasikan sebagai skema berikut:



Terlepas dari perlindungan yang baik terhadap analisis, jelas bahwa saat ini bootloader tidak berfungsi dengan benar dan kemungkinan besar dalam proses pengembangan:

  • dapat menghapus sendiri bahkan pada sistem nyata;
  • memeriksa koneksi sistem yang terinfeksi dengan operasi perbankan sebelum menyalin dirinya sendiri ke β€œ% AppData% \\ Mozilla \\ xaudiodg.exe” dan sebelum berinteraksi dengan C&C, tetapi tidak menggunakan informasi ini dengan cara apa pun.

Akhirnya, ingat pesan jendela aneh. Menariknya, apakah ini cacat pada pengembang - atau itu dilakukan secara khusus untuk mendorong pengguna meninggalkan lingkungan virtual dan mulai menggunakan mesin nyata? Selamat datang di komentar.

IOC


MD5:

faf833a1456e1bb85117d95c23892368
9d25553bb09e2785262b2f7ba7923605

URL:

hxxp: // my1cprovider [.] xyz: 6060 / klog [.] php
hxxp: // tinderminderorli1999 [.] xyz: 7764 / klog [.] php
IP:
213.252.244 [.] 200

Source: https://habr.com/ru/post/id434626/


All Articles