Jelajahi kegiatan cybergroup Donot Team



Tim Donot Grup APT (juga dikenal sebagai APT-C-35, SectorE02) telah aktif sejak 2012. Kepentingan penyerang bertujuan untuk memperoleh informasi rahasia dan kekayaan intelektual. Di antara tujuan para penjahat adalah negara-negara Asia Selatan, khususnya sektor publik Pakistan. Pada 2019, kami mengamati aktivitas mereka di Bangladesh, Thailand, India, Sri Lanka, dan Filipina, serta di luar kawasan Asia - di Argentina, Uni Emirat Arab, dan Inggris.

Selama beberapa bulan, kami mengikuti perubahan dalam kode pengunduh berbahaya grup. Pada artikel ini, kami akan mempertimbangkan salah satu vektor serangan, membahas loader yang disebutkan secara lebih rinci dan menyentuh fitur-fitur infrastruktur jaringan.

Rantai serangan


Pada awal infeksi, korban menerima dokumen MS Word dalam format Office Open XML. Meskipun kurangnya bukti eksplisit, kami yakin bahwa vektor penetrasi awal ditargetkan email phishing dengan lampiran kantor. Dokumen itu sendiri tidak berbahaya, tetapi menyalahgunakan kemampuan untuk memuat ulang secara otomatis elemen eksternal untuk meluncurkan dokumen tahap berikutnya.



Mengakses Objek Eksternal Tertaut

File unduhan adalah dokumen RTF yang mengeksploitasi kerentanan CVE-2018-0802 di Microsoft Equation. Operasi shellcode utama didahului oleh rantai yang menengah yang mendekripsi lapisan berikutnya dengan XOR byte tunggal dengan tombol 0x90 dan 0xCE:



Dekripsi oleh shellcode pertama dari yang kedua



Dekripsi oleh shellcode kedua dari yang ketiga



Dekripsi oleh shellcode ketiga dari main

Shellcode utama melakukan tindakan berikut:

  • XOR byte tunggal dengan kunci 0x79 mendekripsi data biner dari % TEMP% \ satu file.
  • Membuat file yang dapat dieksekusi C: \ Windows \ Tasks \ Serviceflow.exe dan C: \ Windows \ Tasks \ sinter.exe . Ini adalah pengunduh grup jahat, yang akan kita bicarakan.
  • Membuat file C: \ Windows \ Tasks \ S_An.dll , di mana dua byte 0x90 ditulis.
  • Membuat file C: \ Windows \ Tasks \ A64.dll . Bergantung pada kapasitas sistem, ini adalah versi x64 atau x86 yang dimodifikasi dari utilitas UACMe untuk meningkatkan hak istimewa pada sistem. Selain menghindari kontrol UAC, perpustakaan membuat dan menjalankan skrip % TEMP% \ v.bat BAT, yang akan mendaftarkan salah satu dari bootloader yang dibuat sebelumnya sebagai layanan menggunakan perintah berikut:

sc create ServiceTool displayname= "ServiceFill" binpath= "C:\Windows\Tasks\Serviceflow.exe" start= "auto" sc start ServiceTool 


gambar

Decoding string skrip BAT dalam pustaka UACMe yang dimodifikasi

  • Membuat dan menjalankan skrip JScript C: \ Windows \ Tasks \ bin.js. Tugasnya adalah memulai perpustakaan A64.dll melalui ekspor RnMod menggunakan rundll32.
  • Membuat pintasan WORDICON.lnk di direktori startup. Tugasnya adalah memulai bootloader sinter.exe setelah reboot sistem.
  • Membuat pintasan Support.lnk di direktori startup. Tugasnya adalah menjalankan skrip JScript bin.js setelah mem - boot ulang sistem.



Shellcode utama yang didekompilasi

Dengan demikian, pada tahap ini, dua boot loader dapat diandalkan diperbaiki dalam sistem, operasi yang akan kita bahas secara lebih rinci.

Pemuat Lo2


Meskipun ada klasifikasi, trojan memiliki tugas yang berbeda. Jadi, file Serviceflow.exe memiliki peran pengawas. Ia mengumpulkan informasi tentang sistem:

  • nama pengguna
  • nama komputer
  • isi dari \ Program Files \ dan \ Program Files (x86) \ direktori
  • Versi OS
  • data prosesor -

