Bagaimana Ryuk ransomware yang menyerang perusahaan



Ryuk adalah salah satu opsi ransomware paling terkenal dalam beberapa tahun terakhir. Sejak pertama kali muncul di musim panas 2018, ia telah menyusun daftar korban yang mengesankan , terutama di lingkungan bisnis, yang merupakan target utama serangannya.

1. Informasi umum


Dokumen ini berisi analisis opsi ransomware Ryuk, serta bootloader yang bertanggung jawab untuk mengunduh malware ke sistem.

Ryuk ransomware pertama kali muncul pada musim panas 2018. Salah satu perbedaan antara Ryuk dan ransomware lainnya adalah bertujuan untuk menyerang lingkungan perusahaan.

Pada pertengahan 2019, kelompok-kelompok kejahatan cyber menyerang sejumlah besar perusahaan Spanyol dengan bantuan cryptor ini.


Ara.


Gambar
1: Kutipan dari El Confidencial mengenai serangan Ryuk ransomware [1] 2: Kutipan dari El País tentang serangan Ryuk ransomware [2]
Tahun ini, Ryuk menyerang sejumlah besar perusahaan di berbagai negara. Seperti yang Anda lihat pada gambar di bawah ini, Jerman, Cina, Aljazair, dan India paling menderita.

Membandingkan jumlah serangan dunia maya, kita dapat melihat bahwa jutaan pengguna dipengaruhi oleh Ryuk dan sejumlah besar data dikompromikan, mengakibatkan kerusakan ekonomi yang serius.


Ara. 3: Ilustrasi aktivitas global Ryuk.


Ara. 4: 16 negara yang paling terpengaruh oleh Ryuk


Fig. 5: Jumlah pengguna yang diserang oleh Ryuk ransomware (dalam jutaan)

Menurut prinsip operasi ancaman seperti itu, ransomware ini setelah enkripsi menunjukkan kepada korban pemberitahuan tebusan yang harus dibayarkan dalam bitcoin ke alamat yang ditentukan untuk memulihkan akses ke file yang dienkripsi.

Malware ini telah berubah sejak pertama kali muncul.
Varian ancaman ini dianalisis dalam dokumen ini ditemukan selama upaya untuk meluncurkan serangan pada Januari 2020.

Karena kerumitannya, malware ini sering dikaitkan dengan penjahat cyber terorganisir, juga dikenal sebagai kelompok APT.

Bagian dari kode Ryuk memiliki kemiripan yang nyata dengan kode dan struktur kriptografer Hermes terkenal lainnya, yang dengannya mereka memiliki sejumlah fungsi yang identik. Itulah sebabnya Ryuk awalnya dikaitkan dengan kelompok Korea Utara Lazarus, yang pada saat itu diduga berada di belakang ransomware Hermes.

Selanjutnya, CrowdStrike's Falcon X mencatat bahwa Ryuk sebenarnya diciptakan oleh WIZARD SPIDER [4].

Ada beberapa bukti yang mendukung asumsi ini. Pertama, ransomware ini diiklankan di situs exploit.in, yang merupakan pasar malware Rusia yang terkenal dan sebelumnya dikaitkan dengan beberapa grup APT Rusia.
Fakta ini mengecualikan teori bahwa Ryuk dapat dikembangkan oleh kelompok Lazarus APT, sebagai ini tidak cocok dengan cara kelompok itu bertindak.

Selain itu, Ryuk disebut-sebut sebagai enkripsi yang tidak akan bekerja pada sistem Rusia, Ukraina, dan Belarusia. Perilaku ini ditentukan oleh fungsi yang ditemukan di beberapa versi Ryuk, di mana ia memeriksa bahasa sistem di mana enkripsi ini berjalan dan menghentikan operasinya jika sistem memiliki bahasa Rusia, Ukraina atau Belarusia. Akhirnya, ketika melakukan analisis ahli dari mesin yang diretas oleh kelompok WIZARD SPIDER, beberapa "artefak" ditemukan yang seharusnya digunakan dalam pengembangan Ryuk sebagai varian dari ransomware Hermes.

