Sodomokibi ransomware baru-baru ini dibicarakan dalam berita, tetapi sedikit yang menyelami rincian malware ini. Hari ini kami akan mencoba untuk mengenal Sodinokibi lebih dekat, mempertimbangkan prinsip-prinsip ransomware untuk mengidentifikasi vektor prioritas untuk melindungi sistem informasi dari ancaman baru.

Penulis teks: Ravikant Tiwari dan Alexander Koshelev
Apa yang kita ketahui tentang Sodinokibi?
Sodinokibi kemungkinan besar disebarkan oleh penyerang yang sama yang dikenal karena serangan ransomware dari keluarga GandCrab, yang, dilihat dari laporan di forum bawah tanah, tidak akan lagi berkembang.
Sodinokibi menggunakan kerentanan Oracle WebLogic (CVE-2019-2725) untuk mendapatkan akses ke komputer korban. Begitu berada di sistem, malware mencoba menjalankan dirinya dengan hak yang diperluas untuk mendapatkan akses ke semua file dan sumber daya PC tanpa batasan ...
Sodinokibi berusaha untuk tidak menginfeksi komputer di Iran, Rusia dan negara-negara bekas Uni Soviet lainnya.
Program ransomware menggunakan algoritma AES dan Salsa20 untuk mengenkripsi file pengguna. AES digunakan untuk mengenkripsi kunci sesi, serta data yang dikirim ke server manajemen.
File pengguna dienkripsi menggunakan Salsa20.
Untuk menghasilkan dan mendistribusikan kunci, Sodinokibi menggunakan algoritma Diffie-Hellman pada kurva elips.
Setelah di mesin, virus langsung menghapus semua file dari folder cadangan.
Saat ini, ransomware meminta 0,32806964 BTC (≈ $ 2.500) untuk memulihkan akses ke file yang dienkripsi. Selain itu, jika tebusan tidak dibayarkan dalam waktu 4 hari, pemeras berjanji untuk menggandakan jumlah ...
Bagaimana cara kerja Sodinokibi?
Kami mempelajari satu contoh Sodinokibi di laboratorium kami. Ransomware dipaket oleh pengepak khusus. Pada saat yang sama, bahkan setelah pembongkaran berhasil, tidak ada baris yang dapat dibaca dalam kode. Selain itu, perangkat lunak tidak mengimpor perpustakaan atau API sistem apa pun. Karena itu, akan sangat sulit bagi antivirus statis yang menggunakan tanda tangan berdasarkan string yang dapat dibaca dan tabel API yang diimpor untuk mendeteksinya.
Nama-nama API dan parameter lainnya didekripsi ketika perangkat lunak berjalan menggunakan algoritma RC4. Untuk membuat deteksi lebih sulit bagi antivirus, ransomware ini menjalankan operasi pada string menggunakan hash DJB daripada string itu sendiri ...
Inisialisasi
Sodinokibi dimulai dengan membuat tabel impor dinamis. Pertama-tama, program ini yakin bahwa itu adalah satu-satunya salinan dalam sistem dengan metode pengecekan mutex. Setelah memeriksa, ia mendekripsi konfigurasi JSON menggunakan RC4, yang disimpan dalam file program dan memeriksa nilai boolean dari kunci "exp". Jika nilainya "benar", Sodinokibi mencoba meluncurkan exploit. Itu begitu dalam sampel kami, sehingga melakukan fungsi mengeksploitasi kerentanan

Konfigurasi JSON yang DidekripsiKode yang menjalankan pemeriksaan exploit untuk melihat apakah pembaruan 11 September 2018 (KB4457138) diinstal pada komputer. Patch ini membahas banyak kerentanan di bawah ini. Dan jika tidak ada di mesin, Ransomware mulai meluncurkan shellcode 32- atau 64-bit tergantung pada platform di mana malware dieksekusi. Kami percaya ransomware sedang mencoba untuk meningkatkan hak istimewa ke administrator menggunakan CVE-2018-8440.
Cuplikan 1Daftar kerentanan yang menambal KB4457138 perbaikan:
Patch KB4457138 memperbaiki kerentanan:
- CVE-2018-8457, CVE-2018-8335, CVE-2018-8424, CVE-2018-8455, CVE-2018-8468, CVE-2018-8447, CVE-2018-8475, CVE-2018-8271, CVE- 2018-8440, CVE-2018-8464, CVE-2018-8469, CVE-2018-8421, CVE-2018-8442, CVE-2018-8367, CVE-2018-8443, CVE-2018-8465, CVE-2018- 8419, CVE-2018-8466, CVE-2018-8410, CVE-2018-8467, CVE-2018-8462, CVE-2018-8452, CVE-2018-8446, CVE-2018-8449, CVE-2018-8420, CVE-2018-8433, CVE-2018-8438, CVE-2018-8435, CVE-2018-8456, CVE-2018-8354, CVE-2018-8434, CVE-2018-8470, CVE-2018-8332, CVE- 2018-0965, CVE-2018-8315, CVE-2018-8439, CVE-2018-8392, CVE-2018-8425, CVE-2018-8393.
Jika kerentanan tidak terdeteksi dalam sistem dan proses terus bekerja sebagai pengguna biasa, perintah RUNAS akan digunakan untuk memulai contoh lain, tetapi dengan hak administratif, dan yang saat ini bekerja dengan hak istimewa terbatas akan selesai. Kode sandi lengkap ditunjukkan pada tangkapan layar di bawah ini.

