Selama investigasi kami baru-baru ini di Seqrite Di laboratorium kami, kami mengidentifikasi varian canggih dari malware pencuri kredensial Masslogger yang menyebar melalui file .VBE (VBScript Encoded). Awalnya, varian tersebut tampak seperti ancaman berbasis skrip biasa, tetapi setelah analisis lebih dalam, ternyata itu adalah malware tanpa file multi-tahap yang sangat bergantung pada Windows Registry untuk menyimpan dan mengeksekusi muatan berbahaya.
Dalam postingan blog ini, kami menganalisis alur internal kode VBScript, mekanisme obfuscation yang digunakan, dan bagaimana mekanisme tersebut memanipulasi sistem agar tetap tanpa berkas. Selain itu, kami juga menjelaskan tentang Stager dan kemampuan muatan Masslogger final.
Vektor Infeksi Awal:
Infeksi dimulai dengan berkas .VBE, yang kemungkinan didistribusikan melalui email spam atau unduhan drive-by. Berkas .VBE adalah VBScript yang dikodekan dengan skema pengkodean bawaan Microsoft untuk mendeteksi inspeksi kasual. Setelah didekodekan, skrip tersebut mengungkap beberapa lapisan pengaburan, rutinitas modular, dan fungsionalitas yang sebenarnya.
Analisis File .VBS yang Didekode – [VBScript]:
Awalnya, berkas .VBS menyiapkan dan menulis beberapa nilai registri dengan kunci tertentu yang digunakan oleh malware. Ini menyiapkan lingkungan eksekusi untuk menyimpan muatan tanpa berkas.
Nama Kunci dan Nilai Registri dikodekan secara keras dan lugas. Namun, hanya sedikit data nilai penting yang dikodekan dan didekodekan selama eksekusi berkas.
-Pengaturan Registri untuk Perintah dan Konfigurasi Stager:
Subrutin AKAAU() digunakan untuk menyiapkan kunci dan nilai sebelum ditulis ke registri. Nama nilai dan Data Nilai disimpan sebagai larik terpisah – masing-masing "QORXG" dan "ZBZLV". Kedua larik tersebut ditulis ke registri menggunakan "RegWrite".

Setelah sistem terinfeksi, kita dapat menemukan entri registri berbahaya ini di Editor Registri:

Berikut adalah ringkasan Entri Registri yang ditulis ke sistem di jalur registri “HKCU\Software\”:
| Nama Nilai | Nilai data | Ringkasan |
| cn | Hentikan-Proses -Nama conhost -Paksa | Matikan proses conhost.exe secara paksa. |
| i | “AddInProcess32.exe” | Proses target untuk injeksi kode. |
| in | "0" | Bendera kontrol, memeriksa apakah perintah PowerShell sudah dijalankan atau belum. |
| saat | LPICU | Perintah PowerShell yang disamarkan. Desamarkan dan muat Stager-1 ke dalam memori. |
| xtra | esBbIgyFlZcXjUl | Nama jalur kunci registri. Dilampirkan ke "HKCU\Software\". |
| r | WAJLA | Rakitan .Net, disimpan dalam format string terbalik. Stager-2. |
| s | RKFYI(DGSLP) | String yang Didekode Heksadesimal. Rakitan .Net disimpan dalam format Base64 terbalik. Stager-1. |
| v | HIKGO() | Perintah yang Disamarkan untuk PowerShell. Deobfuscate dan memuat Stager-1 ke dalam memori. Khususnya digunakan sebagai simulasi input pengguna. |
Tabel-1: Ringkasan entri registri yang ditambahkan
Sebelum menulis registri ini, malware memanggil subrutin “ZGYHW()” yang memeriksa apakah file “ C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ” ada di lokasi tersebut.
Tergantung keberadaannya, malware menyebarkan berbagai versi Stager. Khususnya, Stager-2 dalam skenario ini:

– Pengaturan Registri untuk Penerapan Muatan Akhir:
Setelah registri di atas dikonfigurasi dan ditulis, subrutin lain "XSSAY()" dipanggil. Fungsi ini bertanggung jawab untuk membaca data string lain yang lebih besar (yang merupakan muatan Masslogger yang sebenarnya, yang dikodekan). Data ini kemudian dipecah menjadi potongan-potongan 25,000 karakter dan menuliskannya ke dalam nilai registri lain dalam bentuk tersegmentasi.