Di sisi lain, para ahli Gabriela Nicolao dan Luciano Martins menyarankan bahwa cryptographer mungkin telah dikembangkan oleh tim APT CryptoTech [5].
Ini mengikuti fakta bahwa beberapa bulan sebelum kemunculan Ryuk, grup ini memposting informasi di forum situs yang sama yang mereka kembangkan versi baru dari ransomware Hermes.

Beberapa pengguna forum bertanya-tanya apakah CryptoTech benar-benar menciptakan Ryuk. Setelah itu, kelompok ini membela diri dan menyatakan bahwa mereka memiliki bukti bahwa mereka telah mengembangkan 100% dari enkripsi ini.

2. Karakteristik


Kita mulai dengan bootloader, yang tugasnya adalah mengidentifikasi sistem di mana ia berada, sehingga Anda dapat menjalankan versi "yang benar" dari enkripsi Ryuk.
Hash bootloader adalah sebagai berikut:

MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469

Salah satu fitur dari boot ini tidak berisi fitur apa pun yang tidak memiliki boot pada bootloadan - tidak ada fitur pada bootloader ini - tidak ada fitur pada boot ini - tidak ada fitur untuk bootload pembuat malware ini tidak memasukkan informasi apa pun di dalamnya.

Terkadang mereka memasukkan data yang salah untuk membuat pengguna berpikir bahwa ia diduga meluncurkan aplikasi yang sah. Namun, seperti yang akan kita lihat nanti, jika infeksi tidak melibatkan interaksi dengan pengguna (seperti halnya dengan enkripsi ini), maka penyerang tidak menganggap perlu untuk menggunakan meta-data.


Ara. 6:

Sampel data meta Sampel dikompilasi dalam format 32-bit sehingga dapat dijalankan pada sistem 32-bit dan 64-bit.

3. Vektor penetrasi


Sampel yang mengunduh dan meluncurkan Ryuk memasuki sistem kami melalui koneksi jarak jauh, dan parameter akses diperoleh berkat serangan RDP awal.


Ara. 7: Serang Registry

Penyerang berhasil masuk ke sistem dari jarak jauh. Setelah itu, ia membuat file yang dapat dieksekusi dengan sampel kami.
File yang dapat dieksekusi ini diblokir oleh solusi antivirus sebelum diluncurkan.


Ara. 8: Memblokir sampel



Gbr. 9: Contoh Kunci

Ketika file jahat diblokir, penyerang mencoba mengunduh versi terenkripsi dari file yang dapat dieksekusi, yang juga diblokir.


Ara. 10: Satu set sampel yang mencoba dijalankan oleh penyerang

Akhirnya, ia mencoba mengunduh file jahat lain melalui konsol terenkripsi
PowerShell untuk memotong perlindungan anti-virus. Tapi dia juga diblokir.


Ara. 11: PowerShell dengan konten berbahaya yang diblokir


. Gambar. 12: PowerShell dengan konten berbahaya yang diblokir

4. Bootloader


Ketika dieksekusi, ia menulis file ReadMe ke folder % temp% , yang merupakan khas dari Ryuk. File ini - permintaan tebusan, yang berisi alamat e-mail domain protonmail, yang cukup umum di keluarga malware ini: msifelabem1981@protonmail.com




Gambar. 13: Persyaratan penukaran

Selama pelaksanaan bootloader, Anda dapat melihat bahwa ia meluncurkan beberapa file yang dapat dieksekusi dengan nama acak. Mereka disimpan dalam folder PUBLIC tersembunyi , tetapi jika opsi "Tampilkan file dan folder tersembunyi" tidak aktif dalam sistem operasi , mereka akan tetap tersembunyi. Selain itu, file-file ini 64-bit tidak seperti file induknya, yaitu 32-bit.