Setelah Sodinokibi berhasil memulai dalam mode administrator, perangkat lunak melakukan pemeriksaan pendahuluan tambahan dan mengklarifikasi nilai kunci "bro" dalam konfigurasi JSON dan mengetahui negara lokasi. Itu tidak akan mencoba menginfeksi komputer dari negara-negara berikut, jika parameter lokasi seperti itu diatur dalam pengaturan komputer.
Menyempurnakan ID bahasaDaftar Negara Pengecualian
- Rumania, Rusia, Ukraina, Belarus, Estonia, Latvia, Lithuania, Tajikistan, Iran, Armenia, Azerbaijan, Georgia, Kazakhstan, Kirgistan, Turkmenistan, Uzbekistan, Tatarstan
* Catatan Editor: untuk alasan yang tidak diketahui, penulis secara khusus menyoroti lokal Tatar di Rusia
Setelah lulus tes, malware menghentikan proses mysql.exe (jika sedang berjalan) untuk mendapatkan akses ke file MySQL dan mengenkripsi mereka. Setelah itu, ransomware menghapus salinan bayangan Windows menggunakan vssadmin, dan juga menonaktifkan sistem Pemulihan Windows menggunakan bcdedit:
vssadmin.exe Delete Shadows /All /Quiet & bcedit /set {default}
recoveryenabled No & bcedit /set {default} bootstatuspolice ignorealfailures
Sebelum mengenkripsi file pengguna, Sodinokibi mencari semua sistem file, termasuk folder jaringan, untuk menemukan direktori dengan nama "cadangan" dan menghapusnya secara permanen. Menariknya, sebelum menghapus direktori itu sendiri, malware pertama-tama mengganti konten di semua folder tersebut dengan set byte acak untuk membuat pemulihan menjadi tidak mungkin pada prinsipnya. Untungnya, file Acronis Backup tidak dapat dihapus dengan mudah, karena dilindungi pada level kernel, khusus untuk mencegah ransomware dari mengambil tindakan tersebut.
Generasi kunci
Sodinokibi menggunakan Diffie - Hellman Elliptic Curve Generation dan Exchange Protocol (ECDH). Kunci sesi yang dihasilkan digunakan dalam algoritma enkripsi simetris, dan berbagai jenis data dienkripsi menggunakan metode yang berbeda - AES dan Salsa20.
AES digunakan untuk mengenkripsi kunci privat dari sepasang kunci privat dan publik yang dihasilkan secara lokal pada mesin pengguna. Ini juga mengenkripsi data selama transmisi melalui jaringan. Salsa20 digunakan untuk mengenkripsi file pengguna.
Sodinokibi berisi dua kunci publik yang berbeda, salah satunya adalah bagian dari konfigurasi JSON, dan yang kedua tertanam dalam biner. Kunci publik ini akan digunakan untuk mengenkripsi kunci pribadi yang dibuat pada mesin. Langkah-langkah spesifik dari pembuatan kunci dan enkripsi adalah sebagai berikut:
Langkah 1. Pembuatan pasangan sesi dari privat (rahasia, angka acak) dan kunci publik pada mesin lokal.
Generasi kunci pribadi dan publik lokalEnkripsi kunci pribadi dari Langkah 1 terjadi menggunakan kunci publik dari konfigurasi JSON
Langkah 2. Hasilkan sepasang kunci pribadi dan publik.
Langkah 3. Menggunakan kunci pribadi dari Langkah 2 dan kunci publik (nilai kunci pk), kunci publik dihasilkan dari JSON, dan setelah hashing, kunci simetris diperoleh.
Hasilkan kunci simetris menggunakan kunci bersamaLangkah 4. Pembuatan 16-bit IV (vektor inisialisasi).
Langkah 5. Enkripsi kunci pribadi yang dihasilkan pada Langkah 1 menggunakan AES dengan kunci dan IV, yang diperoleh selama Langkah 3 dan 4.
Langkah 6. Perhitungan CRC32 untuk kunci pribadi terenkripsi, yang ternyata pada langkah 5.
Langkah 7. Menambahkan IV dan CRC32 ke ujung buffer yang berisi kunci pribadi terenkripsi dari Langkah 5.
Langkah 8. Menyimpan buffer ke file terkait dengan offset (ditandai "sk_key").
Enkripsi kunci pribadi dari Langkah 1 menggunakan kunci publik penyerang
Enkripsi kunci pribadi dari Langkah 1 menggunakan kunci publik yang terkandung dalam file biner.Langkah 9. Ulangi langkah 2 hingga 7 menggunakan kunci publik lain yang tertanam dalam file biner di Langkah 3.
Langkah 10. Menyimpan buffer ke file yang dipetakan dengan offset dalam memori (tandai “0_key”)
sk_key, 0_key dan pk_key ditulis ke registri sesuai, tergantung pada hak akses yang diterima oleh program ...
HKLM \ SOFTWARE \ recfg \ sk_key atau HKCU \ SOFTWARE \ recfg \ sk_key
HKLM \ SOFTWARE \ recfg \ 0_key atau HKCU \ SOFTWARE \ recfg \ 0_key
HKLM \ SOFTWARE \ recfg \ pk_key atau HKCU \ SOFTWARE \ recfg \ pk_key
Kunci rahasia terenkripsi dalam registri
Pembuatan kunci untuk file individual dengan Salsa20Langkah 11. Hasilkan pasangan baru dari kunci publik dan pribadi.
Langkah 12. Hasilkan kunci bersama dengan menggunakan kunci publik sesi yang dibuat pada Langkah 2 dan hash untuk mendapatkan kunci simetris berikutnya yang diperlukan untuk menghasilkan kunci di Salsa20.
Langkah 13. Memasang kunci 256-bit (32 byte) di Salsa20
Langkah 14. Hasilkan IV 8-bit untuk kunci Salsa20
Langkah 15. Pembuatan kunci Salsa20
Langkah 16. Menggunakan Salsa20 key_state untuk mengenkripsi file pengguna dengan Salsa20.
Pembuatan kunci Salsa20 untuk setiap file
Ulangi Langkah 11 hingga 16 untuk setiap file yang dienkripsi.Ilustrasi enkripsi dan dekripsi
Untuk lebih memahami bagaimana kunci dihasilkan dan ditransmisikan antara komputer penyerang dan korban, Anda perlu mengetahui cara kerja algoritma Diffie Hellman - ini mudah dilakukan dengan ilustrasi.
Proses enkripsi
Pertukaran Kurva Elliptic Diffie-Hellman (ECDH)
Penjelasan terperinci tentang proses enkripsi di SodinokibiUntuk mendekripsi data, kunci pribadi penyerang akan diperlukan. Tetapi mereka tidak dipublikasikan di mana saja, dan oleh karena itu tidak mungkin mengembalikan file.
Proses dekripsi (rahasia penyerang adalah kunci pribadinya)
Proses disederhanakan dari mendekripsi file pengguna diilustrasikan di bawah ini.Enkripsi File pada Hard Drive Lokal dan Folder Jaringan
Untuk mengenkripsi file pengguna, Sodinokibi menggunakan I / O Completion Ports dan meluncurkan beberapa stream enkripsi, tetapi tidak lebih dari dua kali jumlah core prosesor pada mesin, mengaitkan stream ini dengan port I / O yang dibuat khusus. Utas ini menggunakan fungsi GetQueuedCompletionStatus Win API untuk menunggu paket tiba di port I / O sebelum memulai enkripsi file.
Segera setelah stream dibuat dan menunggu paket I / O tiba, Sodinokibi mulai beralih ke file pengguna di semua disk lokal dan di semua folder jaringan, tidak termasuk CDROM dan RAMDISK dan menugaskan mereka ke port penyelesaian I / O yang sesuai. Untuk semua file yang tidak termasuk dalam daftar pengecualian dalam nama folder, file dan ekstensi, fungsi AddFileToIoCompletionPort disebut dan kemudian PostQueuedCompletionStatus Ini meneruskan eksekusi ke aliran enkripsi, yang menunggu informasi pada port penyelesaian I / O untuk memulai enkripsi file.
Fungsi AddFileToIoCompletionPort juga menghasilkan kunci Salsa20 unik untuk setiap file yang akan dienkripsi, dan meneruskan kunci Salsa20 ke aliran enkripsi bersama dengan metadata lain yang harus direkam setelah enkripsi menggunakan parameter lpOverlapped parameter PostQueuedCompletionStatus Win API.
Setelah memproses file di setiap direktori, kecuali untuk pengecualian, file dibuat dengan permintaan tebusan. Ketika file yang akan dienkripsi habis, utas masuk ke loop dan tunggu sampai jumlah total file yang dienkripsi dan diganti mencapai jumlah total file yang ditransfer ke port penyelesaian I / O.
Akhirnya, sistem menetapkan tanda yang mencerminkan bahwa tidak ada lagi file untuk dienkripsi dan mengirimkan beberapa paket I / O yang menandakan selesainya proses. Berkat ini, penghentian aliran enkripsi tambahan yang sedang menunggu data tercapai.

