Penulis: Dixit Panchal & Vaibhav Krushna Billade
Daftar Isi:
- Perkenalkan:
- Target Utama:
- Rantai Infeksi:
- Temuan Awal tentang Kampanye:
- Analisis Umpan:
- Analisis teknis:
- Tahap 1: Analisis File LNK.
- Tahap 2: Analisis Muatan HTA/JavaScript
- Tahap 3: Analisis DLL Loader Tahap-1
- Tahap 4: Analisis DLL Loader Tahap-2 dan Shellcode
- Tahap 5: Analisis XenoRAT.
- Artefak Infrastruktur & Atribusi Pelaku Ancaman.
- Kesimpulan: Operasi XENOFISCAL?
- Seqrite Cakupan:
- IOC:
- MITRE ATT&CK:
Perkenalkan:
Seqrite Labs telah aktif memantau kampanye spear phishing di seluruh dunia dan memiliki sejarah yang mapan dalam melacak klaster APT SideCopy — sebuah kelompok ancaman yang terkait dengan Pakistan yang beroperasi di bawah payung Transparent Tribe / APT36 yang lebih luas. Sebagai kelanjutan dari upaya pelacakan tersebut, kami mengidentifikasi kampanye yang ditargetkan ke Kementerian Keuangan, Afghanistan, dengan TTP (Tactics, Techniques, and Procedures) yang tumpang tindih dengan SideCopy pada tingkat kepercayaan menengah hingga tinggi.
Kampanye ini dimulai dengan serangan spear phishing — sebuah arsip ZIP yang berisi file LNK berbahaya dengan nama file berbahasa Pashto yang dirancang dengan cermat:
د_هغو_کارکوونکو_لېست_چې_د_فکري_او_رواني_جګړې_سیمینار_ته_ورپېژندل_شوي_وو12.pdf.lnk (“Daftar Pegawai yang Diperkenalkan pada Seminar Peperangan Intelektual dan Psikologis”)
Pemilihan bahasa Pashto adalah disengaja. Bahasa ini merupakan bahasa dominan di seluruh lembaga pemerintahan Afghanistan dan bahasa utama dari target yang dituju — para pejabat keuangan provinsi yang beroperasi di seluruh 34 Mustoufiat Afghanistan. Dengan membingkai daya tarik tersebut di sekitar seminar tentang perang psikologis dan intelektual, pelaku menunjukkan pengetahuan yang tepat tentang konteks operasional dan administratif target mereka.
Berikut ini adalah uraian teknis lengkap dari kampanye tersebut — mulai dari rantai eksekusi LNK hingga pemancaran implan XenoRAT ke infrastruktur Eropa yang anti peluru — beserta perubahan infrastruktur, analisis dokumen umpan, dan pemetaan atribusi terhadap dasar TTP SideCopy yang diketahui.
Target Utama:
- Kementerian Keuangan, Emirat Islam Afghanistan.
- Direktorat Pendapatan dan Keuangan Provinsi (Mustoufiats).
- Pejabat pemerintah yang berbahasa Pashto.
- Pegawai pemerintah tingkat provinsi, bukan kementerian pusat.
Rantai Infeksi:

Temuan Awal tentang Kampanye:
Selama analisis kami, kami mengamati pelaku ancaman memulai serangan melalui arsip ZIP yang dikirim melalui spear phishing, yang berisi file LNK berbahaya yang dibuat dalam bahasa Pashto — pilihan yang disengaja yang mencerminkan keakraban mendalam dengan lingkungan target.
Setelah dieksekusi, LNK secara diam-diam memanfaatkan mshta.exe untuk mengambil muatan HTA jarak jauh dari domain pendidikan Afghanistan yang disusupi, yang mendekode JavaScript yang disamarkan dalam memori, membangun persistensi berbasis Registry yang disamarkan sebagai entri Microsoft Edge, dan akhirnya menyebarkan XenoRAT 1.8.7 — mengirimkan sinyal keluar ke infrastruktur hosting Eropa yang sepenuhnya terpisah dari lapisan pengiriman, memastikan ketahanan jangka panjang.
Analisis Umpan:
Dokumen umpan yang dijatuhkan selama eksekusi adalah direktori staf provinsi Kementerian Keuangan Afghanistan yang mencakup seluruh 34 provinsi, yang mencantumkan Direktur Keuangan, Kepala Pendapatan, Pejabat Keuangan, dan Sekretaris beserta nomor ponsel langsung mereka — yang ditulis seluruhnya dalam bahasa Dari dan Pashto.