Ara. 14: File yang dapat dieksekusi diluncurkan oleh sampel

Seperti yang Anda lihat pada gambar di atas, Ryuk meluncurkan icacls.exe, yang akan digunakan untuk memodifikasi semua ACL (daftar kontrol akses), sehingga menjamin akses dan mengubah flag.

Itu mendapat akses penuh di bawah semua pengguna ke semua file di perangkat (/ T) terlepas dari kesalahan (/ C) dan tanpa menampilkan pesan apa pun (/ Q).


Ara. Gambar 15: Opsi eksekusi untuk icacls.exe diluncurkan oleh sampel.

Penting untuk dicatat bahwa Ryuk memeriksa versi Windows yang sedang berjalan. Untuk melakukan ini, ia
memeriksa versi menggunakan GetVersionExW , di mana ia memeriksa nilai flag lpVersionInformationmenunjukkan apakah versi Windows saat ini lebih lama dari Windows XP .





Bergantung pada apakah Anda menjalankan versi yang lebih baru dari Windows XP, bootloader akan menulis ke folder pengguna lokal - dalam hal ini, folder % Public% .


Ara. 17: Memeriksa versi sistem operasi

File yang direkam adalah Ryuk. Kemudian meluncurkannya, mengirimkan alamatnya sendiri sebagai parameter.


Ara. 18: Menjalankan Ryuk melalui ShellExecute

Hal pertama yang dilakukan Ryuk adalah mendapatkan parameter input. Kali ini ada dua parameter input (file yang dapat dieksekusi itu sendiri dan alamat dropper), yang digunakan untuk menghapus jejak mereka sendiri.




Ara. 19: Membuat proses

Anda juga dapat melihat bahwa begitu dia meluncurkan file yang dapat dieksekusi, dia menghapus dirinya sendiri, sehingga tidak meninggalkan jejak keberadaannya di folder tempat dia dieksekusi.


Ara. 20: penghapusan file

5. RYUK


5.1 Kehadiran
Ryuk, seperti malware lainnya, mencoba untuk tetap berada di sistem selama mungkin. Seperti yang ditunjukkan di atas, salah satu cara untuk mencapai tujuan ini adalah dengan diam-diam membuat dan menjalankan file yang dapat dieksekusi. Untuk ini, praktik paling umum adalah memodifikasi kunci registri CurrentVersion \ Run .
Dalam hal ini, Anda dapat melihat bahwa untuk tujuan ini, file yang dapat dieksekusi pertama VWjRF.exe
(nama file dihasilkan secara acak) meluncurkan cmd.exe .




Ara. 21: Menjalankan file VWjRF.exe

Kemudian perintah RUN dimasukkan dengan nama " svchos"Jadi, jika Anda ingin memeriksa kunci registri kapan saja, Anda dapat dengan mudah tidak melihat perubahan ini, mengingat kesamaan nama ini dengan svchost. Berkat kunci ini, Ryuk memastikan keberadaannya dalam sistem. Jika sistem belum terinfeksi maka ketika Anda reboot sistem, executable akan mencoba lagi


Gambar 22:. sampel memastikan kehadiran kunci registri

Kita juga dapat melihat bahwa executable ini berhenti dua layanan:
" audioendpointbuilder ", yang, seperti namanya, cocok sistem audio,


Gambar 23: Contoh menghentikan layanan audio sistem

dan sams, yang merupakan layanan manajemen akun. Menghentikan kedua layanan ini adalah karakteristik Ryuk. Dalam hal ini, jika sistem terhubung ke sistem SIEM, enkripsi mencoba menghentikan pengiriman peringatan apa pun ke SIEM . Dengan demikian, ia membela langkah selanjutnya, karena beberapa layanan SAM tidak akan dapat memulai pekerjaan mereka dengan benar setelah Ryuk dieksekusi.