Daftar Folder Pengecualian
- "$ windows. ~ bt"
- "Intel"
- "File program (x86)"
- "File program"
- "Msocache"
- "$ recycle.bin"
- "$ windows. ~ ws"
- "Peramban Tor"
- "Boot"
- "Informasi volume sistem"
- "Perflogs"
- Google
- "Data aplikasi"
- "Windows"
- "Data program"
- "Windows.old"
- "Appdata"
- "Mozilla"
- Pengecualian File
- "Bootfont.bin"
- "Boot.ini"
- "Ntuser.dat"
- "Desktop.ini"
- "Iconcache.db"
- Ntldr
- "Ntuser.dat.log"
- "Thumbs.db"
- "Bootsect.bak"
- "Ntuser.ini"
- "Autorun.inf"
- Pengecualian ekstensi
- "Paket"
- Ldf
- Scr
- Icl
- "386"
- "Cmd"
- "Ani"
- "Adv"
- "Tema"
- "Msi"
- "Rtp"
- "Diagcfg"
- "Msstyles"
- "Bin"
- Hlp
- Shs
- Drv
- "Wpx"
- "Deskthepack"
- "Kelelawar"
- "Rom"
- "Msc"
- "Lnk"
- Taksi
- "Spl"
- "Ps1"
- "Msu"
- IC
- "Kunci"
- "Msp"
- "Com"
- Sys
- "Diagpkg"
- "Nls"
- "Diagcab"
- Ico
- "Kunci"
- "Ocx"
- "Mpa"
- "Cur"
- Kopral
- "Mod"
- Hta
- "Exe"
- "Icns"
- "Prf"
- "Dll"
- "Nomedia"
- Idx
Aliran enkripsi mengasumsikan membaca konten file, mengenkripsi, menulis kembali ke file yang sama, menambahkan meta-data, termasuk kunci privat sesi terenkripsi, dengan bagian publik ECDH untuk setiap file dan vektor inisialisasi Salsa20 digunakan untuk mengenkripsi file.
Setelah itu, aliran mengubah nama file, menambahkan nama nama yang dihasilkan secara acak. File dienkripsi dengan algoritma Salsa20 menggunakan fungsi EncryptAndWrite.
Berikut ini adalah contoh memanggil fungsi EncryptingThreadRoutine.
Struktur file setelah enkripsi
Struktur file terenkripsiAktivitas jaringan
Setelah proses enkripsi selesai, ransomware menyiapkan data untuk dikirim ke server manajemen. Data mencakup berbagai bidang mulai dari konfigurasi JSON, informasi sistem, dan kunci enkripsi. Data yang disiapkan juga ditulis ke registri di bawah kunci "[HKLM | HKCU] \ SOFTWARE \ recfg \ stat" sebelum dienkripsi oleh AES dan dikirim ke server penyerang ...

