- 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
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ış
Neden zaman damgası kullandıklarına dair bir soru vardı
Bu yazı keyifle okundu ve sürece dair merakı giderecek kadar doğru miktarda ayrıntı içeriyordu
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)"
İ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"
"Endonezya blogumda her fidye yazılımı yazısı yazdığımda pek çok kişi benden fidye yazılımı yardımı istiyor"