
NT हैश के डेटाबेस का उपयोग करके MSCHAPv2 चैलेंज/रेस्पॉन्स को जल्दी क्रैक करें
MSCHAPv2/NTLMv1 चैलेंज/प्रतिक्रियाओं को NT हैश के डेटाबेस का उपयोग करके तेज़ी से क्रैक करें
Assless CHAPs एक कुशल तरीका है जो MSCHAPv2/NTLMv1 एक्सचेंज में उपयोग किए गए NT हैश को पुनर्प्राप्त करने के लिए है, यदि आपके पास चैलेंज और प्रतिक्रिया है (जैसे WiFi EAP WPE हमले से)।
इसके लिए NT हैश के डेटाबेस की आवश्यकता है। मौजूदा सूचियों से या हैशकैट और वर्डलिस्ट/नियमों का उपयोग करके इसे बनाने के निर्देश नीचे दिए गए हैं। मैंने SecLists से एक नमूना डेटाबेस शामिल किया है। इसे अनज़िप करने के लिए आपको bunzip की आवश्यकता होगी।
MSCHAPv2 एक्सचेंज में स्पष्ट-पाठ पासवर्ड को "क्रैक" करने की आवश्यकता नहीं है, बल्कि हमें केवल उपयोग किए गए NThash की आवश्यकता है।
MSCHAPv2 NThash को तीन भागों में विभाजित करता है, और प्रत्येक भाग को समान चैलेंज (पीयर और प्रमाणक चैलेंज से प्राप्त) को DES एन्क्रिप्ट करने के लिए अलग-अलग कुंजियों के रूप में उपयोग करता है। NTHash दो 7-बाइट कुंजियों और एक 2-बाइट कुंजी में विभाजित होता है। इसका मतलब है कि अंतिम कुंजी को आवश्यक लंबाई की कुंजी बनाने के लिए NULL से पैड किया जाता है। DES ऑपरेशन की दक्षता और 65,535 की कुंजीस्थान के कारण इसे तेज़ी से ब्रूट फोर्स किया जा सकता है। एक बार जब हमारे पास वे दो बाइट होते हैं, तो हम अपने डेटाबेस में उन दो बाइटों के साथ समाप्त होने वाले सभी NThashes को देख सकते हैं। यह जांचने के लिए संभावित हैश का एक बहुत छोटा सेट प्रदान करता है।
यह स्पेस बनाम समय ट्रेडऑफ का एक रूप है, जो रेनबो टेबल के समान है। यह हैश शकिंग का भी एक रूप है।
इसे पहली बार Defcon 29 के RF Hacking Village में प्रस्तुत किया गया था। स्लाइड्स इस रिपॉजिटरी में शामिल हैं।
यहाँ तीन नमूना चैलेंज/प्रतिक्रिया और तीन अलग-अलग वर्डलिस्ट (एक छोटी निजी, rockyou, और Have I Been Pwned सूची) के लिए तुलना दी गई है। ये मेरे Macbook Pro 2016 पर किए गए थे। हैशकैट इस हैश शकिंग कर्नेल और दो बिल्ट-इन GPUs का उपयोग कर रहा है, और एक शुद्ध (pure) बनाम ऑप्टिमाइज़्ड कर्नेल (क्योंकि बाद वाला अभी मौजूद नहीं है)। Hash3 सूचियों में नहीं है ताकि सबसे खराब स्थिति का अनुकरण किया जा सके। मैं पहली बार चलाने पर हैशकैट द्वारा डिक्शनरी कैश बनाने में लगने वाले समय को शामिल नहीं कर रहा हूँ।
Hash1
छोटी हैशलिस्ट:
hashcat 0.50s user 0.27s system 55% cpu 1.405 total (8597.8 kH/s)
assless 0.05s user 0.00s system 294% cpu 0.018 total
Rockyou हैशलिस्ट:
hashcat 2.67s user 0.51s system 93% cpu 3.413 total
assless 0.05s user 0.01s system 281% cpu 0.021 total
HIBP हैशलिस्ट:
hashcat 59.97s user 11.72s system 136% cpu 52.603 total (5620.6 kH/s)
assless 0.05s user 0.00s system 292% cpu 0.018 total
Hash 2
छोटी हैशलिस्ट:
hashcat 0.51s user 0.27s system 55% cpu 1.409 total (8704.7 kH/s)
assless 0.03s user 0.00s system 248% cpu 0.012 total
Rockyou हैशलिस्ट:
hashcat 2.20s user 0.46s system 110% cpu 2.409 total (5798.4 kH/s)
assless 0.03s user 0.00s system 231% cpu 0.015 total
HIBP हैशलिस्ट:
hashcat 65.37s user 12.74s system 135% cpu 57.712 total (5768.7 kH/s)
assless 0.03s user 0.00s system 249% cpu 0.013 total
Hash 3
Hash 3 किसी भी हैशलिस्ट में मौजूद नहीं है ताकि सबसे खराब लुकअप प्रदर्शन का अनुकरण किया जा सके।
छोटी हैशलिस्ट:
hashcat 0.67s user 0.34s system 66% cpu 1.526 total (7550.1 kH/s)
assless 0.02s user 0.00s system 211% cpu 0.012 total
Rockyou हैशलिस्ट:
hashcat 2.71s user 0.52s system 94% cpu 3.415 total (5685.4 kH/s)
assless 0.02s user 0.01s system 181% cpu 0.014 total
HIBP हैशलिस्ट:
hashcat 125.19s user 27.62s system 139% cpu 1:49.75 total (5634.9 kH/s)
assless 0.06s user 0.03s system 115% cpu 0.075 total
Rust संस्करण के लिए SQLite 3.6.8 या नए की आवश्यकता होगी।
Python संस्करण के लिए python3, sqlite3 और pycryptodome की आवश्यकता है।
डेटाबेस निर्माण उपयोगिता के लिए python3 और sqlite3 CLI की आवश्यकता है।
यह केवल Rust संस्करण पर लागू होता है। आपको cargo की आवश्यकता होगी।
Cargo इंस्टॉल होने पर, बस assless-chaps-rs निर्देशिका में जाएँ और इसे इसके साथ बनाएँ:
cargo build --release
परिणामी बाइनरी target/release/ निर्देशिका में होगी।
Assless को चैलेंज, प्रतिक्रिया और NThashes के डेटाबेस की आवश्यकता होती है। वैकल्पिक रूप से, Python संस्करण बंडल किए गए ऑप्टिमाइज़्ड दो-बाइट लुकअप फ़ाइल का उपयोग कर सकता है। सबसे सरल उपयोग इस प्रकार दिखता है:
./assless-chaps <Challenge> <Response> <hashes.db>
उदाहरण के लिए:
./assless-chaps 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db
आउटपुट इस प्रकार दिखना चाहिए:
[-] Two byte lookup file not provided, will brute force instead.
[+] Found in 22636 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c
अंतिम पूर्ण हैश 8846f7eaee8fb117ad06bdd830b7586c password के लिए NT हैश है।
मैंने पासवर्ड के एक बड़े कॉर्पस में सबसे प्रचलित के अनुसार सभी 65,535 संभावित दो-बाइट मानों की एक सूची बनाने में कुछ समय बिताया। यह फ़ाइल twobytes के रूप में शामिल है। आप इसे assless के चौथे तर्क के रूप में पास कर सकते हैं।
यह आमतौर पर DES के कुछ राउंड बचाता है, लेकिन गति में बड़ा अंतर नहीं लाता है। यदि आप कई हैश कर रहे हैं तो यह मददगार हो सकता है।
python3 assless-chaps.py 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db twobytes
[+] Found in 65533 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c
mksqlitedb.py फ़ाइल CSV हैश फ़ाइल को डेटाबेस में बदलने में सहायता करेगी।
python3 mksqlitedb.py <database name> <csv file>
CSV फ़ाइल में तीन कॉलम की आवश्यकता है:
उदाहरण के लिए, हैश 8846f7eaee8fb117ad06bdd830b7586c बन जाएगा:
586c,8846f7eaee8fb1,17ad06bdd830b7
इसके लिए एक उदाहरण regexp रूपांतरण होगा:
echo 8846f7eaee8fb117ad06bdd830b7586c | sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\)$/\3,\1,\2/"
आप मौजूदा हैश सूची (जैसे Have I Been Pwned सूचियाँ) ले सकते हैं या हैशकैट और अपनी पसंदीदा वर्डलिस्ट/नियमों के संयोजन से अपनी खुद की सूची बना सकते हैं।
HIBP पासवर्ड सूचियाँ पहले से ही NT हैश के रूप में डाउनलोड करने योग्य हैं, बस फ़ाइल से काउंट को हटाने और उन्हें डेटाबेस में आयात करने के लिए CSV प्रारूप में बदलने की आवश्यकता है।
यह मानक Unix उपयोगिता sed का उपयोग करके इस प्रकार किया जा सकता है:
sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\):.*/\3,\1,\2/" pwned-passwords-ntlm-ordered-by-hash.txt > hibp.csv
उसके बाद इसे mksqlitedb.py hibp.db hibp.csv का उपयोग करके आयात किया जा सकता है।
एक सीधी वर्डलिस्ट को nthashes की हैशलिस्ट में बदलने के लिए, आप nthasher का उपयोग कर सकते हैं जो बड़ी वर्डलिस्ट को तेज़ी से संसाधित कर सकता है। परिणामी हैश को ऊपर बताए गए आवश्यक CSV प्रारूप में बदलना होगा।
एक बहुत धीमा nthasher जो हैश को सीधे आवश्यक CSV प्रारूप में आउटपुट करेगा, इस रिपॉजिटरी में शामिल है, और इसे बस इसके साथ चलाया जाता है:
python3 nthash-from-clear.py <wordlist> > hashlist.csv
यदि आप वर्डलिस्ट को नियमों के साथ विस्तारित करना चाहते हैं, तो हैशकैट का उपयोग करने पर अगले भाग को देखें।
आपको मोड 1000 OpenCL मॉड्यूल में एक छोटा कोड परिवर्तन करना होगा ताकि यह केवल आपके क्रैक उम्मीदवार से मेल खाने वाले हैश के बजाय प्रत्येक हैश को उगल दे। डिफ़ॉल्ट रूप से, यह आवश्यक CSV प्रारूप में हैश उत्पन्न करेगा।
OpenCL निर्देशिका में बदलें: cd hashcat/OpenCLpatch < m01000_a0-pure.cl.patchecho 11111111111111111111111111111111 > impossible_hashhashcat -m1000 impossible_hash rockyou.txt -r best64.rule --potfile-disable --quiet > rockyou.csvpython3 mksqlitedb.py rockyou.db rockyou.csvSQLite डेटाबेस आमतौर पर इसे बनाने के लिए उपयोग किए जाने वाले CSV फ़ाइल से 61% बड़ा होता है। फ़ाइलों के आकार के आधार पर डेटाबेस बनाने में भी कुछ समय लग सकता है। तदनुसार अपनी फ़ाइल सिस्टम आवश्यकताएँ तैयार करें।
यहाँ rockyou शब्दकोश का उपयोग करने का एक उदाहरण है:
आप प्रत्येक हैश को गतिशील रूप से परिवर्तित और सम्मिलित करके और मध्यवर्ती CSV फ़ाइल की आवश्यकता को छोड़कर स्थान बचा सकते हैं।
NTLMv1 बिल्कुल उसी तरह काम करेगा, जब तक कि यह SSP का उपयोग नहीं कर रहा हो। आपको पता चल जाएगा कि SSP उपयोग में है यदि आपको LM प्रतिक्रिया मिलती है जो शून्य की एक श्रृंखला में समाप्त होती है। आप शामिल ntlm-ssp.py का उपयोग करके सर्वर चैलेंज का उत्पादन कर सकते हैं जिसकी assless को आवश्यकता होगी।
इसे इस प्रकार चलाएँ:
python3 ntlm-ssp.py <lm response> <challenge>
उदाहरण के लिए यदि हम हैशकैट उदाहरण हैश से NTLMv1-SSP चैलेंज प्रतिक्रिया का उपयोग करते हैं:
u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c
आप LM और चैलेंज को इस प्रकार पास करेंगे:
python3 ntlm-ssp.py 338d08f8e26de93300000000000000000000000000000000 cb8086049ec4736c
और निम्नलिखित प्रतिक्रिया प्राप्त करेंगे:
The server challenge is: 724edf24aea0d68b
जिसे फिर assless-chaps के साथ सामान्य रूप से क्रैक किया जा सकता है:
./assless-chaps 724edf24aea0d68b 9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41 hashes.db