Setiap potongan ditulis ke registri pada jalur berikut:
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen1
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen2
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen*

-Penjadwal tugas:
Malware membangun persistensi melalui tugas terjadwal Windows, yang memastikan malware terus berjalan di sistem. Pemicu tugas dimulai pada tanggal infeksi (20xx-xx–xxT00:00:00) dan berulang setiap 1 menit (PT1M). Tugas dijadwalkan untuk berjalan tanpa memperhatikan batasan terkait baterai.

Tugas ini menggunakan nama yang sama dengan kunci registri yang telah dibuat, yaitu esBbIgyFlZcXjUl , dan dipicu untuk menjalankan file .VBS. File .VBS ini bertindak sebagai perulangan eksekusi berkelanjutan yang memeriksa registri yang telah dibuat untuk menunjukkan apakah suatu muatan (payload) harus dieksekusi.
-Skrip Penjadwal Tugas – Mampu Mensimulasikan Input Pengguna:
Seperti yang dapat kita lihat pada gambar di bawah ini:
- Berjalan sekitar 10000 kali, tidur selama 10 detik di antara setiap siklus.
- Membaca nilai registri “i” untuk mendapatkan nama proses dan mengonfirmasi apakah proses tersebut berjalan atau tidak.
- Kemudian memeriksa nilai registri “dalam” yang ditetapkan ke 1,
- jika ya, ia diam-diam mengeksekusi perintah berbahaya yang tersimpan di registri “instan”.
- Ketika nilai dalam “in” tidak disetel ke 1.
- Meluncurkan PowerShell dalam mode jendela terlihat dan menggunakan metode “.SendKeys” untuk memasukkan nilai registri “v” dan “cn” diikuti oleh “{ENTER}”.
- Teknik ini seperti simulasi masukan pengguna ke PowerShell.

Seperti yang kita lihat pada tabel ringkasan,
Registry “cn” digunakan untuk menghentikan paksa proses conhost.exe yang sedang berjalan.
Registri “instant” dan “v” digunakan sebagai PowerShell untuk mendekripsi, mempersiapkan, dan memuat assembly Stager .Net ke dalam memori, tanpa menyentuh disk.
Periksa Status Perlindungan Sistem:
Malware memeriksa status perlindungan sistem target dan kemungkinan besar tidak terdeteksi selama eksekusi. Malware melakukannya dengan memeriksa beberapa registri penting. Berikut adalah beberapa registri tempat produk AV/Keamanan biasanya mencatat keberadaannya:
- “HKLM\PERANGKAT LUNAK\Microsoft\Pusat Keamanan\Penyedia\Av”,
- “HKLM\PERANGKAT LUNAK\Microsoft\Pusat Keamanan\Pemantauan”,
- “HKLM\PERANGKAT LUNAK\Microsoft\Windows\Versi Saat Ini\Keamanan dan Pemeliharaan\Penyedia”,
- “HKLM\PERANGKAT LUNAK\Microsoft\Windows Defender\Pusat Keamanan\Penyedia”
Registri ini didefinisikan dalam skrip dalam format terenkripsi. Malware mencoba melakukan enumerasi melalui subkunci dari kunci-kunci di atas dan mencoba membaca nilai "DisplayName". DisplayName menyimpan nama perangkat lunak keamanan/AV yang terinstal. Jika beberapa produk keamanan ditemukan terinstal pada sistem target, malware akan menghentikan eksekusinya.

-Pemicu untuk Stager:
Subrutin SQSKP() dalam berkas .VBE merupakan bagian penting dari rantai eksekusi malware. Subrutin ini secara dinamis membangun dan menjalankan perintah PowerShell yang menjalankan eksekusi dalam memori dari stager .NET yang diambil dari Windows Registry.

Di sini, teks yang didekodekan adalah perintah PowerShell yang telah disamarkan, setelah mengganti |path| dengan RVOYN.