Ara. 24: Sampel menghentikan layanan Samss

5.2 Keistimewaan

Secara umum, Ryuk dimulai dengan gerakan horizontal di dalam jaringan atau diluncurkan oleh program jahat lainnya, seperti Emotet atau Trickbot , yang dalam kasus peningkatan hak istimewa mentransfer hak-hak tinggi ini ke penyandi.

Di muka, sebagai awal dari proses implementasi, kita melihat bahwa ia menjalankan proses ImpersonateSelf , yang berarti bahwa konten keamanan token akses akan ditransfer ke stream, di mana ia akan segera diterima menggunakan GetCurrentThread .


Ara. 25: Memanggil Meniru Diri

Kemudian kita melihat bahwa itu akan mengaitkan token akses dengan aliran. Kami juga melihat bahwa salah satu flag adalah DesiredAccess , yang dapat digunakan untuk mengontrol akses yang akan dimiliki stream. Dalam hal ini, nilai yang akan diterima edx harus TOKEN_ALL_ACESS, atau TOKEN_WRITE yang lain .




Ara. 26: Membuat token aliran

Kemudian akan digunakanSeDebugPrivilege juga akan membuat panggilan untuk mendapatkan hak debugging Debug sehubungan dengan streaming, sebagai akibatnya, dengan menetapkan PROCESS_ALL_ACCESS , itu akan dapat mengakses setiap proses yang diperlukan. Sekarang, mengingat bahwa penyandinya sudah memiliki aliran yang disiapkan, itu hanya tinggal melanjutkan ke tahap akhir.


Ara. 27: Memanggil SeDebugPrivilege dan fungsi peningkatan hak

Di satu sisi, kami memiliki LookupPrivilegeValueW, yang memberi kami informasi yang diperlukan tentang hak istimewa yang ingin kami tingkatkan.


Ara. 28: Meminta informasi tentang hak istimewa untuk eskalasi mereka

Di sisi lain, kami memiliki AdjustTokenPrivileges , yang memungkinkan kami untuk mendapatkan hak yang diperlukan untuk aliran kami. Dalam hal ini, yang paling penting adalah NewState.yang benderanya akan memberikan hak istimewa.




Ara. Gambar 29: Menetapkan hak untuk token

5.3 Penyebaran

Di bagian ini, kami akan menunjukkan bagaimana sampel melakukan proses penyebaran yang disebutkan sebelumnya dalam laporan ini.

Tujuan utama dari proses implementasi, serta eskalasi, adalah untuk mendapatkan akses ke salinan bayangan . Untuk melakukan ini, ia perlu bekerja dengan aliran dengan hak yang lebih tinggi dari pengguna lokal. Segera setelah dia mendapatkan hak yang lebih tinggi, dia akan menghapus salinan dan membuat perubahan pada proses lain untuk membuatnya tidak mungkin untuk kembali ke titik pemulihan sebelumnya dalam sistem operasi.

Seperti biasanya dengan malware jenis ini, ia menggunakan CreateToolHelp32Snapshot untuk menyelesaikan implementasinya, sehingga diperlukan snapshot dari proses yang sedang berjalan dan mencoba mengakses proses ini menggunakan OpenProcess . Segera setelah dia mendapatkan akses ke proses, dia juga membuka token dengan informasinya untuk mendapatkan parameter proses.


Ara.

Gambar 30: Menerima proses dari komputer Kita dapat secara dinamis melihat bagaimana ia menerima daftar proses yang berjalan dalam 140002D9C rutin menggunakan CreateToolhelp32Snapshot. Setelah menerimanya, ia menelusuri daftar, mencoba membuka proses satu per satu menggunakan OpenProcess hingga ia dapat melakukannya. Dalam hal ini, proses pertama yang bisa dia buka adalah "taskhost.exe" .


Ara. 31: Eksekusi dinamis dari suatu prosedur untuk mendapatkan proses

