Baru-baru ini Seqrite Laboratorium mengamati kampanye phishing yang mengirimkan pencuri data Formbook melalui lampiran email. Formbook, seperti yang terlihat sejak 2016, telah berevolusi dalam banyak hal, dari fitur siluman hingga teknik penghindaran. Dijual di forum peretasan sebagai Malware as a Service, kita dapat melihat sejumlah varian. Meskipun teknik penghindarannya tetap sama, beberapa lapisan digunakan sebelum menyebarkan muatan berbahaya, dan muatan tersebut hanya dimuat di memori untuk menghindari identifikasi. Seperti varian lainnya, ini juga menggunakan steganografi untuk menyembunyikan file berbahaya di dalam gambar, mendekripsinya untuk dimuat dan dijalankan di memori.
Varian ini berisi tiga tahap sebelum muatan akhir
- Purchase Order.exe/XXXI.exe
- Arthur.dll
- Montero.dll
- MASM (Muatan Akhir)

Analisis teknis:
Dimulai dengan email spear phishing yang berisi perintah pembelian beserta lampiran berkas zip. Setelah diekstraksi, email tersebut hanya berisi satu berkas PE PurchaseOrder.exe yang merupakan biner terkompilasi dotnet.

Tahap 1 (Purchase Order.exe):
Varian ini menyembunyikan malware tahap 2 dan tahap 3 di dalam sumber daya Purchase Order.exe. Nama sumber daya “Hkyl” seperti yang ditunjukkan pada Gambar 2 adalah tahap 3 biner.
Awalnya, malware tersebut tidur selama sembilan detik sebelum melanjutkan untuk mendekripsi muatan tahap 2. Seperti yang ditunjukkan pada Gambar 3, malware tersebut mengambil data terenkripsi tahap 2 dari APP sumber daya yang ada di dalam sumber daya Purchase Order.exe dan menyimpannya dalam array byte. Ia juga menyimpan 16 byte kunci dekripsi untuk muatan tahap 2, yaitu “AP7H9H5OI4478F8CH05FGA".


Sebelum mendekripsi payload tahap 2, seperti yang ditunjukkan pada Gambar 4, ia membuat array ke-3 berukuran 256 byte dan menginisialisasinya dengan nilai dari 0 hingga 255.

Setelah itu, ia menyiapkan array3 dengan menyalin 16 byte kunci ke posisi acak.

Setelah mengatur nilai array3, ia melakukan xoring data terenkripsi dengan array3 dan menyimpannya di array2 yang sekarang berisi file PE Tahap 2 arthur.dll,
Untuk mengeksekusi file dll tahap 2, ia menggunakan InvokeMember() untuk memuat assembly yang telah didekripsi (Arthur.dll) ke dalam memori melalui metode Load. Seperti yang ditunjukkan pada Gambar 5, ia tidak menggunakan fungsi Load secara langsung tetapi mendapatkan nilai dari sebuah objek, nilai HJ adalah Load.

Tahap 2 (Arthur.dll):
Setelah dimuat ke dalam memori, ia memanggil MainForm.Justy() dari file PE tahap 2 dengan tiga argumen. Ia menggunakan argumen-argumen ini dalam file PE tahap 2 untuk mendapatkan file PE tahap 3.


- WA = “486B796C”=Hkyl (Sumber Daya di PembelianOrder.exe, Gambar 2)
- WZ = “62616F” = bao (Kunci Dekripsi untuk tahap 3)
- @namespace = “AssessExampleCombatForm”[Nama Proyek PurchaseOrder.exe]
Awalnya, tahap 2 ini tidur selama empat belas detik sebelum melanjutkan mendekripsi tahap 3.
Fungsi ini mendekripsi gambar dengan menggunakan kunci yang dilewatkan sebagai argumen, lalu mengekstrak nilai merah, hijau, dan biru dari setiap piksel non-transparan dalam gambar dan membuat array.

Array ini ketika di-XOR-kan dengan menggunakan nilai [ bao ] yang dilewatkan selama tahap 2 akan menghasilkan montero.dll tahap 3 yang juga dimuat ke dalam memori menggunakan metode Assembly.Load. Setelah mendapatkan metode utama gnWmyvSdDoAS8VNPBy.ukHjJHqoK1 ( ) dari modul tahap 3, maka metode tersebut dipanggil.