dan menulis hasilnya ke file log.txt. Ia memeriksa keberadaan file A64.dll dan sinter.exe di direktori \ Windows \ Tasks \ dan, jika perlu, mengunduhnya dari skillsnew [.] Server manajemen teratas dan memulainya atas nama pengguna saat ini, mengekstraksi token yang sesuai dari proses winlogon.exe. Trojan sinter.exe memberi sinyal kepada penyerang tentang infeksi dengan mengakses hxxps://mystrylust.pw/confirm.php dan mengirimkan informasi yang telah dikumpulkan sebelumnya tentang sistem ke skillsnew [.] Top. Kemudian, jika komputer korban lebih menarik, ia menerima konten file customer.txt di hxxp://docs.google.com/uc?id=1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz&export=download . File tersebut berisi nama mobil server kontrol [.] Drivethrough.top, yang dengannya interaksi lebih lanjut terjadi. Komponen yang dapat diunduh terletak di direktori \ AppData \ Roaming \ InStore \, dan peluncurannya disediakan menggunakan penjadwal tugas.



Baris dekripsi fragmen perintah dan templat tugas

Hasil kerja pengunduh berbahaya adalah penyematan komponen kerangka yty dalam sistem, yang memungkinkan untuk mengekstrak informasi yang lebih lengkap tentang korban, termasuk file dengan ekstensi yang ditentukan, jalur input yang dicegat, daftar proses, tangkapan layar. Kami akan meninggalkan pertimbangan plug-in di luar ruang lingkup artikel ini.

Meneliti sampel serupa lainnya, kami menemukan jalur dan nama proyek yang tersisa di informasi debug:

  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2 \ SingleV2 \ Release \ BinWork.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2
    \ SingleV2_Task_Layout_NewICON \ Release \ BinWork.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2
    \ SingleV2_Task_Layout_NewICON_N_Lnk \ Release \ BinWork.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ New_Single_File \ Lo2 \ SingleV3 \ Release \ WorkFile.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ Off \ Off_New_Api \ Release \ C ++ \ ConnectLink.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ Off \ Off_New_Api \ Rilis \ C ++ \ TerBin.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ m0 \ yty 2.0 - Dengan AES Memotong LOC UNTUK XP Hanya Bit-Change_Name \ Release \ TaskTool.pdb
  • D: \ Soft \ DevelopedCode_Last \ BitDefenderTest \ yty 2.0 - Dengan AES Chunks OFFS Hanya Bit \ Release \ C ++ \ MsBuild.pdb
  • D: \ Soft \ DevelopedCode_Last \ yty 2.0 \ Release \ C ++ \ Setup.pdb

Selain "yty 2.0" substring, yang menghubungkan trojan dengan kerangka kerja yang disebutkan di atas, kami mencatat substring "Lo2", yang mungkin merupakan singkatan dari "Loader 2".

Dalam versi bootloader hingga pertengahan 2018, semua baris yang digunakan disimpan dalam file terbuka di file. Pada build berikut, penyerang mulai menggunakan enkripsi string. Dari versi ke versi, algoritme berubah sebagai berikut:

  • Mulai Mei 2018: membalikkan garis dan menyandikan Base64.
  • Mulai April 2019: Lakukan langkah sebelumnya dua kali .
  • Mulai Januari 2019: mengenkripsi string dengan algoritma AES dalam mode CBC dan menyandikan Base64. Contoh kode Python untuk dekripsi:

 import base64 from Cryptodome.Cipher import AES aeskey = (0x23, 0xd4, 0x67, 0xad, 0x96, 0xc3, 0xd1, 0xa5, 0x23, 0x76, 0xae, 0x4e, 0xdd, 0xca, 0x13, 0x55) def aes_decrypt(data, aeskey): iv = bytes(list(range(0, 16))) key = bytes(aeskey) aes = AES.new(key, AES.MODE_CBC, iv) return aes.decrypt(data).decode().strip('\x00') def base64_aes_decrypt(data, aeskey): data = base64.b64decode(data) data = aes_decrypt(data, aeskey) return data 

  • Dari Juni 2019: lakukan pengurangan siklik karakter-demi-karakter dengan array byte yang diberikan, enkode menggunakan UTF-8 dan enkode Base64. Contoh kode Python untuk dekripsi:

 subgamma = (0x2d, 0x55, 0xf, 0x59, 0xf, 0xb, 0x60, 0x33, 0x29, 0x4e, 0x19, 0x3e, 0x57, 0x4d, 0x56, 0xf) def sub_decrypt(data, subgamma): o = '' length = len(data) subgamma_length = len(subgamma) for i in range(length): o += chr((0x100 + ord(data[i]) - subgamma[i%subgamma_length]) & 0xff) return o def base64_utf8_sub_decrypt(data, subgamma): data = base64.b64decode(data) data = data.decode('utf-8') data = sub_decrypt(data, subgamma) return data 

  • Dari Oktober 2019: melakukan XOR modifikasi karakter-per-karakter dengan array byte yang diberikan dan mengkodekan Base64 dua kali . Keunikan dari algoritma XOR adalah bahwa jika nilai karakter string cocok dengan nilai karakter dalam array byte yang diberikan, XOR tidak diperlukan. Contoh kode Python untuk dekripsi:

 xorgamma = (0x56, 0x2d, 0x61, 0x21, 0x16) def modxor_decrypt(data, xorgamma): o = '' length = len(data) xorgamma_length = len(xorgamma) for i in range(length): c = data[i] if c != xorgamma[i%xorgamma_length]: c = data[i] ^ xorgamma[i%xorgamma_length] o += chr(c) return o def base64_modxor_decrypt(data, xorgamma): data = base64.b64decode(data) data = modxor_decrypt(data, xorgamma) return data 

