11 poin oleh GN⁺ 2025-03-16 | 1 komentar | Bagikan ke WhatsApp
  • Penulis berhasil memulihkan data dari perusahaan yang terinfeksi ransomware Akira tanpa membayar tebusan
  • Kode sumber yang digunakan dalam proses pemulihan tersedia di GitHub
  • Ransomware Akira memiliki berbagai varian dan varian ini aktif sejak paruh akhir 2023
  • Pada versi sebelumnya (sebelum pertengahan 2023), ada bug yang memungkinkan Avast mengembangkan dekriptor, tetapi setelah hal ini dipublikasikan, penyerang memperbarui mekanisme enkripsinya
  • Hash sampel ransomware dapat dilihat di GitHub

Ringkasan cara memulihkan file Akira ransomware (varian Linux/ESXI 2024)

Pendekatan solusi

Analisis awal

  • Ransomware menggunakan waktu saat ini dalam nanodetik sebagai seed
  • Karena waktu modifikasi file di Linux memiliki resolusi nanodetik, ditemukan kemungkinan untuk memulihkan seed
  • Mencoba pendekatan brute force berdasarkan timestamp file yang dimodifikasi

Proses enkripsi yang kompleks

  • Ransomware menggunakan 4 nilai seed (waktu dalam nanodetik)
  • Pembuatan kunci memproses hash SHA-256 sebanyak 1500 kali secara berulang
  • Sistem file VMware VMFS hanya menyimpan waktu modifikasi hingga resolusi detik
  • Karena enkripsi berbasis multi-thread, pemulihan timing yang akurat menjadi sulit

Reverse engineering

  • Kodenya ditulis dalam C++ sehingga sulit dianalisis, tetapi tidak diobfuskasi
  • Dari pesan error, terkonfirmasi bahwa ransomware menggunakan library Nettle
  • Generator acaknya berbasis algoritma Yarrow256 dan menggunakan kode berikut
void generate_random(char *buffer, int size)  
{  
    uint64_t t = get_current_time_nanosecond();  
    char seed[32];  
    snprintf(seed, sizeof(seed), "%lld", t);  
    struct yarrow256_ctx ctx;  
    yarrow256_init(&ctx, 0, NULL);  
    yarrow256_seed(&ctx, strlen(seed), seed);  
    yarrow256_random(&ctx, size, buffer);   
}  
  • Saat membuat kunci, terjadi 4 kali pemanggilan generate_random()
    • chacha8_key (32 byte)
    • chacha8_nonce (16 byte)
    • kcipher2_key (16 byte) × 2

Tinjauan kemungkinan brute force

Strategi utama

  • Membuat dua timestamp (t3, t4), mengubahnya menjadi seed, lalu menghasilkan bilangan acak
  • Bilangan acak digunakan sebagai kunci KCipher2 dan IV, lalu hasil enkripsi dibandingkan dengan file terenkripsi

Analisis performa

  • Mengonversi 100 juta timestamp membutuhkan 3 jam (berdasarkan CPU)
  • Dengan GPU, kecepatan konversi dipangkas menjadi kurang dari 6 menit
  • Untuk rentang 1 detik, pasangan yang mungkin berjumlah sekitar 500 triliun
  • Setelah optimasi GPU, RTX 3090 mampu memproses 1,5 miliar enkripsi per detik

Tipe file VMWare dan strategi pemulihan

FLAT-VMDK

  • 8 byte pertama VMDK dapat dipulihkan dari bootloader
  • Informasi OS dapat diperiksa dari file VMX sehingga perlu memasang OS yang sama

SESPARSE

  • Pola header file dikonfirmasi dari source code QEMU
  • Header dimulai dengan 0x00000000cafebabe

File lainnya

  • Timestamp awal dapat ditemukan dari file NVRAM, file VMX, file log, dan lainnya

Pemulihan timestamp

Log ESXi

  • Log ESXi mencatat waktu eksekusi hingga milidetik
  • Jika tidak ada log tingkat milidetik, perkiraan dapat dilakukan dari waktu berbasis detik

Waktu modifikasi sistem file

  • Pada ESXi, resolusinya hanya sampai detik sehingga sulit memperkirakan waktu yang akurat

Enkripsi multi-thread

  • Enkripsi file diproses paralel sebanyak jumlah core CPU
  • Waktu modifikasi file mendekati waktu saat enkripsi selesai

Implementasi alat brute force

Algoritma KCipher2

  • Menggunakan versi modifikasi, bukan KCipher2 standar (termasuk penanganan endian)
  • Optimasi GPU dilakukan menggunakan CUDA

Peningkatan performa

  • Performa ditingkatkan dengan shared memory
  • Kecepatan ditingkatkan dengan menghapus memory copy
  • Pemrosesan file paralel diimplementasikan → mampu menangani sekitar 1,5 miliar kali per detik

RTX 3090 vs RTX 4090

  • RTX 4090 sekitar 2,3 kali lebih cepat → membutuhkan 7 hari
  • RTX 3090 → sekitar 16 hari

Tahapan pemulihan