Seperti yang dapat kita lihat pada Gambar-10 –
- Perintah PowerShell ini dibentuk dan ditetapkan ke variabel “LPICU”.
- Isi variabel kemudian ditulis ke nilai registri “\instant”, yang dibuat di dalam kunci registri “Computer\HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl”.
- Fungsi menjalankan perintah PowerShell yang dibangun secara diam-diam, di mana “0” – menyembunyikan jendela PowerShell.
- PowerShell kemudian membaca kunci registri “HKCU\Software\esBbIgyFlZcXjUl\s” – Kunci registri ini berisi Stager-1, yang disimpan dalam format berkode Base64 yang dihormati.

Kami telah melihat pembuat malware menerapkan kombinasi pengkodean ini di banyak pencuri kredensial baru-baru ini, termasuk VIPKeylogger, Remcos, AsyncRAT, dll.
- Perintah PowerShell membalikkan string tersebut, menggabungkannya, mendekode string base64, dan memuatnya sebagai assembly .Net menggunakan fungsi "[AppDomain]::CurrentDomain.Load()" di memori. Pendekatan ini memungkinkan malware untuk:
- Hindari penulisan file malware sesungguhnya ke dalam disk (Kemampuan menghindar).
- Membangun dan memuat muatan secara dinamis saat runtime.
- Memanggil metode entri “[vv]::v('esBbIgyFlZcXjUl')”, yang merujuk ke jalur registri.
Kami mengambil dump dari muatan stager-1 yang telah dideobfuscated untuk analisis lebih lanjut. Berikut hasil pengamatan kami:
Analisis Stager-1:
Stager-1 adalah file eksekusi kecil yang disimpan dalam kode di registri "HKCU\Software\esBbIgyFlZcXjUl\s". File ini dikompilasi dalam .Net dan ukurannya sekitar ~14KB.
Saat menganalisis kodenya, kami menemukan bahwa file tersebut mencoba membaca konten dari kunci registri lain dengan nama “r” – [HKCU\Software\esBbIgyFlZcXjUl\r].
Konten tersebut dibalik dan biner terkompilasi .Net lainnya dibentuk – stager-2.
Biner ini kemudian dimuat ke dalam memori menggunakan "Assembly.Load()". Stager-1 mencoba menemukan metode r() di dalam kelas r di dalam assembly Stager-2. Ini adalah titik masuk untuk eksekusi stager-2.

Analisis Stager-2:
Setelah Stager-1 selesai dikonfigurasi, malware melanjutkan ke pemuat Stager-2. Tahap infeksi ini berfokus pada ekstraksi muatan Masslogger aktual dari registri dan menyuntikkannya ke dalam proses target.
Stager-2 awalnya membangun jalur berkas potensial untuk meluncurkan proses dan melakukan injeksi kode.
Ia memeriksa apakah suatu berkas (yang namanya diambil dari nilai registri “i”) ada di salah satu jalur ini.
Dalam kasus kami, kami menemukan file target/jalur proses adalah:
“%WINDIR%\Microsoft.NET\Framework\v4.0.30319\AddInProcess32.exe”

Selanjutnya, malware mengekstrak muatan Masslogger aktual yang sebelumnya ditulis (oleh subrutin “XSSAY()”) di beberapa subkunci registri di bawah registri di bawah ini, yang telah kita lihat sebelumnya “.
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen1
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen2
- HKEY_CURRENT_USER\SOFTWARE\esBbIgyFlZcXjUl\donn\segmen*
Fungsi BBX() dari kelas 'r' bertanggung jawab untuk mengumpulkan semua entri nilai, menggabungkannya, membalikkan string gabungan, lalu mendekodekannya dari heksadesimal menjadi byte mentah. Teknik ini memungkinkan pembuat malware untuk menyembunyikan biner PE lengkap di beberapa kunci registri. Muatan yang telah didekode kemudian digunakan untuk proses pengosongan. Pengosongan proses dilakukan menggunakan fungsi .XGP()
Ini adalah cara cerdas untuk menyimpan semuanya dalam registri dan hanya menggunakan memori untuk eksekusi.