Tahap 3 (Montero.dll):
Pada file PE tahap 3 ini, sebelum memanggil metode utama ukHjJHqoK1(), konstruktornya mendekripsi pengaturan konfigurasi yang diperlukan. Pengaturan ini berisi kunci dekripsi payload akhir, nama mutex dan flag mutex diaktifkan atau tidak, lokasi drop file, perilaku pengunduhan file diaktifkan atau tidak, lokasi pengunduhan file, dll. Pengaturan konfigurasi ini disimpan dalam array [gnWmyvSdDoAS8VNPBy.YiEuqBAod0]

Setelah mendekripsi pengaturan konfigurasi, program memeriksa apakah flag Mutex diaktifkan pada lokasi ke-29 dari array YiEuqBAod0. Jika benar, program akan membuat mutex dengan nama “ zpkpGXyWHvBpdzNULuLRtAzq ”. Jika mutex sudah ada, program akan menghentikan dirinya sendiri. Perilaku ini umumnya diimplementasikan untuk menghindari deteksi oleh vendor keamanan dan untuk menghindari menjalankan instance kedua dari malware yang sama. Kemudian program memverifikasi flag Sleep. Jika diaktifkan, program akan tidur untuk menunda eksekusinya agar sandbox tidak dapat menangkap perilaku jahatnya.

Kemudian, program memeriksa apakah flag yang menampilkan kotak pesan diaktifkan pada lokasi ke- 30 dalam array YiEuqBAod0. Jika diaktifkan, kotak pesan akan muncul untuk mengelabui pengguna.

Setelah itu, ia memverifikasi lokasi ke - 10 dari array YiEuqBAod0 yang digunakan sebagai kemampuan jalur pengecualian. Jika diaktifkan, ia menambahkan jalur malware ke pengecualian dan mengeksekusi cmdlet ini oleh biner LOL [powershel.exe] dalam atribut jendela tersembunyi untuk menghindari deteksi vendor antivirus serta menyembunyikan perilakunya dari korban.

Lokasi ke - 5 dari array YiEuqBAod0, lokasi ini digunakan untuk mengunduh payload lain atau memperbarui fitur tugas. Jika flag ini diaktifkan, ia akan mengunduh keluarga malware lain atau menerima perintah dari aktor ancaman C2 dan memasukkan perintah tersebut ke dalam file XML di lokasi %temp% dan mengeksekusi file tersebut dari lokasi %temp%. XML ini diberikan sebagai impor dalam tugas terjadwal.

Lokasi ke - 2 dari array YiEuqBAod0, pelaku ancaman menggunakan lokasi ini sebagai tempat penyebaran file. Jika flag ini diaktifkan, malware awalnya memeriksa “qwwnzxGmN.exe” apakah file tersebut sudah ada di “C:\Users\username\AppData\Roaming” pada host korban. Jika file tersebut tidak ada di lokasi tersebut, malware akan membuat file dengan atribut tersembunyi, yaitu salinan sendiri dari file induk. Properti ini dapat digunakan oleh penyerang untuk menyamarkan keberadaan malware ini agar administrator dan pengguna tidak dapat menemukannya.

Setelah file induk disalin sendiri ke lokasi “%appdata%Roaming” seperti yang disebutkan pada Gambar 14, file ini akan ditambahkan ke jalur pengecualian. Kemudian, data yang dikodekan base64, yang telah didekripsi dalam konstruktor metode utama tahap 3, akan didekode menjadi string berupa file XML. File XML ini berisi nilai yang menghasilkan tugas. Nilai-nilai tersebut meliputi atribut tersembunyi file malware , persistensi, fitur yang diaktifkan, eksekusi perintah jalur file, dan lain sebagainya.


Berkas XML ini dibuat di lokasi %temp% sebagai "*.tmp", kemudian memperbarui nilai yang diperlukan dalam berkas XML seperti "Lokasi" dan "ID PENGGUNA", dll. Setelah itu, tugas terjadwal dibuat dengan atribut janda tersembunyi untuk menyembunyikan perilaku korban demi persistensi, seperti "updates\qwwnzxGmN", dan mengimpor berkas XML tersebut. Pelaku ancaman menghapus berkas tmp untuk menghindari jejak bagi analis keamanan.

Gambar 18 menunjukkan modul tahap ke-3 yang mendekripsi muatan akhir. Variabel gnWmyvSdDoAS8VNPBy.AtOuOF5iCk = “ 4kQLt8DIME ” adalah nama sumber daya (dalam motero.dll). gnWmyvSdDoAS8VNPBy.NJMuDv6Sv6 = “ pqDVZxpXC ” adalah kuncinya. Ia memuat sumber daya dan meneruskannya ke metode dekripsi Pp62t2mj9p bersama dengan KUNCI.
Metode dekripsi menyimpan muatan akhir di gnWmyvSdDoAS8VNPBy. w9Yu0dnomp.


