
पहला डिक्रिप्टर द जेंटलमेन रैनसमवेयर के लिए — प्रक्रिया मेमोरी डंप से एन्क्रिप्शन कुंजियाँ पुनर्प्राप्त करता है X25519 एफीमेरल कुंजी निष्कर्षण का उपयोग करके। 35/35 फ़ाइलें डिक्रिप्ट की गईं। शोध बेडरॉक सेफगार्ड इंक द्वारा।
द जेंटलमेन रैंसमवेयर के लिए पहली सार्वजनिक रूप से उपलब्ध डिक्रिप्शन विधि।
द जेंटलमेन (जिसे हस्तालामुएर्ते के नाम से भी जाना जाता है) वर्तमान में वैश्विक स्तर पर सबसे सक्रिय रैंसमवेयर-एज़-ए-सर्विस (RaaS) ऑपरेशन है, जिसमें Q1 2026 तक 320+ पुष्ट पीड़ित हैं। अब तक, हर प्रमुख सुरक्षा विक्रेता — Cybereason, Group-IB, Check Point, ASEC, Trend Micro — ने एन्क्रिप्शन को क्रिप्टोग्राफिक रूप से अटूट बताया था। कोई सार्वजनिक डिक्रिप्टर मौजूद नहीं था।
हमने इसे तोड़ दिया।
द जेंटलमेन XChaCha20 स्ट्रीम एन्क्रिप्शन का उपयोग X25519 ECDH कुंजी विनिमय के साथ करता है। प्रत्येक फ़ाइल को एक ताज़ा एफीमेरल कुंजी जोड़ी से प्राप्त एक अद्वितीय कुंजी से एन्क्रिप्ट किया जाता है। एन्क्रिप्शन गणितीय रूप से सही है — हमने गणित को नहीं तोड़ा।
हमने कार्यान्वयन को तोड़ा।
Go उपयोग के बाद हीप पर क्रिप्टोग्राफ़िक कुंजी सामग्री को शून्य नहीं करता (CWE-244)। एक बार किसी फ़ाइल के लिए एफीमेरल X25519 निजी कुंजी उत्पन्न हो जाने के बाद, यह मिटाए जाने के बजाय प्रक्रिया मेमोरी में रहती है — इसलिए लाइव प्रक्रिया का डंप पहले से एन्क्रिप्ट की गई फ़ाइलों की कुंजियों को पुनर्प्राप्त करता है, अक्सर कई GC-शेष प्रतियों में। प्रक्रिया समाप्त होने पर OS इस मेमोरी को पुनः प्राप्त कर लेता है।
एन्क्रिप्शन के दौरान या अंत के निकट लिए गए लाइव प्रक्रिया के मेमोरी डंप में आमतौर पर उस बिंदु तक संसाधित प्रत्येक फ़ाइल के एफीमेरल कुंजियाँ होती हैं — हमारे 35-फ़ाइल विश्लेषण में, वे सभी थीं।
परिणाम: 35/35 फ़ाइलें 100% सटीकता के साथ डिक्रिप्ट की गईं। सभी 35 कुंजियाँ एक ही मेमोरी डंप से 0.6 सेकंड में पुनर्प्राप्त की गईं।
यदि आप द जेंटलमेन रैंसमवेयर से प्रभावित हुए हैं, तो आप फ़ाइलों को पुनर्प्राप्त करने में सक्षम हो सकते हैं यदि रैंसमवेयर प्रक्रिया का एक मेमोरी इमेज तब कैप्चर किया गया था जब वह चल रही थी। पुनर्प्राप्ति उस इमेज से प्रति-फ़ाइल एफीमेरल निजी कुंजियाँ निकालकर काम करती है, इसलिए यह सर्वोत्तम प्रयास है और आंशिक हो सकता है — केवल वे फ़ाइलें जिनकी कुंजी पहले ही उत्पन्न हो चुकी थी और कैप्चर के समय अभी भी मौजूद थी, पुनर्प्राप्त की जा सकती हैं।
व्यवहार में इसका क्या अर्थ है:
एक उपयोगी मेमोरी इमेज कहाँ मौजूद हो सकता है — प्रत्येक केवल तभी मदद करता है यदि उसने प्रक्रिया को चलते समय कैप्चर किया हो:
procdump, टास्क मैनेजर → "Create dump file", या किसी अन्य फोरेंसिक टूल का उपयोग किया।C:\ProgramData\Microsoft\Windows\WER\ में मौजूद हो सकता है।C:\Windows\Minidump\ और C:\Windows\MEMORY.DMP, यदि प्रक्रिया चलने के दौरान बगचेक हुआ (केवल पूर्ण मेमोरी डंप में प्रक्रिया मेमोरी शामिल होती है; मिनीडंप में आमतौर पर नहीं होती)।C:\hiberfil.sys, यदि सिस्टम रैंसमवेयर प्रक्रिया सक्रिय होने के दौरान हाइबरनेट हुआ (यह उस क्षण एक RAM स्नैपशॉट को फ्रीज़ करता है)।निश्चित नहीं हैं कि आपकी घटना के लिए इनमें से कोई मौजूद है? हमसे [email protected] पर संपर्क करें और हम आपको जाँचने में मदद कर सकते हैं।
# 1. Install dependencies
pip install cryptography
# 2. Extract ephemeral public keys from your encrypted files
python extract_keys_from_files.py --input-dir /path/to/encrypted/files --output keys.json
# 3. Search the memory dump for matching private keys
python recover_keys.py --dump process_memory.dmp --pubkeys keys.json --output recovered_keys.json
# 4. Decrypt your files
python decrypt.py --keys recovered_keys.json --input-dir /path/to/encrypted/files --output-dir /path/to/recovered
--fast / --superfast / --ultrafast)द जेंटलमेन लॉकर स्पीड फ़्लैग का समर्थन करता है जो 1 MB से बड़ी फ़ाइलों पर आंशिक एन्क्रिप्शन करते हैं। --superfast के तहत, एक बड़ी फ़ाइल में केवल ~3% बाइट्स एन्क्रिप्ट किए जाते हैं; शेष ~97% मूल डिस्क स्थिति पर प्लेनटेक्स्ट के रूप में छोड़ दिया जाता है। यह प्रकाशित RE (ASEC, Trend Micro, Cybereason) में सत्यापित है।
आंशिक-एन्क्रिप्शन फ़ाइल पर पूर्ण-शरीर XChaCha20 डिक्रिप्शन अनएन्क्रिप्टेड क्षेत्रों को दोगुना दूषित करेगा — प्लेनटेक्स्ट खंडों पर कीस्ट्रीम XOR करने से वे कचरा बन जाते हैं और पुनर्प्राप्त करने योग्य डेटा नष्ट हो जाता है।
इस कारण से, decrypt.py डिफ़ॉल्ट रूप से 1 MB से बड़ी फ़ाइलों को संसाधित करने से इनकार करता है। यदि आपने सत्यापित किया है कि लॉकर पूर्ण-एन्क्रिप्शन मोड में चला (केवल छोटी फ़ाइलें, या स्पीड फ़्लैग के बिना बिल्ड), तो ओवरराइड करने के लिए --force-large पास करें।
आंशिक-एन्क्रिप्शन पीड़ितों के लिए, इसके बजाय अनएन्क्रिप्टेड क्षेत्रों पर प्रारूप-जागरूक पुनर्प्राप्ति उपकरण का उपयोग करें:
Bedrock Safeguard सक्रिय रूप से आंशिक-एन्क्रिप्शन मोड की चंक-ऑफ़सेट ज्यामिति का रिवर्स-इंजीनियरिंग कर रहा है। जब वह कार्य पूरा हो जाएगा, तो इस डिक्रिप्टर को आंशिक रूप से एन्क्रिप्टेड सेगमेंट को सुरक्षित रूप से संभालने के लिए अपडेट किया जाएगा।
Per-file encryption:
1. Generate 32 random bytes -> ephemeral private key (crypto/rand.Read)
2. X25519(ephemeral_priv, operator_pub) -> shared_secret (32 bytes)
3. XChaCha20(plaintext, shared_secret) -> ciphertext
4. Append to file: --eph--<base64(ephemeral_PUBLIC_key)>--marker--GENTLEMEN
एफीमेरल निजी कुंजी महत्वपूर्ण गुप्त है। यह केवल प्रक्रिया मेमोरी में मौजूद होती है और कभी डिस्क पर नहीं लिखी जाती। लेकिन Go का goroutine स्टैक आवंटक चर दायरे से बाहर जाने पर मेमोरी को शून्य नहीं करता (CWE-244), जिससे कुंजी सामग्री मेमोरी फोरेंसिक के माध्यम से सुलभ रहती है।
| ID | Description |
|---|---|
| CWE-244 | रिलीज़ से पहले हीप मेमोरी का अनुचित सफ़ाई |
| CWE-316 | मेमोरी में संवेदनशील जानकारी का स्पष्ट पाठ भंडारण |
public = X25519(candidate, basepoint) की गणना करेंshared_secret = X25519(ephemeral_private, operator_public)