
BitCracker BitLocker से एन्क्रिप्टेड मेमोरी इकाइयों के लिए पहला ओपन सोर्स पासवर्ड क्रैकिंग टूल है।
BitCracker पहला ओपन सोर्स पासवर्ड क्रैकिंग टूल है जो BitLocker से एन्क्रिप्टेड स्टोरेज डिवाइसों (हार्ड डिस्क, USB पेनड्राइव, SD कार्ड, आदि) के लिए है। BitLocker Windows Vista, 7, 8.1 और 10 (Ultimate, Pro और Enterprise संस्करण) पर उपलब्ध एक एन्क्रिप्शन सुविधा है। BitLocker किसी स्टोरेज डिवाइस को एन्क्रिप्ट करने के लिए कई अलग-अलग प्रमाणीकरण विधियाँ प्रदान करता है, जैसे Trusted Platform Module (TPM), स्मार्ट कार्ड, रिकवरी पासवर्ड, उपयोगकर्ता द्वारा प्रदान किया गया पासवर्ड।
डिक्शनरी अटैक के माध्यम से, BitCracker एन्क्रिप्टेड स्टोरेज डिवाइस को डिक्रिप्ट करने के लिए सही उपयोगकर्ता पासवर्ड या रिकवरी पासवर्ड खोजने का प्रयास करता है। इसे CUDA और OpenCL में लागू किया गया है।
कई जर्नल ने हमारे BitCracker पेपर के प्रकाशन में देरी की (लगभग 3 साल, कई संशोधनों के बाद अंतिम अस्वीकृति), जो हमारे हमले के विवरण, BitLocker Drive Encryption (BDE) वॉल्यूम प्रारूप और एन्क्रिप्शन/डिक्रिप्शन प्रक्रिया में संभावित कमजोरियों की व्याख्या करता है। अंततः, हमने पेपर यहाँ प्रकाशित किया: https://arxiv.org/abs/1901.01337 । कृपया टिप्पणी करने और साझा करने के लिए स्वतंत्र महसूस करें।
BitCracker-CUDA चलाने के लिए न्यूनतम आवश्यकताएँ हैं:
BitCracker-OpenCL चलाने के लिए न्यूनतम आवश्यकता कोई भी GPU या CPU है जो OpenCL का समर्थन करता है (आप यहाँ कुछ सहायता पा सकते हैं)।
BitCracker को कम से कम 260 MB डिवाइस मेमोरी की आवश्यकता है।
हम दृढ़ता से अनुशंसा करते हैं कि प्रदर्शन कारणों से अपना हमला CPU के बजाय GPU पर चलाएँ (अनुभाग प्रदर्शन देखें)।
build.sh स्क्रिप्ट चलाने से build निर्देशिका के अंदर 4 निष्पादन योग्य फ़ाइलें उत्पन्न होती हैं: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl।
अपने NVIDIA GPU और CUDA संस्करण के अनुरूप bitcracker_cuda बनाने के लिए, आपको सही SM संस्करण चुनकर src_CUDA/Makefile को संशोधित करना होगा। संदर्भ के लिए, आप निम्न तालिका का उपयोग कर सकते हैं:
| GPU आर्किटेक्चर | सुझाया गया CUDA | Makefile |
|---|---|---|
| Kepler | CUDA 7.5 | arch=compute_35,code=sm_35 |
| Maxwell | CUDA 8.0 | arch=compute_52,code=sm_52 |
| Pascal | CUDA 9.0 | arch=compute_60,code=sm_60 |
| Volta | CUDA 9.0 | arch=compute_70,code=sm_70 |
आपको अपने BitLocker-एन्क्रिप्टेड स्टोरेज डिवाइस की इमेज बनानी होगी, उदाहरण के लिए, dd कमांड का उपयोग करके:
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)
फिर आपको अपने imageEncrypted.img पर bitcracker_hash निष्पादन योग्य चलाना होगा:
यदि निष्पादन सही ढंग से पूरा होता है, तो bitcracker_hash 1 या 2 आउटपुट फ़ाइलें उत्पन्न करता है:
BDE एन्क्रिप्टेड वॉल्यूम में विभिन्न प्रमाणीकरण विधियों के लिए अलग-अलग प्रारूप हो सकते हैं। यदि bitcracker_hash आपकी एन्क्रिप्टेड इमेज पर रिकवरी पासवर्ड खोजने में असमर्थ है, तो कृपया एक मुद्दा खोलें या मुझसे संपर्क करें
एक उदाहरण:
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7
---------> BitCracker Hash Extractor <---------
Opening file ./Images/imgWin7
....
Signature found at 0x02208000
Version: 2 (Windows 7 or later)
VMK entry found at 0x022080bc
VMK encrypted with user password found!
VMK encrypted with AES-CCM
VMK entry found at 0x0220819c
VMK encrypted with Recovery key found!
VMK encrypted with AES-CCM
User Password hash:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2
Recovery Key hash:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688
Output file for user password attack: "hash_user_pass.txt"
Output file for recovery password attack: "hash_recv_pass.txt"
आप इस प्रकार के हमले का उपयोग कर सकते हैं यदि स्टोरेज डिवाइस को उपयोगकर्ता द्वारा प्रदान किए गए पासवर्ड से एन्क्रिप्ट किया गया है, जैसा कि निम्नलिखित चित्र में दिखाया गया है।
BitCracker एक डिक्शनरी हमला करता है, इसलिए आपको संभावित उपयोगकर्ता पासवर्ड की एक वर्डलिस्ट प्रदान करनी होगी।
हमला शुरू करने के लिए आपको चाहिए:
hash_user_pass.txt फ़ाइलएक कमांड लाइन उदाहरण:
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
जहाँ:
-f : hash_user_pass.txt फ़ाइल का पथ-d : आपकी वर्डलिस्ट का पथ-t : प्रत्येक CUDA थ्रेड द्वारा संसाधित किए जाने वाले पासवर्डों की संख्या-b : CUDA ब्लॉकों की संख्या-g : NVIDIA GPU डिवाइस ID-u : निर्दिष्ट करता है कि आप उपयोगकर्ता पासवर्ड हमला चाहते हैंसभी उपलब्ध विकल्पों के लिए, टाइप करें ./build/bitcracker_cuda -h।
सर्वोत्तम प्रदर्शन के लिए, कृपया प्रदर्शन अनुभाग में तालिका देखें ताकि अपने NVIDIA GPU के अनुसार t और b विकल्पों को ठीक से सेट कर सकें।
bitcracker_opencl निष्पादन योग्य के लिए भी यही बातें लागू होती हैं।
एक आउटपुट उदाहरण:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
....
Reading hash file "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663
====================================
Attack
====================================
Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Stream 0
Effective number psw: 12
Passwords Range:
abcdefshhf
.....
blablalbalbalbla12
Time: 28.651947 sec
Passwords x second: 0.42 pw/sec
================================================
....
Password found: paperino
================================================
वर्तमान में BitCracker 8 से 55 वर्णों के बीच लंबाई वाले इनपुट पासवर्ड को संसाधित करने में सक्षम है।
किसी स्टोरेज डिवाइस के एन्क्रिप्शन के दौरान (प्रमाणीकरण विधि की परवाह किए बिना), BitLocker उपयोगकर्ता से कहीं एक रिकवरी पासवर्ड संग्रहीत करने के लिए कहता है जिसका उपयोग एन्क्रिप्टेड स्टोरेज डिवाइस तक पहुंच बहाल करने के लिए किया जा सकता है यदि वह/वह सामान्य रूप से ड्राइव को अनलॉक नहीं कर सकता/सकती है। इस प्रकार रिकवरी पासवर्ड सभी प्रमाणीकरण विधियों के लिए एक प्रकार का पास-पार्टआउट है और इसमें इस तरह की 48-अंकीय कुंजी होती है:
236808-089419-192665-495704-618299-073414-538373-542366
अधिक जानकारी के लिए Microsoft docs देखें।