11 puan yazan GN⁺ 2025-03-16 | 1 yorum | WhatsApp'ta paylaş
  • Yazar, Akira fidye yazılımına bulaşan bir şirketin verilerini fidye ödemeden kurtarmayı başardı
  • Kurtarma sürecinde kullanılan kaynak kodu GitHub üzerinde sunuluyor
  • Akira fidye yazılımının çeşitli varyantları bulunuyor ve bu varyant 2023'ün sonlarından beri aktif
  • Önceki sürümlerde (2023 ortasından önce) Avast'ın bir çözücü geliştirmesine imkân veren bir hata vardı, ancak bu bilgi açıklandıktan sonra saldırganlar şifrelemeyi güncelledi
  • Fidye yazılımı örneklerinin hash'leri GitHub üzerinden görülebilir

Akira fidye yazılımı (Linux/ESXI Varyantı 2024) için dosya kurtarma yöntemi özeti

Çözüm yaklaşımı

İlk analiz

  • Fidye yazılımı, seed olarak nanosaniye düzeyindeki mevcut zamanı kullanıyor
  • Linux'ta dosya değiştirme zamanı nanosaniye çözünürlüğüne sahip olduğu için seed'i geri kazanma ihtimali keşfedildi
  • Değiştirilen dosyanın zaman damgasına dayanarak brute-force yaklaşımı denendi

Karmaşık şifreleme süreci

  • Fidye yazılımı 4 seed değeri kullanıyor (nanosaniye düzeyinde zaman)
  • Anahtar üretimi için SHA-256 hash'i 1500 kez yinelenerek işleniyor
  • VMware VMFS dosya sistemi değiştirme zamanını yalnızca saniye düzeyinde saklıyor
  • Çok iş parçacıklı şifreleme nedeniyle kesin zamanlamayı geri çıkarmak zor

Tersine mühendislik

  • Kod C++ ile yazıldığı için analiz zordu, ancak obfuscation uygulanmamıştı
  • Hata mesajları sayesinde Nettle kütüphanesi kullanıldığı anlaşıldı
  • Rastgele üreteç Yarrow256 algoritmasına dayanıyor ve şu kodu kullanıyor
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);   
}  
  • Anahtar üretimi sırasında generate_random() 4 kez çağrılıyor
    • chacha8_key (32 bayt)
    • chacha8_nonce (16 bayt)
    • kcipher2_key (16 bayt) × 2

Brute-force olasılığının değerlendirilmesi

Ana strateji

  • İki zaman damgası (t3, t4) üretilip seed'e dönüştürülüyor, ardından rastgele sayı üretiliyor
  • Bu rastgele sayılar KCipher2 anahtarı ve IV olarak kullanılıp şifreleme yapılıyor, sonra sonuç şifrelenmiş dosyayla karşılaştırılıyor

