- लेखक ने Akira ransomware से संक्रमित एक कंपनी का डेटा फिरौती दिए बिना रिकवर करने में सफलता पाई
- रिकवरी प्रक्रिया में इस्तेमाल किया गया source code GitHub पर उपलब्ध है
- Akira ransomware के कई variants मौजूद हैं, और यह variant 2023 के उत्तरार्ध से सक्रिय है
- पहले के version (2023 के मध्य से पहले) में एक bug था, जिसकी वजह से Avast decryptor बना सका, लेकिन यह जानकारी सार्वजनिक होने के बाद हमलावरों ने encryption अपडेट कर दिया
- ransomware sample hashes GitHub पर देखे जा सकते हैं
Akira ransomware (Linux/ESXI Variant 2024) फाइल रिकवरी विधि का सारांश
समाधान का दृष्टिकोण
प्रारंभिक विश्लेषण
- ransomware nanosecond स्तर के current time को seed के रूप में इस्तेमाल करता है
- Linux में file modification time nanosecond resolution रखता है, इसलिए seed रिकवर होने की संभावना मिली
- modified files के timestamp के आधार पर bruteforce approach आजमाई गई
जटिल encryption प्रक्रिया
- ransomware 4 seed values (nanosecond स्तर का समय) इस्तेमाल करता है
- key generation में SHA-256 hash को 1500 बार दोहराया जाता है
- VMware VMFS file system modification time को केवल second स्तर पर स्टोर करता है
- multi-thread आधारित encryption के कारण सटीक timing रिकवर करना कठिन है
reverse engineering
- code C++ में लिखा गया था, इसलिए analysis कठिन था, लेकिन obfuscation नहीं किया गया था
- error messages से Nettle library के उपयोग की पुष्टि हुई
- random generator Yarrow256 algorithm पर आधारित है और निम्न code का उपयोग करता है
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);
}
- key generation के समय
generate_random() को 4 बार call किया जाता है
- chacha8_key (32 bytes)
- chacha8_nonce (16 bytes)
- kcipher2_key (16 bytes) × 2
bruteforce की व्यवहार्यता की समीक्षा
मुख्य रणनीति
- दो timestamps (t3, t4) बनाकर उन्हें seed में बदला जाता है और फिर random values generate की जाती हैं
- इन random values को KCipher2 key और IV के रूप में इस्तेमाल कर encryption किया जाता है, फिर परिणाम की encrypted file से तुलना की जाती है
performance analysis
- 10 करोड़ timestamps को convert करने में 3 घंटे लगे (CPU आधार पर)
- GPU उपयोग करने पर conversion speed घटकर 6 मिनट से कम हो गई
- 1 second की range के लिए संभावित pairs लगभग 500 लाख करोड़ हैं
- GPU optimization के बाद RTX 3090 पर प्रति second 1.5 अरब encryption operations संभव हुए
VMWare file types और recovery strategy
FLAT-VMDK
- VMDK के पहले 8 bytes bootloader से रिकवर किए जा सकते हैं
- VMX file से OS जानकारी देखकर वही OS इंस्टॉल करना जरूरी है
SESPARSE
- QEMU source code में file header pattern की पुष्टि की गई
- header
0x00000000cafebabe से शुरू होता है
अन्य फाइलें
- NVRAM file, VMX file, log file आदि से शुरुआती timestamps की पुष्टि की जा सकती है
timestamp रिकवरी
ESXi logs
- ESXi logs में millisecond स्तर का execution time रिकॉर्ड होता है
- अगर millisecond logs न हों, तो second स्तर के समय से अनुमान लगाया जा सकता है
file system modification time
- ESXi में second स्तर की resolution होने के कारण सटीक समय का अनुमान कठिन है
multi-thread encryption
- file encryption CPU core की संख्या के बराबर parallel में चलता है
- file modification time encryption completion time के अधिक करीब होता है
bruteforce tool implementation
KCipher2 algorithm
- standard KCipher2 नहीं, बल्कि modified version इस्तेमाल किया गया है (जिसमें Endian handling शामिल है)
- CUDA का उपयोग करके GPU optimization किया गया
performance improvements
- shared memory का उपयोग कर performance बेहतर की गई
- memory copy हटाकर speed बढ़ाई गई
- parallel file processing लागू किया गया → प्रति second लगभग 1.5 अरब operations संभव
RTX 3090 vs RTX 4090
- RTX 4090 लगभग 2.3 गुना तेज है → लगभग 7 दिन लगते हैं
- RTX 3090 → लगभग 16 दिन
रिकवरी चरण
1. timestamp extraction
stat command से modification time जांचें
- ESXi logs से execution start time निकालें
2. encrypted data extraction
- VMDK, SESPARSE आदि से encrypted blocks निकालें
3. server speed measurement
- GitHub के
timing-patch tool का उपयोग करें
4. task splitting
- configuration file बनाएं और उसे split करें
- GPU पर parallel execution के लिए सेट करें
5. GPU किराए पर लेना और चलाना
- Runpod → 7 दिनों के लिए लगभग 116 डॉलर खर्च
- Vast.ai → अधिक सस्ता, लेकिन machine condition के अनुसार speed में अंतर हो सकता है
6. KCipher2 bruteforce चलाना
./akira-bruteforce run2 config.json
7. Chacha8 bruteforce चलाना
- बड़े files के लिए इसकी जरूरत पड़ती है
8. decryption चलाना
./decrypt filename.vmdk <t1> <t2> <t3> <t4>
performance results
- RTX 3090 → प्रति second 1.5 अरब operations
- RTX 4090 → प्रति second 3.5 अरब operations
- 16 RTX 4090 इस्तेमाल करने पर → 10 घंटे के भीतर रिकवरी संभव
रिकवरी की संभावना और सीमाएँ
- ransomware रिकवरी की सफलता की संभावना 0.1% से कम है
- कुछ विशेष शर्तें पूरी होने पर रिकवरी संभव है
- ransomware variant के अनुसार encryption method बदल सकती है
निष्कर्ष
- ransomware रिकवरी बेहद कठिन है, लेकिन कुछ खास परिस्थितियों में सफलता संभव है
- GPU आधारित bruteforce इसका मुख्य tool है
- लेखक ने recovery code को open source के रूप में जारी किया है, लेकिन अतिरिक्त सहायता देना मुश्किल है
अतिरिक्त संदर्भ
- GitHub की
README.md file देखें
- code किसी खास client की स्थिति के अनुसार लिखा गया है → यह general-purpose tool नहीं है
- configuration file बनाना, timing adjustment आदि के लिए system administrator स्तर की technical skill चाहिए
1 टिप्पणियां
Hacker News राय
किसी ने ransomware की "सीमित आयु" का उल्लेख किया था। इस वजह से दूसरे पीड़ितों पर इसका असर नहीं होगा, ऐसी राय को हटाया गया, लेकिन उसका जवाब पोस्ट किया गया
timestamp का इस्तेमाल क्यों किया जाता है, इस पर सवाल था
यह लेख पढ़ने में अच्छा था और इसमें प्रक्रिया को लेकर जिज्ञासा शांत करने लायक सही मात्रा में विवरण था
अगर applications डिफ़ॉल्ट रूप से sandboxed हों, तो ransomware की समस्या कम हो जाएगी
"मैंने अपने mini PC CPU पर प्रति सेकंड 100,000 timestamps को random bytes के साथ calculate करने की गति का अनुमान लगाया (सभी cores का उपयोग करते हुए)"
पहले 65k को KCipher2 से encrypt करके बाकी को किसी और चीज़ से encrypt करने की वजह क्या है, यह जानना चाहता हूँ। यह अजीब लगता है
"मुझे उम्मीद है कि इसे पोस्ट करने के बाद हमलावर encryption को फिर बदल देंगे"
"जब भी मैं अपने Indonesian blog पर ransomware के बारे में लिखता हूँ, बहुत से लोग ransomware मदद माँगते हैं"