Kita dapat melihat bahwa dia kemudian membaca token dari proses, sehingga OpenProcessToken dengan Gambar " 20008 "


. 32: Membaca informasi proses token

Ini juga memeriksa bahwa proses di mana ia akan tertanam bukanlah csrss.exe , explorer.exe, lsaas.exe atau bahwa ia memiliki seperangkat izin otoritas NT .


Ara. Gambar 33: Proses yang dikecualikan.

Kita dapat secara dinamis melihat bagaimana pengecekan pertama kali menggunakan informasi proses token di 140002D9C untuk mengetahui apakah akun yang haknya digunakan untuk menjalankan proses adalah akun AUTHORITY NT .


Ara. 34: Memeriksa AUTHORITY NT

Dan kemudian, di luar prosedur, ia memeriksa bahwa itu bukan csrss.exe, explorer.exe atau lsaas.exe .


Ara. 35: Memeriksa OTORITAS NT

Setelah ia mengambil snapshot dari proses, membuka proses dan memverifikasi bahwa tidak ada satupun yang dikecualikan, ia siap untuk menuliskan proses yang akan diimplementasikan ke dalam memori.

Untuk melakukan ini, ia pertama-tama mencadangkan suatu wilayah dalam memori ( VirtualAllocEx ), menulis padanya ( WriteProcessmemory ) dan membuat aliran ( CreateRemoteThread ). Untuk bekerja dengan fungsi-fungsi ini, ia menggunakan PID dari proses yang dipilih, yang sebelumnya ia peroleh menggunakan CreateToolhelp32Snapshot .


Ara. 36: Kode Embed

Di sini kita dapat mengamati secara dinamis bagaimana ia menggunakan proses PID untuk memanggil fungsi VirtualAllocEx.


Ara. Gambar 37: Menjalankan VirtualAllocEx

5.4 Enkripsi
Pada bagian ini, kita akan melihat bagian dari sampel ini terkait dengan enkripsi. Pada gambar berikut, Anda dapat melihat dua rutinitas yang disebut " LoadLibrary_EncodeString " dan " Encode_Func ", yang bertanggung jawab untuk melakukan prosedur enkripsi.


Ara. 38: Prosedur Enkripsi

Pada awalnya kita dapat melihat bagaimana ia memuat string yang nantinya akan digunakan untuk menghilangkan semua yang dibutuhkan: impor, DLL, perintah, file, dan CSP.


Ara. 39: Rantai deobfusiasi

Gambar berikut ini menunjukkan impor pertama yang di-deobfuscates dalam register R4, LoadLibrary . Ini akan digunakan nanti untuk memuat DLL yang diperlukan. Kita juga dapat melihat baris lain dalam register R12, yang digunakan bersama dengan baris sebelumnya untuk melakukan deobfusiasi.


Ara. 40: Deobfuscasi dinamis.

Dia terus memuat perintah yang akan dijalankannya nanti untuk menonaktifkan cadangan, memulihkan titik, dan mode boot aman.


Ara. 41: Mengunduh perintah

Kemudian memuat lokasi di mana ia akan menjatuhkan 3 file: Windows.bat, run.sct, dan start.bat .








Ara. 42: Lokasi File

Ketiga file ini digunakan untuk memeriksa hak istimewa yang dimiliki masing-masing lokasi. Jika hak istimewa yang diperlukan tidak tersedia, Ryuk menghentikan eksekusi.

Itu terus memuat baris yang sesuai dengan tiga file. Yang pertama, DECRYPT_INFORMATION.html , berisi informasi yang diperlukan untuk memulihkan file. Yang kedua, PUBLIC , berisi kunci publik RSA.


Ara. 43: String DECRYPT INFORMATION.html

Ketiga, UNIQUE_ID_DO_NOT_REMOVE , berisi kunci terenkripsi yang akan digunakan dalam rutinitas berikutnya untuk melakukan enkripsi.