Tingkat detail pengorganisasian menunjukkan pengumpulan intelijen sebelumnya oleh pelaku ancaman. Perannya dalam serangan ini sederhana — sementara korban membaca apa yang tampak seperti dokumen internal pemerintah yang rutin, malware tersebut telah diam-diam menyelesaikan instalasinya di latar belakang.
Analisis teknis:
Tahap 1: Analisis File LNK.
File LNK bertindak sebagai vektor infeksi awal dan pemicu eksekusi dalam rantai serangan. Meskipun disamarkan dengan ikon PDF dan nama file yang menyesatkan agar tampak seperti dokumen yang sah, pemeriksaan properti pintasannya mengungkapkan bahwa file tersebut meluncurkan utilitas Windows mshta.exe dari C:\Windows\System32. Perintah yang tertanam dalam pintasan mengarah ke sumber daya PHP berbahaya jarak jauh yang dihosting melalui HTTPS ( hxxp[:]//< abimj.edu.af >/index.php ), memungkinkan penyerang untuk mengeksekusi konten skrip yang dihosting secara eksternal langsung di memori tanpa menyimpan file yang dapat dieksekusi ke disk. Dengan menyalahgunakan mshta.exe — biner Microsoft yang sah yang umumnya terkait dengan eksekusi Aplikasi HTML (HTA).

Penyerang memanfaatkan teknik Living-off-the-Land Binary (LOLBIN) untuk menghindari mekanisme deteksi tradisional dan melewati kecurigaan pengguna. Penggunaan koma yang berlebihan dalam struktur URL semakin menunjukkan upaya untuk menghambat analisis statis dan deteksi berbasis tanda tangan.
Tahap 2: Analisis Muatan HTA/JavaScript
Payload PHP jarak jauh yang diambil melalui mshta.exe berisi kode JavaScript yang sangat dienkripsi yang dirancang untuk mengeksekusi logika berbahaya dalam konteks mesin HTA. Pemeriksaan awal menunjukkan adanya array string yang dikodekan seperti _$_f1bf=[“\x55\x33\x6…”], metode enkripsi umum yang digunakan untuk menyembunyikan nama fungsi, URL, perintah, atau payload sekunder dari analis dan alat keamanan. Skrip tersebut juga mendefinisikan teks jendela yang menipu seperti “Windows File Error” untuk meniru perilaku sistem yang sah dan berpotensi mengalihkan perhatian korban selama eksekusi. Tahap ini berfungsi sebagai lapisan eksekusi dan pengiriman utama kampanye, di mana JavaScript yang dienkripsi kemungkinan didekode secara dinamis untuk melakukan tindakan lanjutan seperti pengambilan payload, eksekusi perintah, pembentukan persistensi, atau eksfiltrasi data.

Menganalisis JScript yang Disamarkan
Setelah dianalisis, file .js diidentifikasi sebagai pemuat malware berbasis JScript yang sangat dienkripsi dan dirancang untuk dieksekusi di bawah lingkungan Windows Script Host (WSH) atau Internet Explorer lama dengan dukungan ActiveX diaktifkan. Skrip tersebut menggabungkan beberapa teknik berbahaya, termasuk eksekusi berbasis ActiveX, dekode muatan Base64 khusus, deserialisasi .NET BinaryFormatter , dan eksekusi muatan dalam memori.
Tahap pertama malware dimulai dengan array JavaScript besar yang disamarkan, biasanya didefinisikan sebagai variabel seperti _$_f1bf, yang berisi banyak fragmen string yang dikodekan heksadesimal yang mewakili muatan tersembunyi. Fragmen-fragmen ini kemudian digabungkan dan diteruskan ke fungsi dekode khusus. Alih-alih mengandalkan API dekode Base64 bawaan, skrip tersebut mengimplementasikan rutinitas dekode Base64 sendiri untuk menyembunyikan muatan dan menghambat analisis.

Fungsi kustom tersebut secara dinamis merekonstruksi set karakter Base64 standar (A–Z, a–z, 0–9, +, /) menggunakan String.fromCharCode, kemudian memproses data yang dikodekan dalam potongan-potongan sambil membangun kembali aliran byte asli melalui serangkaian operasi bitwise. Dengan menangani proses dekode secara manual, malware menghindari indikator mencurigakan seperti atob() atau pustaka dekode umum, sehingga deteksi statis dan analisis berbasis tanda tangan menjadi jauh lebih sulit.

Rekonstruksi Muatan Menggunakan Objek COM .NET
Pada tahap kedua, malware mengubah payload yang telah didekode menjadi objek yang dapat dieksekusi di memori dengan memanfaatkan beberapa kelas .NET yang diinstansiasi melalui ActiveXObject. Skrip membuat System.Text.ASCIIEncoding untuk mengubah string yang telah didekode menjadi array byte, kemudian menggunakan System.Security.Cryptography.FromBase64Transform untuk melakukan transformasi Base64 tambahan pada payload. Aliran byte yang dihasilkan ditulis ke dalam objek System.IO.MemoryStream, yang secara efektif merekonstruksi payload yang telah diserialisasi sepenuhnya di memori tanpa menyentuh disk. Pendekatan bertahap ini umumnya digunakan dalam malware tanpa file karena memungkinkan penyerang untuk mempersiapkan objek .NET berbahaya untuk dieksekusi sambil meminimalkan artefak forensik dan mengurangi kemungkinan deteksi oleh produk keamanan berbasis file tradisional.

Setelah mendekode muatan terenkripsi, skrip memasuki fase eksekusi dengan membuat objek ActiveX WScript.Shell , yang memungkinkan akses ke operasi registri, variabel lingkungan, dan fungsi tingkat sistem lainnya. Skrip kemudian memeriksa apakah versi .NET Framework v4.0.30319 terinstal dengan menanyakan jalur registri HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 . Jika runtime yang lebih baru tidak tersedia, ia akan kembali ke .NET v2.0.50727. Malware kemudian mengatur variabel lingkungan COMPLUS_Version untuk memaksa proses memuat versi runtime CLR tertentu, memastikan kompatibilitas dengan muatan DLL .NET terenkripsi.
Selama eksekusi, malware menyalahgunakan komponen deserialisasi .NET tepercaya termasuk gadget WPF XAML seperti ObjectDataProvider dan ResourceDictionary, bersama dengan objek serialisasi Windows Forms seperti AxHost dan PropertyBagBinary. Komponen-komponen ini membantu mempertahankan rantai gadget deserialisasi dan memicu eksekusi selama rekonstruksi objek.
Terakhir, objek serialisasi berbahaya yang tersimpan di dalam objek MemoryStream diproses melalui .NET BinaryFormatter.Deserialize_2() , memungkinkan eksekusi DLL dalam memori secara diam-diam sambil meminimalkan artefak forensik dan melewati mekanisme deteksi berbasis file tradisional.
Tahap 3: Analisis DLL Loader Tahap-1 (Loader Awal)
Ini adalah DLL pemuat .NET yang bertanggung jawab untuk eksekusi muatan tahap berikutnya, persistensi, dan penyiapan komponen selanjutnya dari rantai serangan di dalam memori.

Pada awalnya, fungsi openthefile() bertanggung jawab untuk mengunduh dan membuka dokumen PDF palsu dari URL hxxp[:]//abimj.edu.af/institute/cloudiyaf/document.pdf. Fungsi ini pertama-tama mengekstrak nama file dari URL dan menyimpan file yang diunduh ke direktori sementara Windows menggunakan WebClient.DownloadFile(). Sebelum memulai pengunduhan, malware secara eksplisit mengaktifkan komunikasi TLS 1.2 melalui ServicePointManager.SecurityProtocol, memastikan kompatibilitas dengan koneksi HTTPS/TLS yang aman. Setelah mengunduh dokumen, malware menghentikan eksekusi selama lima detik dan kemudian menjalankan file PDF yang diunduh melalui rutinitas eksekusi perintah tersembunyi.

Fungsi RunProcessWithHiddenCmd() digunakan untuk mengeksekusi file atau perintah melalui cmd.exe. Fungsi ini membuat argumen baris perintah menggunakan /c, yang menginstruksikan cmd.exe untuk mengeksekusi jalur file yang diberikan dan mengakhiri proses setelahnya. Fungsi ini menginisialisasi instance proses baru, menetapkan cmd.exe sebagai program yang akan dijalankan, dan meneruskan string argumen yang dihasilkan ke proses tersebut. Setelah dimulai, interpreter perintah mengeksekusi file atau perintah yang ditentukan dan keluar secara otomatis setelah selesai.

Setelah membuka dokumen umpan, malware membuat direktori bernama USOShared-1de48789-1285 di bawah C:\Users\Public\ untuk menyimpan payload HTA tahap selanjutnya (zuidrt.hta). Kemudian, malware memanggil fungsi RegWorkExePathFromPublic() yang berisi perintah registri yang dikodekan Base64 yang didekode saat runtime menggunakan rutin dekode Base64 BSDSD94() . Setelah didekode, perintah tersebut membuat entri baru di bawah kunci registri HKCU\Software\Microsoft\Windows\CurrentVersion\Run dengan nama nilai Edgre. Entri registri tersebut mengeksekusi:
cmd /C start C:\Users\Public\USOShared-1de48789-1285\zuidrt.hta
Untuk lebih memastikan kerahasiaan dan persistensi, malware menulis perintah yang telah didekode ke dalam file batch bernama noway.bat di direktori sementara pengguna dan mengeksekusinya melalui proses tersembunyi. Eksekusi dikonfigurasi untuk menekan semua jendela yang terlihat, mencegah munculnya prompt perintah kepada pengguna. Hal ini memastikan bahwa payload HTA diluncurkan secara otomatis selama login pengguna, sehingga mempertahankan persistensi pada sistem.

Fungsi CopyExeToUsersPublic() bertanggung jawab untuk mengambil dan merekonstruksi payload HTA tahap selanjutnya (zuidrt.hta) di direktori C:\Users\Public\USOShared-1de48789-1285\. Pertama, fungsi ini memeriksa apakah direktori target ada dan membuatnya jika tidak ada menggunakan Directory.CreateDirectory(), kemudian mengunduh payload yang telah dienkode dari:
hxxp[:]//abimj.edu.af/institute/cloudiya/

Payload zuidrt.hta yang diunduh disimpan dalam format terkompresi dan dienkode Base64 untuk menghindari deteksi. Malware kemudian mendekompresi dan mendekode data untuk merekonstruksi payload HTA akhir, yang dieksekusi melalui RunProcessWithHiddenCmd(), yang secara internal menjalankan cmd.exe /c start C:\Users\Public\USOShared-1de48789-1285\zuidrt.hta , memanfaatkan asosiasi file Windows untuk selanjutnya memanggil mshta.exe untuk eksekusi HTA.
Eksekusi Payload HTA (zuidrt.hta)
File zuidrt.hta mengikuti struktur yang mirip dengan payload HTA awal tetapi berisi komponen tertanam yang dimodifikasi dan logika eksekusi yang diperbarui. File ini melanjutkan rantai serangan dengan menggunakan kembali rutinitas pengaburan dan dekode untuk menyembunyikan fungsinya dan menghindari analisis. Skrip tersebut menginisialisasi ulang jalur eksekusi berbasis ActiveX untuk mempertahankan eksekusi di dalam lingkungan HTA dan merekonstruksi payload serialisasi yang tertanam di memori.
Mirip dengan tahap HTA awal, muatan (payload) memanfaatkan komponen deserialisasi .NET dan rantai gadget untuk memicu eksekusi dalam memori dari DLL pemuat Tahap-2 yang tertanam. Tahap ini bertindak sebagai lapisan eksekusi sekunder dalam rantai infeksi, memastikan persistensi alur kerja serangan dan memfasilitasi transisi menuju DLL tahap berikutnya yang bertanggung jawab atas pengiriman dan eksekusi muatan akhir.
Tahap 4: Analisis DLL Loader Tahap-2 dan Shellcode
Setelah dekripsi saat runtime, alur eksekusi diteruskan ke DLL berbahaya.

DLL tersebut adalah pemuat shellcode berbasis .NET yang bertanggung jawab untuk mengambil, mendekode, mendekompresi, dan mengeksekusi muatan tahap selanjutnya sepenuhnya di dalam memori. Malware ini menggunakan beberapa lapisan penahapan dan eksekusi saat runtime untuk menghindari mekanisme keamanan tradisional dan mengurangi artefak berbasis disk.
DLL tersebut bertindak sebagai pemuat perantara antara tahap HTA berbasis JavaScript dan muatan akhir Xeno RAT.
Pengaturan Lingkungan dan Pengambilan Muatan
Saat dieksekusi, DLL menginisialisasi lingkungan staging yang dirancang untuk menyimpan dan memproses payload tahap selanjutnya sambil meminimalkan kecurigaan. Malware pertama-tama mendekode string yang dikodekan Base64 ( ZmlyZWZ4LTFkZTg3ZWVjOC0xMjQx ) menggunakan rutin BSDSD94() kustom , menghasilkan nama direktori firefx-1de87eec8-1241. Kemudian, malware membuat direktori kerja di bawah jalur Windows yang dapat diakses publik:
- C:\Users\Public\firefx-1de87eec8-1241

Penggunaan C:\Users\Public\ memungkinkan malware untuk menghindari pembatasan penulisan terkait hak akses sambil berbaur dengan aktivitas sistem file yang sah. Konvensi penamaan direktori meniru folder cache atau profil yang dihasilkan aplikasi, membantu mengurangi kecurigaan pengguna dan menghindari deteksi berbasis IOC dasar. Malware ini selanjutnya mendefinisikan nama file payload sementara seperti ayui.vmxx dan ayhui.vmxx , yang sengaja disamarkan menggunakan ekstensi non-standar untuk menghindari identifikasi langsung sebagai konten yang dapat dieksekusi.
Setelah membuat direktori staging, DLL memulai komunikasi keluar dengan infrastruktur yang dikendalikan penyerang untuk mengambil payload tahap selanjutnya. Malware ini berisi beberapa URL yang telah dikodekan secara permanen, termasuk:
- hxxps[:]//abimj[.]edu[.]af/institute/10/
- hxxps[:]//abimj[.]edu[.]af/institute/7/
dan secara dinamis memilih titik akhir pengunduhan berdasarkan versi sistem operasi korban. Sistem yang diidentifikasi sebagai Windows 7 (Versi 6.1) dialihkan ke lokasi muatan alternatif, yang menunjukkan pengiriman muatan yang mempertimbangkan kompatibilitas.

Dengan menggunakan metode .NET WebClient.DownloadFile() bersamaan dengan protokol TLS/TLS1.1/TLS1.2 yang diaktifkan secara eksplisit, malware mengunduh payload terenkripsi dan menyimpannya secara lokal sebagai ayui.vmxx . Konten yang diunduh tidak dapat dieksekusi secara langsung; sebaliknya, konten tersebut berfungsi sebagai blob sementara yang dikodekan dan dikompresi yang kemudian menjalani dekode Base64 dan dekompresi GZIP sebelum eksekusi shellcode dimulai di memori.
Penguraian Muatan dan Rekonstruksi Kode Shell
Setelah berhasil mengunduh muatan tahap kedua, DLL menyimpan data yang diambil di dalam direktori staging sebagai file tersamarkan bernama ayui.vmxx. Alih-alih menyebarkan executable portabel (PE) langsung ke disk, malware menggunakan mekanisme pengkodean dan kompresi berlapis untuk menyembunyikan isi muatan sebenarnya dan menghindari mesin deteksi statis. File tersebut berisi data yang dikodekan Base64 dan dikompresi GZIP yang tampak tidak dapat dieksekusi selama pemeriksaan permukaan. Teknik ini secara signifikan mengurangi visibilitas tanda tangan untuk produk antivirus dan mempersulit analisis manual dengan mencegah analis untuk segera mengidentifikasi format muatan. Malware kemudian membaca seluruh file ke dalam memori menggunakan File.ReadAllBytes() dan mulai merekonstruksi muatan yang tertanam secara dinamis selama eksekusi runtime.

Proses rekonstruksi ditangani melalui fungsi decompressdata() kustom , yang melakukan beberapa operasi decoding dan dekompresi sepenuhnya di dalam memori. Rutin ini pertama-tama mendekode blob Base64, mengekstrak header ukuran yang telah didekompresi, dan menggunakan kelas .NET GZipStream untuk memulihkan buffer payload asli. Setelah dekompresi selesai, data yang dihasilkan kembali dilewatkan melalui Convert.FromBase64String() untuk memulihkan byte shellcode mentah. Payload yang telah direkonstruksi sepenuhnya kemudian ditulis secara lokal sebagai ayhui.vmxx , yang berfungsi sebagai wadah shellcode perantara sebelum eksekusi. Dengan menggabungkan decoding bertahap, kompresi, dan pembangunan kembali payload saat runtime, malware menghindari pengungkapan shellcode akhir dalam bentuk teks biasa pada disk, sehingga melewati mekanisme pemindaian file konvensional dan deteksi berbasis konten sambil mempersiapkan payload untuk eksekusi reflektif di dalam memori.

Eksekusi Shellcode:
Setelah rekonstruksi payload, DLL beralih ke fase eksekusi akhir dengan berfungsi sebagai pemuat shellcode dalam memori. Alih-alih meluncurkan executable tradisional dari disk, malware langsung mengalokasikan memori executable di dalam proses saat ini menggunakan API Windows VirtualAlloc() . Permintaan alokasi menggunakan flag MEM_COMMIT bersamaan dengan izin memori PAGE_EXECUTE_READWRITE (RWX) , menciptakan wilayah memori yang mampu menyimpan dan mengeksekusi kode sembarang. Pola alokasi RWX ini merupakan indikator yang dikenal luas dari eksekusi shellcode dan pemuatan malware reflektif. Setelah alokasi memori, malware menyalin buffer shellcode yang direkonstruksi ke wilayah yang dialokasikan menggunakan Marshal.Copy() , secara efektif menempatkan payload sepenuhnya di dalam memori proses tanpa bergantung pada pemuat PE Windows.

Setelah shellcode dipetakan ke memori yang dapat dieksekusi, malware mentransfer eksekusi ke buffer yang disuntikkan melalui API CreateThread() , menggunakan alamat dasar memori yang dialokasikan sebagai titik masuk thread. Teknik ini memungkinkan shellcode untuk dieksekusi langsung dari memori, melewati pemantauan eksekusi berbasis disk konvensional dan secara signifikan mengurangi artefak forensik. DLL kemudian memanggil WaitForSingleObject() dengan nilai batas waktu tak terbatas untuk mempertahankan sinkronisasi thread dan memastikan eksekusi shellcode tanpa gangguan. Metodologi eksekusi ini selaras dengan teknik malware tanpa file modern, di mana payload didekripsi dan diluncurkan secara dinamis di memori untuk menghindari mesin antivirus berbasis tanda tangan, mekanisme kontrol aplikasi, dan teknologi pemindaian statis. Shellcode kemudian bertindak sebagai loader untuk payload Xeno RAT akhir, memungkinkan persistensi, komunikasi perintah dan kontrol, dan akses penyerang jarak jauh pada sistem yang dikompromikan.
Shellcode tersebut berfungsi sebagai pemuat dalam memori yang bertanggung jawab untuk mempersiapkan dan meluncurkan muatan akhir Xeno RAT.

Selama eksekusi, biasanya dilakukan validasi lingkungan, resolusi API dinamis, dan modifikasi izin memori menggunakan API seperti VirtualProtect() dan GetProcAddress() . Pada loader Donut, shellcode melewati mekanisme keamanan dengan menambal fungsi seperti AmsiScanBuffer() untuk menonaktifkan pemindaian AMSI dan mengurangi visibilitas ke dalam konten yang dimuat secara dinamis.
Karena muatan akhir adalah assembly .NET terkelola, shellcode menginisialisasi .NET Common Language Runtime (CLR) dengan memuat komponen seperti clr.dll dan mscoree.dll. Muatan yang tertanam kemudian didekripsi dan dimuat langsung dari memori menggunakan teknik reflektif seperti Assembly.Load(byte[]) , sehingga menghindari penyebaran berbasis disk sepenuhnya. Setelah dimuat, muatan Xeno RAT dieksekusi di memori, memungkinkan komunikasi perintah dan kontrol, persistensi, dan akses penyerang jarak jauh pada sistem yang disusupi.

Tahap 5: Analisis XenoRAT.
Muatan akhir yang teridentifikasi dalam rantai infeksi adalah Xeno RAT , sebuah Trojan Akses Jarak Jauh (RAT) sumber terbuka yang tersedia secara publik di GitHub dan umum digunakan oleh pelaku ancaman untuk akses jarak jauh yang berkelanjutan, pengawasan, dan aktivitas pasca-eksploitasi.

Saat dieksekusi, malware ini menginisialisasi saluran komunikasi perintah dan kontrol (C2) yang aman menggunakan alamat IP yang telah ditentukan (185.235.137.106) dan konfigurasi port, memungkinkan koneksi langsung ke infrastruktur yang dikendalikan penyerang. Untuk mempertahankan eksekusi satu instance dan mencegah peluncuran ganda, malware ini juga menggunakan mutex (“clouda”) , memastikan hanya satu instance klien yang berjalan pada sistem yang terinfeksi pada satu waktu. Langkah-langkah inisialisasi ini diikuti oleh persistensi dan logika koneksi ulang terus-menerus untuk mempertahankan akses jangka panjang ke host yang disusupi.

Sekarang, kita akan melihat beberapa fungsi menarik dan menganalisis fungsinya.
Fungsi ConnectAndSetupAsync bertanggung jawab untuk membangun dan menginisialisasi koneksi perintah dan kontrol (C2) berbasis TCP antara klien dan server jarak jauh. Fungsi ini membuat instance Node baru menggunakan SocketHandler yang dikonfigurasi dengan soket dan kunci enkripsi yang diberikan, memungkinkan komunikasi terenkripsi melalui koneksi. Setelah inisialisasi, fungsi melakukan jabat tangan autentikasi asinkron menggunakan AuthenticateAsync untuk memvalidasi koneksi berdasarkan nilai tipe dan ID yang diberikan. Jika autentikasi gagal atau terjadi pengecualian selama pengaturan, fungsi mengembalikan null, yang menunjukkan bahwa saluran komunikasi C2 tidak dapat berhasil dibangun. Jika tidak, fungsi mengembalikan objek Node yang sepenuhnya diinisialisasi dan diautentikasi, siap untuk pertukaran data yang aman.

Fungsi DllNodeHandler mengelola pemuatan dan eksekusi dinamis modul DLL eksternal yang diterima melalui koneksi Node jarak jauh. Pertama, fungsi ini menerima nama DLL dari klien yang terhubung dan memeriksa apakah assembly tersebut sudah dimuat di memori. Jika DLL tidak ada, fungsi ini meminta data biner dari sisi jarak jauh, memuatnya secara dinamis menggunakan Assembly.Load , dan menyimpannya dalam kamus Assemblies untuk digunakan kembali; jika tidak, fungsi ini memberi tahu klien bahwa DLL sudah ada. Setelah pemuatan, fungsi ini membuat instance dari kelas tertentu dari assembly menggunakan refleksi dan memanggil metode publik Run-nya secara asinkron, dengan meneruskan koneksi Node aktif sebagai argumen.

Metode SendAsync mengirimkan data secara asinkron melalui penangan soket dan memverifikasi apakah transmisi berhasil, memutuskan koneksi node jika operasi pengiriman gagal. Demikian pula, metode ReceiveAsync mengambil data terenkripsi dan terformat dari penangan soket yang mendasarinya dan mengembalikan aliran byte yang telah diproses ke pemanggil; jika operasi gagal atau mengembalikan null, node secara otomatis terputus untuk mempertahankan status koneksi yang valid. Bersama-sama, metode-metode ini menyediakan komunikasi C2 berbasis TCP yang andal dengan manajemen koneksi terintegrasi dan pembersihan otomatis selama kesalahan transmisi.
Selain itu, data muatan dikompresi menggunakan API kompresi RTL asli Windows (RtlCompressBuffer) sebelum transmisi dan didekompresi menggunakan RtlDecompressBuffer saat penerimaan berdasarkan header ukuran asli, sehingga meningkatkan efisiensi transfer sekaligus menjaga integritas data. Sementara itu, keamanan data ditegakkan menggunakan enkripsi AES, di mana data mentah dienkripsi dengan kunci bersama dan IV tetap melalui CryptoStream, memastikan komunikasi yang aman selama transmisi.

Metode tambahan dalam kelas ini mengelola operasi jaringan lainnya, termasuk pemutusan soket (Disconnect), membangun sub-koneksi sekunder (ConnectSubSockAsync), memvalidasi status koneksi aktif (Connected), dan memelihara hubungan node anak (AddSubNode).
Fungsi AddToStartupAdmin membuat Tugas Terjadwal Windows bernama “ XenoUpdateManager ” yang menjalankan executable yang ditentukan secara otomatis setiap kali pengguna masuk ke sistem dengan hak akses tertinggi yang tersedia (admin). Fungsi ini membuat definisi tugas XML, menuliskannya ke file sementara, dan menggunakan schtasks.exe untuk mendaftarkan tugas di Penjadwal Tugas Windows. Setelah mengeksekusi perintah, fungsi ini memeriksa output untuk menentukan apakah tugas berhasil dibuat dan kemudian mengembalikan hasilnya.

Fungsi AddToStartupNonAdmin menambahkan file yang dapat dieksekusi ke startup Windows pengguna saat ini dengan menuliskannya ke kunci registri HKCU\Software\Microsoft\Windows\CurrentVersion\Run , sehingga berjalan secara otomatis saat login tanpa hak administrator, dan mengembalikan informasi apakah operasi berhasil atau tidak.

Fungsi GetAntivirus mengambil informasi antivirus dari sistem menggunakan Windows Management Instrumentation (WMI) dengan melakukan kueri pada kelas AntivirusProduct di bawah root\SecurityCenter2. Fungsi ini mengumpulkan nilai displayName yang dikembalikan oleh kueri tersebut, yang mewakili produk antivirus yang terpasang dan digunakan untuk identifikasi sistem.

Fungsi RemoveStartup menghapus aplikasi dari startup Windows dengan menghapus entri yang cocok dari Tugas Terjadwal (menggunakan schtasks.exe) dan kunci registri HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Pertama, fungsi ini memeriksa hak administrator untuk menghapus tugas terjadwal, kemudian memindai dan menghapus tugas apa pun yang mengarah ke jalur executable yang diberikan. Terakhir, fungsi ini menghapus entri startup registri yang sesuai untuk pengguna saat ini.

Fungsi uninstall menghapus mekanisme persistensi aplikasi dan kemudian menghentikan program secara otomatis. Pertama-tama, fungsi ini memanggil RemoveStartup untuk menghapus entri startup apa pun (Tugas Terjadwal atau registri) yang terkait dengan file executable saat ini.

Skrip ini meluncurkan proses cmd.exe tersembunyi dengan perintah yang didekode Base64 (/C choice /CY /N /DY /T 3 & Del) yang menunggu beberapa detik lalu menghapus file executable yang sedang berjalan dari disk. Terakhir, fungsi ini secara paksa menghentikan proses saat ini, memastikan aplikasi keluar segera setelah pembersihan.
KEMAMPUAN Xeno-RAT
Xeno RAT mengungkapkan wawasan penting tentang perilaku operasional dan kemampuan pasca-eksploitasinya. Berdasarkan kode yang dianalisis, aktivitas yang diamati, dan fungsionalitas yang tersedia dalam proyek GitHub sumber terbukanya, malware ini menunjukkan berbagai fitur yang umumnya terkait dengan trojan akses jarak jauh (RAT) tingkat lanjut.
- Memantau aktivitas korban dan mengumpulkan informasi pengintaian dari pihak penyelenggara.
- Membangun komunikasi perintah dan kontrol (C2) berbasis TCP terenkripsi.
- Mendukung tunneling jaringan berbasis proxy SOCKS5.
- Memuat assembly eksternal secara dinamis ke dalam memori menggunakan Assembly.Load.
- Menjalankan perintah sembarangan yang dikeluarkan penyerang dari jarak jauh.
- Menyediakan fungsionalitas manajemen file termasuk unggah, unduh, dan hapus.
- Melakukan perekaman penekanan tombol (keylogging), pengambilan tangkapan layar, pemantauan clipboard, dan pengawasan melalui webcam/mikrofon.
- Mengirimkan pembaruan status dan detak jantung secara berkala ke server C2.
- Menggunakan lalu lintas jaringan yang dienkripsi dan dikompresi untuk menghambat analisis.
- Mempertahankan persistensi menggunakan Tugas Terjadwal dan kunci Eksekusi Registri.
- Dapat menambahkan atau menghapus dirinya sendiri dari lokasi startup Windows.
- Beroperasi secara diam-diam untuk mempertahankan akses tidak sah dalam jangka panjang.
- Mencakup fungsi penghapusan dan pencopotan instalasi otomatis untuk pembersihan setelah eksekusi.
Artefak Infrastruktur & Atribusi Pelaku Ancaman:
Berdasarkan analisis dan riwayat pelacakan rantai ini dan TPP dengan semua bukti tersebut, kami telah mengaitkan Kampanye ini di bawah kluster SideCopy dengan tingkat kepercayaan Sedang – Tinggi seperti yang disebutkan sebelumnya. Selama analisis infrastruktur, domain pengiriman abimj[.]edu[.]af mengarah ke dua alamat IP — 103.132.98.224 dan 103.132.98.226 — keduanya berada dalam blok 103.132.98.0/23 yang dikaitkan dengan AS58469, Kementerian Komunikasi dan Teknologi Informasi Afghanistan.

Penelusuran DNS pasif di seluruh blok IP ini mengungkapkan lebih dari 200 domain pemerintah dan pendidikan Afghanistan yang sah yang dihosting bersama pada infrastruktur yang sama, mengkonfirmasi bahwa pelaku ancaman sengaja menempatkan lapisan pengiriman mereka di dalam infrastruktur internet kedaulatan Afghanistan sendiri — sebuah langkah yang diperhitungkan untuk mencampur lalu lintas berbahaya dengan komunikasi pemerintah yang sah dan menghindari deteksi tingkat jaringan.


Penelusuran lebih lanjut pada server C2 RAT 185.235.137.106 mengungkapkan sebuah host Windows yang menjalankan HTTP, HTTPS, dan port RDP non-standar — sesuai dengan kotak C2 khusus yang dikelola oleh operator.

Server tersebut dihosting di AS59711 (HZ Hosting Ltd), penyedia yang terdaftar di Bulgaria dengan kehadiran fisik di Frankfurt, yang sebelumnya didokumentasikan dalam laporan infrastruktur SideCopy oleh Seqrite.

Tiga klaster domain mengarah ke IP ini pada saat analisis, termasuk domain sekali pakai yang didaftarkan oleh pelaku di TLD .xyz, .live, dan .online, bersama dengan domain infrastruktur email yang dikonfigurasi penuh — menunjukkan bahwa server yang sama melayani komunikasi RAT dan operasi pengiriman phishing secara bersamaan.

Rantai serangan — LNK mengeksekusi mshta.exe untuk mengambil HTA jarak jauh melalui endpoint index.php — adalah ciri khas SideCopy TTP yang didokumentasikan secara konsisten sejak 2019 dan tetap menjadi salah satu pengenal paling andal dari kelompok tersebut. Penggunaan XenoRAT secara khusus memperkuat atribusi ini, karena Seqrite Pada Desember 2024, Labs mengkonfirmasi bahwa SideCopy secara resmi telah mengadopsi varian XenoRAT yang disesuaikan sebagai bagian dari perangkat lunak mereka yang diperbarui, mengikuti pola adopsi RAT sumber terbuka yang serupa yang sebelumnya terlihat pada AsyncRAT. Persistensi berbasis registri melalui kunci Run dengan nama proses yang menggunakan typosquatting pada aplikasi Windows yang sah juga konsisten dengan perilaku pasca-eksploitasi SideCopy yang telah didokumentasikan.
Pada tingkat infrastruktur, domain pengiriman didaftarkan melalui AFGNIC dan ditempatkan pada blok IP yang sama dengan infrastruktur pemerintah Afghanistan yang sah — teknik pencampuran yang disengaja dan konsisten dengan pola yang didokumentasikan oleh SideCopy. RAT C2 pada HZ Hosting (AS59711) semakin memperkuat hal ini, karena penyedia yang sama telah muncul dalam klaster infrastruktur SideCopy sebelumnya yang dilacak oleh SeqriteYang perlu diperhatikan adalah konsistensi penamaan antara jalur pengiriman (cloudiyaf) dan nama startup RAT yang dikodekan secara permanen (clouda) menunjukkan adanya satu operator yang mengelola kedua tingkatan infrastruktur — yang mengaitkan lapisan pengiriman dan pasca-eksploitasi dengan aktor yang sama.
Kesimpulan: Mengapa Operasi XENOFISCAL?
Nama tersebut diambil langsung dari dua karakteristik utama kampanye ini — XenoRAT, alat akses jarak jauh sumber terbuka yang digunakan sebagai muatan akhir, dan Fiscal, yang mencerminkan penargetan tepat terhadap jaringan provinsi Kementerian Keuangan Afghanistan. Bersama-sama, keduanya membentuk satu nama sandi yang mencakup senjata dan korban dalam satu kata. Pilihan yang disengaja oleh pelaku ancaman untuk menggunakan umpan bertema keuangan terhadap kementerian keuangan, dikombinasikan dengan RAT yang mampu melakukan pengawasan jangka panjang secara diam-diam, membuat penggabungan ini tak terhindarkan. XENOFISCAL bukan hanya sebuah nama — ini adalah ringkasan dari seluruh operasi dalam delapan huruf.
Seqrite Cakupan:
- Link.Downloader.50744.GC
- Script.Netloader.50745.GC
- Trojan.LoaderCiR
- Trojan.YakbeexMSIL.ZZ4
- cld.script.trojan.1779477414
IOC:
| File Name | SHA256 |
| Zip | 194B912C242604D6F9A79369F22338C58A13CE0CC2ED280CE505075808BC2F14 |
| LNK | 3B4194BDFE40D94031A94B30397FFD8A4B09D0A4057668E897B8BDCD1703DD01 |
| PDF umpan | DF9173A28C0B0B878C10A53D35CD7CE6F6ED66D207B6B7C4FF723721F1C027AB |
| ugayt.hta | A63E90EE57A1F213A8FE76EF1A6CFF5AE9ED7EBCEDA258431533825E648C0C67 |
| tidak mungkin.bat | 5833917BD137804F5A021D2CB37ADFE5C4B7B67DBB06D59C3B9C5CF393835E45 |
| zuidrt.hta | 99127C8C67D90E2776BEEB85281F9C68399BF4567B07A6B638D68B760212E88D |
| WayBroad.dll | 8F2D979EF33B2900351C94C7335275A9342C75189E1A901998E90A539E944A1A |
| Aotestpass.dll | 0019212F25EB04BBB33BB194879C095265DB7855D6003BDD777CF0CBB90EB772 |
| Tikus Xeno | 9AE3D785486022AF82EA92E51B26E3F55C1BBA88A7BE2AD9790F4240E8499D14 |
MITRE ATT&CK:
| Taktik | Nama Teknik | ID Teknik |
| Akses Awal | Lampiran Spearphishing | T1566.001 |
| Execution | Eksekusi Proksi Utilitas Pengembang Tepercaya: mshta | T1218.005 |
| Penerjemah Perintah dan Skrip: Windows Command Shell | T1059.003 | |
| Penerjemah Perintah dan Skrip: JavaScript | T1059.007 | |
| Modul Bersama | T1129 | |
| API asli | T1106 | |
| Ketekunan | Kunci Jalankan Registri / Folder Startup | T1547.001 |
| Tugas Terjadwal | T1053.005 | |
| Eskalasi Privilege | Tugas Terjadwal | |
| Penghindaran Pertahanan | File atau Informasi yang Dikaburkan | T1053.005 |
| Deobfuscate/Decode File atau Informasi | T1027 | |
| Penyimpanan/Eksekusi Tanpa Berkas | T1140 | |
| Pemuatan Kode Reflektif | T1027.011 | |
| Hidup dari Biner dan Skrip Tanah (LOLBAS) | T1620 | |
| File dan Direktori Tersembunyi | T1218 | |
| Injeksi Proses / Eksekusi Dalam Memori | T1564.001 | |
| Bypass AMSI | T1055 | |
| Penghapusan Indikator pada Host: Penghapusan File | T1562.001 | |
| penemuan | Registri Kueri | T1070.004 |
| Penemuan Informasi Sistem | T1012 | |
| Penemuan Perangkat Lunak | T1082 | |
| Penemuan Perangkat Lunak Keamanan | T1518 | |
| Koleksi | Keylogging | T1518.001 |
| screen Capture | T1056.001 | |
| Data Papan Klip | T1113 | |
| Tangkap Audio | T1115 | |
| Video Capture | T1123 | |
| Komando dan Pengendalian | Protokol Lapisan Aplikasi: Protokol Web | T1125 |
| Protokol Lapisan Non-Aplikasi | T1071.001 | |
| Saluran Terenkripsi | T1095 | |
| Proksi: Proksi Eksternal | T1573 | |
| Resolusi Dinamis | T1090.002 | |
| Pengembangan Sumber Daya | Akuisisi Infrastruktur: Domain | T1568 |
| Kompromikan Infrastruktur | T1583.001 |