-Pengiriman Muatan Khusus Prancis:
Pengiriman muatan yang ditargetkan secara geografis kini umum dalam malware tingkat lanjut untuk mengubah perilaku berdasarkan lokasi korban. Stager-2 dari infeksi ini memeriksa apakah bahasa input sistem saat ini diatur ke bahasa Prancis "Fr" dan apakah lokalnya mengandung "Prancis".

Jika kondisinya terpenuhi, ia mencoba mengunduh muatan tambahan yang dirancang khusus dari URL yang dikodekan secara permanen – hxxps://144.91.92.251/MoDi.txt. Pada saat analisis, URL tersebut tidak dapat diakses.
-Mengakhiri Jejak dan Keluar:
Pada akhir eksekusinya, malware tersebut secara paksa menghentikan proses conhost.exe dan PowerShell.exe yang sedang berjalan.

Dengan mematikan proses-proses ini, malware kemungkinan bertujuan untuk menyembunyikan jejak aktivitasnya. Akhirnya, malware keluar dari aplikasi menggunakan ProjectData.EndApp(), menyelesaikan siklus hidup stager-2.
Analisis Muatan Akhir Masslogger:
Setelah berhasil mendeobfusifikasi muatan akhir dari registri, Masslogger disuntikkan ke dalam proses target – “AddInProcess32.exe”. Kita dapat melihat penanda malware ini di dump memori proses yang disuntikkan seperti di bawah ini:

Kami mengambil dump memori dari muatan ini, yang mewakili tahap akhir dalam rantai malware. Muatan ini bertanggung jawab untuk menjalankan fungsi kredensial utama – pencurian informasi.
-Pengumpulan Data:
Seperti banyak malware infostealer, malware ini juga menargetkan beberapa peramban web dan beberapa klien email untuk mencuri informasi sensitif, seperti Nama Pengguna, Kata Sandi, data isi otomatis yang tersimpan, dll. Di bawah ini adalah daftar Peramban Web dan beberapa klien email yang coba ditargetkan Masslogger.

Mari kita lihat salah satu modul secara rinci di mana malware mencoba mengumpulkan kredensial login yang tersimpan dari peramban Chrome.

Sistem ini menemukan data login pengguna dengan mengakses basis data SQLite "Login Data". Sistem ini mengekstrak URL situs web beserta nama pengguna dan kata sandi terkait, lalu mengumpulkannya untuk digunakan lebih lanjut. Jika kredensial yang valid ditemukan, kredensial tersebut disimpan dalam format terstruktur seperti situs web, nama pengguna, dan kata sandi.
Selain menargetkan browser dan klien email untuk pencurian informasi, Masslogger juga memiliki kemampuan:
- Aktivitas keylogger.
- Ambil dan hapus file snapshot.
- Mengambil data papan klip.
- Coba pantau aktivitas pengguna dengan memanggil GetForegroundWindow, GetWindowText dll.
- Membaca detail sistem, seperti alamat IP dan Negara.
- Mengunggah beberapa berkas ke server.
-Eksfiltrasi Data:
Metode SpeedOffPWExport() dalam muatan akhir memungkinkan eksfiltrasi data dengan mengirimkan kredensial yang dikumpulkan dan informasi sistem ke lokasi jarak jauh melalui beberapa saluran, seperti FTP, SMTP, atau Telegram.
Jika FTP diaktifkan, metode ini mengunggah data yang dicuri sebagai file .txt ke server FTP jarak jauh menggunakan kredensial yang dikodekan secara keras.

Untuk SMTP, ia membuat email yang berisi data di badan pesan atau sebagai berkas teks terlampir dan mengirimkannya menggunakan server email yang ditentukan.

Jika eksfiltrasi Telegram diaktifkan, ia akan mengirimkan data sebagai dokumen menggunakan Telegram Bot API, termasuk keterangan dengan nama pengguna dan IP korban.