Ara. 44: ID UNIK TIDAK MENGHAPUS String

Akhirnya, ini memuat perpustakaan yang diperlukan bersama dengan impor yang diperlukan dan CSP ( Microsoft Enhanced RSAdan Penyedia Kriptografi AES ).


Ara. 45: Mengunduh pustaka

Setelah semua deobfusiasi selesai, ia melanjutkan untuk melakukan tindakan yang diperlukan untuk enkripsi: beralih ke semua drive logis, lakukan apa yang dimuat dalam subrutin sebelumnya, perkuat keberadaan dalam sistem, letakkan file RyukReadMe.html, enkripsi, iterate semua drive jaringan, beralih ke perangkat yang ditemukan dan enkripsi mereka.
Semuanya dimulai dengan mengunduh " cmd.exe " dan menulis kunci publik RSA.


Ara. 46: Mempersiapkan Enkripsi

Kemudian mengambil semua drive logis menggunakan GetLogicalDrives dan menonaktifkan semua cadangan, titik pemulihan, dan mode boot aman.


Ara. 47: Menonaktifkan alat pemulihan

Setelah itu, ia memperkuat kehadirannya di sistem, seperti yang kita lihat di atas, dan menulis file RyukReadMe.html pertama ke TEMP .


Ara.

Gambar 48: Menerbitkan notifikasi pembelian kembali. Pada gambar berikut, Anda dapat melihat bagaimana ia membuat file, mengunduh konten, dan menulisnya:


Gambar. Gambar 49: Mengunduh dan merekam konten file.

Agar dapat melakukan tindakan yang sama pada semua perangkat, ia menggunakan
" icacls.exe " seperti yang kami tunjukkan di atas.


Ara. 50: Menggunakan icalcls.exe

Dan akhirnya, ia mulai mengenkripsi file dengan pengecualian file "* .exe", "* .dll", file sistem, dan lokasi lain yang ditentukan sebagai daftar putih terenkripsi. Untuk ini, ia menggunakan impor: CryptAcquireContextW (di mana penggunaan AES dan RSA ditunjukkan), CryptDeriveKey, CryptGenKey , CryptDestroyKey , dll. Suatu upaya juga sedang dilakukan untuk memperluas efeknya pada perangkat jaringan yang terdeteksi menggunakan WNetEnumResourceW dan kemudian mengenkripsi mereka.


Ara. 51: Enkripsi File Sistem

6. Impor dan bendera terkait


Berikut ini adalah tabel yang mencantumkan impor dan bendera paling relevan yang digunakan oleh sampel:



7. IOC




Referensi
  • users \ Public \ run.sct
  • Menu Mulai \ Program \ Startup \ start.bat AppData \ Roaming \ Microsoft \ Windows \ Start
  • Menu \ ProgramsStartup \ start.bat




Laporan teknis ransomware Ryuk disusun oleh pakar lab antivirus PandaLabs.

8. Referensi


1. "Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemas." Https: // www. elconfidencial.com/tecnologia/2019-11-04/ everis-la-ser-ciberataque-ransomware-15_2312019 /, Publicada el 04/11/2019.

2. “Un virus de ruso ataca a importantes empresas españolas.” Https: //elpais.com/tecnologia / 2019/11/04 / actualidad / 1572897654_ 251312.html, Publicada el 04/11/2019.

3. "Makalah VB2019: pembalasan Shinigami: ekor panjang malware Ryuk." Https://securelist.com/ story-of-the-tahun-2019-kota-di bawah ransomware-siege / 95456 /, Publicada el 11 /

12/2019 4. "Berburu Game Besar dengan Ryuk: Ransomware Lucrativebased lain." Https: // www. crowstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicada el 01/10/2019.

5. "Kertas VB2019: pembalasan Shinigami: ekor panjang malware Ryuk." Https: // www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r

All Articles