Dalam proses penulisan skrip untuk dekripsi, kami menemukan bahwa beberapa baris individual tidak dapat didekripsi. Tetapi kemudian ternyata bahwa salah satu metode dekripsi lainnya yang dijelaskan di atas cocok untuk string tersebut. Setelah memastikan bahwa hanya satu metode decoding data yang diterapkan pada setiap sampel, kami sampai pada kesimpulan bahwa penyerang hanya lupa untuk menghapus garis yang tidak terpakai atau menggantinya dengan yang dienkripsi dengan benar untuk versi malware berikutnya.



Garis-garis di salah satu sampel bootloader dienkripsi dengan berbagai cara, sementara di file yang dapat dieksekusi hanya satu

Kesalahan seperti itu selalu ada di tangan para peneliti: misalnya, berulang kali di antara garis-garis yang dilupakan datang server kontrol penyusup, yang sebelumnya tidak kita kenal.

Fitur infrastruktur jaringan


Untuk kelengkapan, kami mencatat beberapa fitur karakteristik yang akan membantu menghubungkan serangan pengelompokan di masa depan:

  • Sebagian besar server manajemen disewa dari penyedia DigitalOcean, LLC (ASN 14061) dan berlokasi di Amsterdam.
  • Penyerang tidak menggunakan server yang sama untuk nama DNS yang berbeda: untuk setiap nama domain baru yang mereka pilih untuk memesan host khusus yang baru.
  • Dalam kebanyakan kasus, data pendaftaran pemilik domain disembunyikan oleh layanan privasi. Layanan berikut digunakan untuk ini: WhoisGuard, Inc; Whois Privacy Protection Service, Inc; Domain Dengan Proxy, LLC; Yayasan Perlindungan Privasi Whois. Dalam beberapa kasus, data tersedia, dan Anda dapat mengikuti pendekatan umum untuk mengisi bidang.



Hutan pembakaran informasi domain WHOIS [.] Com



Informasi domain WHOIS layanan penyimpanan awan [.] Com

  • Yang paling sering digunakan adalah .top, .pw, .space, .live, dan .icu TLD.

Kesimpulan


Tim Donot dibedakan dengan menggunakan alatnya sendiri pada setiap tahap serangan. Teknik yang diterapkan untuk menyulitkan analisis kode - di satu sisi, kurangnya upaya untuk menyembunyikan atau menutupi tindakan mereka dalam sistem - di sisi lain. Berbagai serangan terhadap target yang sama tidak hanya dapat menunjukkan minat khusus pada lingkaran korban yang dipilih, tetapi juga mengkonfirmasi rendahnya efisiensi taktik dan teknik yang digunakan.

Diposting oleh Alexey Vishnyakov, Positive Technologies

IOC
6ce1855cf027d76463bb8d5954fcc7bb - bootloader dalam format MS Word
hxxp: //plug.msplugin.icu/MicrosoftSecurityScan/DOCSDOC
21b7fc61448af8938c09007871486f58 - dropper dalam format MS Word
71ab0946b6a72622aef6cdd7907479ec - Lo2 loader di C: \ Windows \ Tasks \ Serviceflow.exe
22f41b6238290913fc4d196b8423724d - Lo2 loader di C: \ Windows \ Tasks \ sinter.exe
330a4678fae2662975e850200081a1b1 - versi modifikasi x86 dari UACMe
22e7ef7c3c7911b4c08ce82fde76ec72 - versi modifikasi UACMe x64
skillsnew [.] teratas
hxxps: //mystrylust.pw/confirm.php
hxxp: //docs.google.com/uc? id = 1wUaESzjGT2fSuP_hOJMpqidyzqwu15sz & export = unduh
car [.] drivethrough.top
burningforests [.] com
layanan penyimpanan awan [.] com

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


All Articles