Kesimpulan:
Varian Masslogger tanpa file menunjukkan tren malware pencuri informasi yang terus berkembang. Dikirim melalui skrip .VBE, malware ini menyalahgunakan Windows Registry untuk menyimpan muatan eksekusi aktual dan memuat muatan tersebut langsung ke memori tanpa menyentuh disk. Varian ini memiliki kemampuan untuk mengumpulkan kredensial tersimpan dari berbagai peramban dan klien email, serta menggunakan berbagai saluran [FTP, SMTP, Bot Telegram] untuk pencurian data.
Varian ini menunjukkan pergeseran malware pencuri kredensial ke arah tanpa berkas dan beroperasi dalam beberapa tahap (Stager-1, Stager-2). Hal ini menantang metode deteksi AV dan berbasis tanda tangan tradisional. Untuk mengatasi hal ini, para pembela keamanan harus menggunakan mekanisme deteksi canggih seperti deteksi perilaku, memantau anomali registri, dan sebagainya.
Indikator Kompromi (IoC):
Berkas MD5:
.VBE: 29DBD06402D208E5EBAE1FB7BA78AD7A
.VBS: F30F07EBD35B4C53B7DB1F936F72BE93
Stager-1: 2F1E771264FC0A782B8AB63EF3E74623
Stager-2: 37F0EB34C8086282752AF5E70F57D34C
MassLogger Payload: 1E11B72218448EF5F3FCA3C5312D70DB
URL:
hxxps://144.91.92.251/MoDi.txt
Seqrite Deteksi:
Skrip.trojan.49618.GC
Trojan.MSIL
Trojan.YakbeexMSIL.ZZ4
MITRE ATT & CK
| Taktik | ID Teknik | Nama Teknik | ID Sub-teknik | Nama Sub-Teknik |
| Akses Awal | T1566 | phishing | T1566.001 | Lampiran Spear Phishing |
| Execution | T1059 | Penerjemah Perintah dan Skrip | T1059.005 | Visual Basic |
| Execution | T1059 | Penerjemah Perintah dan Skrip | T1059.001 | PowerShell |
| Ketekunan | T1053 | Tugas/Pekerjaan Terjadwal | T1053.005 | Tugas Terjadwal |
| Penghindaran Pertahanan | T1140 | De-obfuscate/Decode File atau Informasi | - | - |
| Penghindaran Pertahanan | T1112 | Ubah Registri | - | - |
| Penghindaran Pertahanan | T1055 | Proses Injeksi | T1055.012 | Proses Hollowing |
| Penghindaran Pertahanan | T1562 | Merusak Pertahanan | T1562.001 | Nonaktifkan atau Ubah Alat |
| Penghindaran Pertahanan | T1059 | Penerjemah Perintah dan Skrip | T1059.001 | PowerShell |
| penemuan | T1518 | Penemuan Perangkat Lunak | T1518.001 | Penemuan Perangkat Lunak Keamanan |
| penemuan | T1082 | Penemuan Informasi Sistem | - | - |
| penemuan | T1012 | Registri Kueri | - | - |
| Akses Kredensial | T1555 | Kredensial dari Toko Kata Sandi | T1555.003 | Kredensial dari Peramban Web |
| Akses Kredensial | T1056 | Tangkapan Masukan | T1056.001 | Keylogging |
| Koleksi | T1113 | screen Capture | - | - |
| Koleksi | T1115 | Data Papan Klip | - | - |
| Koleksi | T1056 | Tangkapan Masukan | T1056.001 | Keylogging |
| Koleksi | T1083 | Penemuan File dan Direktori | - | - |
| Komando dan Pengendalian | T1071 | Protokol Lapisan Aplikasi | T1071.001 | Protokol Web |
| Komando dan Pengendalian | T1071 | Protokol Lapisan Aplikasi | T1071.002 | Protokol Transfer Berkas |
| Komando dan Pengendalian | T1071 | Protokol Lapisan Aplikasi | T1071.003 | Protokol Surat |
| Komando dan Pengendalian | T1105 | Transfer Alat Masuk | - | - |
| exfiltration | T1041 | Eksfiltrasi Melalui Saluran C2 | - | - |
| exfiltration | T1567 | Eksfiltrasi Melalui Layanan Web | T1567.002 | Eksfiltrasi ke Penyimpanan Cloud |
| exfiltration | T1567 | Eksfiltrasi Melalui Layanan Web | T1567.001 | Eksfiltrasi ke Repositori Kode |