Muatan akhir ini berupa biner terkompilasi MASM 32-bit dengan hanya bagian ".text". Kode dekripsi dan enkripsi berkasnya sangat dikaburkan berdasarkan kebutuhan.

Setelah mendekripsi muatan akhir dalam buffer, ia memeriksa lokasi pertama dari array YiEuqBAod0, berdasarkan nilai ini ia memilih proses target untuk proses hollowing. Pelaku ancaman telah memberikan nilai 0 hingga 4. Jika nilainya 4, ia memuat muatan akhir ke dalam memori dengan metode pemuatan assembly dan mengeksekusi titik masuk muatan akhir.

Jika nilainya “ 1 ”, maka nama proses target yang dipilih adalah MSBuild.exe untuk process hollowing; jika nilainya “ 2 ”, nama proses target adalah vbc.exe; jika nilainya “ 3 ”, nama proses target adalah RegSvcs.exe. Jika tidak ada nilai di atas yang disebutkan, maka proses target yang dipilih adalah file induk.

Pada konstruktor Tahap 3, ia mendekripsikan rangkaian API untuk pengosongan Proses dalam Metode bLmuzQDIA5() yang menyimpan CreateProcessA, malware ini membuat proses yang ditargetkan berdasarkan nilai di atas Gambar 17 dan membuat proses tersebut dalam mode ditangguhkan.
![]()

Metode je3uFjEe5y() menyimpan WriteProcessMemory, mendekripsi bagian muatan akhir “.text” dalam memori proses yang ditargetkan.

IOCS:
6A9F890C529C410FA32793F496E7F200
0DA34A44EE4876DD5E35939AF02F1D32
D751816C3673935BF989716ABD0DAB21
F8EC1BE3F2BD8269DB033375ED1A841E
Deteksi:
Trojan.Formbook.S34651912
Aturan Yara:
impor “pe”
aturan Formbook_varainat
{
string:
$s1=”AP7H9H5OI4478F8CH05FGA” wide ascii
$s2 ={67 B7 76 87 0A C8 C4 5E 29 AC 76 8F 70 E8 6E 09 91 40 4A AE 28 D5 7F CE AB 90 4B D3 07 C1 A8 B2 A0 B3 88 B9 58 F3 CA A9 43 9D C5 C1}
$s3 ={78 33 66 C6 4D CD 82 2F B8 D6 10 8A B7 E9 D5 65 8B 45 1A B7 ED 08 2E B3 89 2F 0B 89 75 F5 08 5D}
kondisi:
mereka semua
}
SERANGAN MITRE TTP:
| Taktik | Teknik / Prosedur |
| Akses Awal | T1566.001: Lampiran Spear Phishing |
| Execution | T1059.001:Penerjemah Perintah dan Skrip:PowerShell |
| T1053.005:Tugas/Pekerjaan Terjadwal: Tugas Terjadwal | |
| Ketekunan | T1053.005:Tugas/Pekerjaan Terjadwal: Tugas Terjadwal |
| Penghindaran Pertahanan | T1027.003:File atau Informasi yang Disamarkan: Steganografi |
| T1036:Menyamar | |
| T1497:Virtualisasi/Penghindaran Kotak Pasir | |
| T1055.012:Proses Injeksi: Proses Pengosongan | |
| penemuan | T1082:Penemuan Informasi Sistem |
| T1083:Penemuan File dan Direktori | |
| T1057:Proses Penemuan |
Kesimpulan:
Dengan malware sebagai layanan, kita dapat melihat beberapa versi formbook. Seringkali pembungkusnya terus berubah, tetapi muatan akhirnya tetap sama, hal ini untuk menghindari deteksi AV. Pelaku ancaman mengirimkan malware ini melalui email spear phishing yang disertai dokumen berbahaya atau biner yang dapat dieksekusi. Pengguna disarankan untuk menghindari membuka email mencurigakan dengan lampiran. Varian ini menerapkan teknik penghindaran untuk menjaga persistensi. Menghindari ketahuan oleh administrator sistem atau pengguna dengan menyembunyikan atribut berkas. Memastikan hanya satu contoh malware yang berjalan di sistem dengan membuat mutex.
Penulis: Rumana Siddiqui dan Manoj Kumar Neelamegam