Data jaringan

Nama domain terdiri dari: sochi-okna23 [.] Ru + bagian dari alamat 1
- "Wp-content"
- "Statis"
- "Konten"
- "Termasuk"
- "Unggahan"
- "Berita"
- "Data"
- "Admin"
dan bagian dari alamat 2
- "Gambar"
- "Gambar"
- "Gambar"
- "Temp"
- "Tmp"
- "Grafik"
- "Aset"
- Foto
- "Game"
Pembuatan URLPermintaan tebusan
Sodinokibi memiliki templat untuk membuat permintaan pembelian kembali, yang memberikan ruang bagi data pengguna. Mereka secara otomatis mengganti nama, id pengguna (Uid - deskripsi di atas) dan kunci. Permintaan tebusan ditempatkan di setiap direktori, tidak termasuk pengecualian.

Dekripsi

Tidak ada cara gratis untuk mendekripsi data untuk ransomware ini, dan satu-satunya cara untuk memulihkan data adalah dengan menggunakan layanan dekripsi yang disediakan oleh penyerang. Pergi ke sana mengikuti instruksi dalam permintaan tebusan ...

Kesimpulan
Kami menyarankan Anda menggunakan perlindungan anti-ransomware tingkat lanjut dan menjaga sistem antivirus Anda tetap mutakhir. Semua produk Acronis mengandung perlindungan ransomware yang disempurnakan dan dapat melindungi Anda dari serangan semacam itu, meminimalkan risiko kehilangan data.
Perlindungan dunia maya terdapat dalam solusi pribadi Acronis True Image 2019, serta dalam sistem bisnis Acronis Backup, yang disertai dengan modul anti-malware yang didasarkan pada kecerdasan buatan yang disebut Acronis Active Protection. Berkat ini, kedua sistem dapat melindungi pengguna dari Sodinokibi.