1. Ekstraksi timestamp

  • Periksa waktu modifikasi dengan perintah stat
  • Ekstrak waktu mulai eksekusi dari log ESXi

2. Ekstraksi data terenkripsi

  • Ekstrak blok terenkripsi dari VMDK, SESPARSE, dan lainnya

3. Mengukur kecepatan server

  • Gunakan alat timing-patch dari GitHub

4. Membagi pekerjaan

  • Buat dan bagi file konfigurasi
  • Atur agar bisa dijalankan paralel di GPU

5. Menyewa GPU dan menjalankan

  • Runpod → biaya sekitar 116 dolar untuk 7 hari
  • Vast.ai → lebih murah, tetapi kecepatan bisa berbeda tergantung kondisi perangkat

6. Menjalankan brute force KCipher2

./akira-bruteforce run2 config.json  

7. Menjalankan brute force Chacha8

  • Diperlukan untuk file berukuran besar

8. Menjalankan dekripsi

./decrypt filename.vmdk <t1> <t2> <t3> <t4>  

Hasil performa

  • RTX 3090 → 1,5 miliar proses per detik
  • RTX 4090 → 3,5 miliar proses per detik
  • Jika menggunakan 16 RTX 4090 → pemulihan dapat dilakukan dalam kurang dari 10 jam

Kemungkinan dan batasan pemulihan

  • Probabilitas keberhasilan pemulihan ransomware kurang dari 0,1%
  • Jika kondisi tertentu terpenuhi, tetap ada kemungkinan pemulihan
  • Metode enkripsi dapat berubah tergantung varian ransomware

Kesimpulan

  • Pemulihan ransomware sangat sulit, tetapi dalam kondisi tertentu bisa berhasil
  • Brute force berbasis GPU adalah alat kunci
  • Penulis telah merilis kode pemulihan sebagai open source, tetapi sulit memberikan dukungan tambahan

Catatan tambahan

  • Lihat file README.md di GitHub
  • Kode ditulis sesuai situasi klien tertentu → bukan alat umum
  • Pembuatan file konfigurasi, penyesuaian timing, dan lainnya memerlukan keterampilan setingkat administrator sistem

1 komentar

 
GN⁺ 2025-03-16
Komentar Hacker News
  • Seseorang menyinggung soal "umur terbatas" ransomware. Karena itu, komentar yang menyatakan hal ini tidak berdampak pada korban lain dihapus, tetapi balasannya tetap diposting

    • Itu adalah informasi yang keliru. Yang terbatas adalah jumlah serangan yang memungkinkan korban memulihkan file mereka
    • Jika Anda berpikir penulis adalah satu-satunya orang yang menggunakan serangan ini, itu juga anggapan yang salah
    • Merekomendasikan buku berjudul The Ransomware Hunting Team. Buku itu menarik karena membahas kisah di balik proses para korban memulihkan file mereka
  • Ada pertanyaan tentang mengapa timestamp digunakan

    • Semoga ini tidak disalahartikan, dan saya senang mereka tidak menggunakannya, tetapi ini terlihat seperti kesalahan yang sangat mendasar
    • Saya penasaran apakah ada sesuatu yang saya lewatkan, atau memang lebih banyak orang yang memilih untuk tidak menjadi kriminal
  • Tulisan ini enak dibaca dan memuat detail yang pas untuk memuaskan rasa ingin tahu tentang prosesnya

    • Pujian besar untuk penulis karena merancang proses ini dan memberikan detail-detail menarik
  • Jika aplikasi disandbox secara default, masalah ransomware akan berkurang

  • "Saya memperkirakan kecepatan CPU mini PC saya dalam menghitung 100.000 timestamp per detik menjadi byte acak (dengan memanfaatkan semua core)"

    • Saya ingin tahu lebih banyak detail tentang mini PC itu. Penasaran dengan prosesor, RAM, harga, dan apakah tanpa kipas
  • Saya penasaran mengapa 65k pertama dienkripsi dengan KCipher2 dan sisanya dengan sesuatu yang lain. Terlihat aneh

  • "Saya memperkirakan setelah ini dipublikasikan, para penyerang akan mengubah enkripsinya lagi"

    • Jika mereka akan menyadarinya, saya penasaran mengapa ini dipublikasikan. Memberikan dekriptor sedetail ini demi reputasi di internet terasa tidak bertanggung jawab
    • Ini memang bacaan yang menarik dan memicu rasa ingin tahu intelektual, tetapi akan lebih baik bagi komunitas secara keseluruhan jika detail-detailnya tetap tidak dipublikasikan
  • "Setiap kali saya menulis tentang ransomware di blog saya yang berbahasa Indonesia, banyak orang meminta bantuan terkait ransomware"

    • Hanya untuk memeriksa apakah ransomware bisa dipulihkan saja bisa memakan waktu dan usaha berjam-jam (misalnya jika malware diobfuscate/diproteksi)
    • Jadi jangan meminta itu dilakukan secara gratis
    • Lalu ada pendapat bahwa mereka seharusnya menagih biaya