Performans analizi

  • 100 milyon zaman damgasını dönüştürmek 3 saat sürüyor (CPU'da)
  • GPU kullanıldığında dönüşüm hızı 6 dakikanın altına iniyor
  • 1 saniyelik aralık için olası çift sayısı yaklaşık 500 trilyon
  • GPU optimizasyonundan sonra RTX 3090 üzerinde saniyede 1,5 milyar şifreleme işlemi mümkün

VMware dosya türleri ve kurtarma stratejisi

FLAT-VMDK

  • VMDK'nin ilk 8 baytı bootloader'dan kurtarılabiliyor
  • VMX dosyasındaki OS bilgisi kontrol edilerek aynı OS'nin kurulması gerekiyor

SESPARSE

  • Dosya başlığı deseni QEMU kaynak kodundan doğrulandı
  • Başlık 0x00000000cafebabe ile başlıyor

Diğer dosyalar

  • NVRAM dosyaları, VMX dosyaları, log dosyaları vb. içinden ilk zaman damgası doğrulanabiliyor

Zaman damgası kurtarma

ESXi log'ları

  • ESXi log'larında milisaniye düzeyinde çalışma zamanı kaydı bulunuyor
  • Milisaniye düzeyinde log yoksa saniye düzeyindeki zamandan tahmin yürütülebiliyor

Dosya sistemi değiştirme zamanı

  • ESXi'de çözünürlük saniye düzeyinde olduğu için kesin zaman tahmini zor

Çok iş parçacıklı şifreleme

  • Dosya şifreleme, CPU çekirdeği sayısı kadar paralel işleniyor
  • Dosyanın değiştirme zamanı, şifrelemenin tamamlandığı ana yakın oluyor

Brute-force aracının uygulanması

KCipher2 algoritması

  • Standart KCipher2 yerine değiştirilmiş bir sürüm kullanılıyor (Endian işleme dâhil)
  • CUDA kullanılarak GPU optimizasyonu yapıldı

Performans iyileştirmeleri

  • Paylaşımlı bellek kullanılarak performans artırıldı
  • Bellek kopyalamanın kaldırılmasıyla hız iyileştirildi
  • Paralel dosya işleme uygulandı → saniyede yaklaşık 1,5 milyar işlem mümkün

RTX 3090 vs RTX 4090

  • RTX 4090 yaklaşık 2,3 kat daha hızlı7 gün sürüyor
  • RTX 3090 → yaklaşık 16 gün sürüyor

Kurtarma adımları

1. Zaman damgası çıkarma

  • Değiştirme zamanını görmek için stat komutu kullanılıyor
  • ESXi log'larından yürütmenin başlama zamanı çıkarılıyor

2. Şifrelenmiş veriyi çıkarma

  • VMDK, SESPARSE vb. içinden şifrelenmiş bloklar çıkarılıyor

3. Sunucu hızını ölçme

  • GitHub'daki timing-patch aracı kullanılıyor

4. İşi bölme

  • Yapılandırma dosyası oluşturulup bölünüyor
  • GPU üzerinde paralel çalışacak şekilde ayarlanıyor

5. GPU kiralama ve çalıştırma

  • Runpod → 7 gün için yaklaşık 116 dolar maliyet
  • Vast.ai → daha ucuz, ancak cihaz durumuna göre hız farkı oluşabilir

6. KCipher2 brute-force çalıştırma

./akira-bruteforce run2 config.json  

7. Chacha8 brute-force çalıştırma

  • Büyük dosyalar için gerekli olabilir

8. Çözme işlemini çalıştırma

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

Performans sonuçları

  • RTX 3090 → saniyede 1,5 milyar işlem
  • RTX 4090 → saniyede 3,5 milyar işlem
  • 16 adet RTX 4090 kullanıldığında → 10 saatten kısa sürede kurtarma mümkün

Kurtarma olasılığı ve sınırlamalar

  • Fidye yazılımı kurtarmada başarı olasılığı %0,1'in altında
  • Belirli koşullar sağlanırsa kurtarma ihtimali var
  • Şifreleme yöntemi, fidye yazılımı varyantına göre değişebilir

Sonuç

  • Fidye yazılımından kurtarma çok zor, ancak belirli koşullarda başarılı olabilir
  • GPU tabanlı brute-force temel araç konumunda
  • Yazar kurtarma kodunu açık kaynak olarak yayımladı, ancak ek destek sunması zor

Ek notlar

  • GitHub'daki README.md dosyasına bakın
  • Kod, belirli bir istemci durumuna göre yazıldı → genel amaçlı bir araç değil
  • Yapılandırma dosyası oluşturma, zamanlama ayarı vb. için sistem yöneticisi düzeyinde teknik bilgi gerekiyor

1 yorum

 
GN⁺ 2025-03-16
Hacker News yorumu
  • Birisi fidye yazılımının "sınırlı ömrü" hakkında yorum yapmış. Bu yüzden bunun diğer kurbanları etkilemediğini söyleyen görüşünü silmiş ama buna bir yanıt paylaşmış

    • Bu yanlış bilgi. Sınırlı olan, kurbanların dosyalarını kurtarmak için kullanılabilecek saldırı sayısı
    • Yazarın bu saldırıyı kullanan tek kişi olduğunu düşünüyorsanız, bu da yanlış bir varsayım
    • The Ransomware Hunting Team adlı kitabı öneriyor. Kurbanların dosyalarını kurtarma sürecinin perde arkasını anlatan ilgi çekici bir kitap
  • Neden zaman damgası kullandıklarına dair bir soru vardı

    • Yanlış anlamayın, kullanmamalarına sevindim ama bu acemice bir hata gibi görünüyor
    • Benim kaçırdığım bir şey mi var, yoksa suçu seçmeyen insanların sayısı mı daha fazla merak ediyorum
  • Bu yazı keyifle okundu ve sürece dair merakı giderecek kadar doğru miktarda ayrıntı içeriyordu

    • Yazarın bu süreci tasarlaması ve ilginç ayrıntılar sunması büyük övgüyü hak ediyor
  • Uygulamalar varsayılan olarak sandbox içinde çalıştırılsa fidye yazılımı sorunu azalırdı

  • "Mini PC CPU'mda saniyede 100.000 zaman damgasını rastgele baytlara karşı hesaplama hızını tahmin ettim (tüm çekirdekleri kullanarak)"

    • Mini PC hakkında daha fazla ayrıntı öğrenmek isterim. İşlemci, RAM, fiyat ve fansız olup olmadığı merak konusu
  • İlk 65k'nın KCipher2 ile, geri kalanının ise başka bir şeyle şifrelenmesinin nedenini merak ediyorum. Garip görünüyor

  • "Bunu yayımladıktan sonra saldırganların şifrelemeyi tekrar değiştireceğini tahmin ediyorum"

    • Eğer bunu fark edeceklerse neden yayımladığını merak ediyorum. İnternet itibarı uğruna bu kadar ayrıntılı bir çözücü sunmak sorumsuzca görünüyor
    • Okuması ilginç ve entelektüel merakı tetikliyor ama ayrıntıları gizli tutmak genel olarak topluluk için daha iyi olurdu
  • "Endonezya blogumda her fidye yazılımı yazısı yazdığımda pek çok kişi benden fidye yazılımı yardımı istiyor"

    • Fidye yazılımının kurtarılabilir olup olmadığını sadece doğrulamak bile saatlerce emek ve zaman gerektirebilir (ör. kötü amaçlı yazılım obfuscate edilmiş/korumalıysa)
    • Bu yüzden bunu ücretsiz yapmamalarını istemek yönünde bir görüş var
    • O halde ücret talep etmeleri gerektiği yönünde bir görüş var