
ShuckNT, Shuck.sh ऑनलाइन सेवा का स्क्रिप्ट है जो ऑन-प्रिमाइसेस उपयोग के लिए है। इसे Data Encryption Standard (DES) पर आधारित प्रमाणीकरण टोकन को डाउनग्रेड, कन्वर्ट, डिसेक्ट और शक करने के लिए डिज़ाइन किया गया है।
ShuckNT, Shuck.sh ऑनलाइन सेवा की ऑन-प्रिमाइसेस उपयोग के लिए स्क्रिप्ट है (इसे ऑनलाइन आज़माएँ!)। यह Data Encryption Standard (DES) पर आधारित प्रमाणीकरण टोकन को डाउनग्रेड, रूपांतरित, विच्छेदित और शक करने के लिए डिज़ाइन किया गया है।
समर्थित एल्गोरिदम / प्रारूप:
$99$ShuckNT चैलेंज-रिस्पॉन्स क्रैकिंग और शोषण क्षमता को अनुकूलित करने के लिए hash shucking सिद्धांत पर निर्भर करता है।
पासवर्ड शकिंग एक अद्यतन पासवर्ड हैश से परतें हटाने की एक विधि है, जो उसके नए पासवर्ड हैशिंग एल्गोरिदम के लाभों को हटा देती है और उसे उसके कमजोर एल्गोरिदम में वापस ले जाती है। पासवर्ड शकिंग का उपयोग हमलावर पुराने रीहैश किए गए पासवर्ड या प्री-हैश पासवर्ड के खिलाफ कर सकता है, जिससे वे मजबूत बाहरी पासवर्ड हैशिंग एल्गोरिदम को हटा सकते हैं या "शक" कर सकते हैं।
इनपुट टोकन की सूची से, ShuckNT प्रदान करता है:
Shuck.sh की स्क्रिप्ट ShuckNT के पीछे केवल एक कुशल और अनुकूलित बाइनरी-खोज है, जो कस्टम-रिवर्स्ड-बाइनरी HIBP डेटाबेस में NT-हैश उम्मीदवारों के एक उपसमुच्चय से DES-कुंजियों के टकरावों के लिए होती है, जिनके अंतिम दो बाइट ज्ञात होते हैं।
सुरक्षा मूल्यांकन (समय में सीमित) के दौरान, यदि आप Responder जैसे टूल के माध्यम से ~100 NetNTLMv1 कैप्चर करते हैं (ESS के साथ या बिना), तो संबंधित NT-हैश की खोज (यदि HIBP पर लीक हुई है) Shuck.sh/ShuckNT के माध्यम से केवल कुछ सेकंड लेती है (~10s)।
Shuck.sh की स्क्रिप्ट ShuckNT क्रिप्टोग्राफ़िक एल्गोरिदम को एक कमजोर रूप में परिवर्तित करके सरलीकरण का ध्यान रखती है (यदि संभव हो तो ESS के बिना, Crack.Sh के लिए मुफ्त प्रारूप में या सीधे NT-हैश प्रारूप में यदि HIBP पर लीक हुआ है)। इस प्रकार एक NetNTLMv1-ESS/SSP, PPTP VPN या MSCHAPv2 चैलेंज (Crack.Sh पर गैर-मुफ्त और समय लेने वाला) संभावित रूप से तुरंत मुफ्त में शक किया जा सकता है!
Shuck.sh/ShuckNT का प्रारंभिक विचार ग्राहकों के लिए सुरक्षा मूल्यांकन के दौरान समय बचाने की इच्छा से पैदा हुआ था, जिसकी उपलब्धता आवश्यक रूप से निरंतर नहीं होती ऐसी किसी तृतीय-पक्ष ऑनलाइन सेवा पर निर्भर न रहना और स्थानीय रूप से स्वायत्त होने में सक्षम होना।
स्थापना प्रक्रिया में निम्नलिखित शामिल हैं:
स्थापना कमांड:
# Install dependencies
apt install p7zip-full php git
# Get ShuckNT tool
git clone https://github.com/yanncam/ShuckNT
cd ShuckNT
# Prepare HaveIBeenPwned database (one time only, takes several minutes)
## Download latest HIBP-DB (can take severals minutes...)
wget https://downloads.pwnedpasswords.com/passwords/pwned-passwords-ntlm-ordered-by-hash-v8.7z
## Extract HIBP-DB (can take severals minutes...)
7z e pwned-passwords-ntlm-ordered-by-hash-v8.7z
## Reverse all hashes (can take severals minutes...)
php shucknt.php -r pwned-passwords-ntlm-ordered-by-hash-v8.txt -t pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
## Sort all reversed-hashes (can take severals minutes...)
sort pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed -o pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
## Convert to binary format (can take severals minutes...)
php shucknt.php -b pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted -t pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
## Free space to keep only pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.7z
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
rm -f pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
# Enjoy ShuckNT via commandline, or web http://[HOST]/shucknt.php
php shucknt.php -h
ShuckNT द्वारा अपेक्षित प्रारूप में डेटाबेस का निर्माण Unix/Linux सिस्टम पर किया जाना है।
मान्य डेटाबेस के साथ ShuckNT का उपयोग Windows/Linux पर PHP7/8+ के साथ परीक्षण किया गया है।
कृपया ध्यान दें कि ShuckNT DES-ECB एल्गोरिदम के साथ PHP-OpenSSL एक्सटेंशन का उपयोग करता है। इसलिए OpenSSL3 वाले आधुनिक PHP संस्करण के लिए, legacy provider सक्षम करें।
प्रत्येक चरण के लिए चेकसम:
$ sha1sum pwned-passwords-ntlm-*
225a993a908e3d73ffa68859c4f128e17359358e pwned-passwords-ntlm-ordered-by-hash-v8.7z
4b6c4728c21f64d6a58c7b63d98dcf342c068407 pwned-passwords-ntlm-ordered-by-hash-v8.txt
88094c4a332ecfac9a15c23ba886194d1810b0b2 pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
d5486dfbf960f36ff0e1cf313a1b80db5cd4137f pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
31a5c1b605cca5bcf71196c70f291c05aa3fe86c pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
$ sha256sum pwned-passwords-ntlm-*
ea83d536387e6b149f2e362bf7dfbf521523812611359f47620fd44dae9770ee pwned-passwords-ntlm-ordered-by-hash-v8.7z
916cfd1772d24f2fe99aa5f37d4a465359c7b6f7d39f45ffbf27deca697b7116 pwned-passwords-ntlm-ordered-by-hash-v8.txt
76f9e101801dfc44489cad4edec5f14d634c2b4676bb9ffbc7e9968c9a5356a5 pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
6ee13a35ed88e8073be088a20560cb9fefcc6d08e599241244eaee01dc053a44 pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted
ac2f6bf681fbe636b94f3ce3f2b594ef3d0af7671375478db1153874e8a5d873 pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
ShuckNT बिना किसी निर्भरता के एक स्टैंडअलोन-PHP स्क्रिप्ट है। इसका उपयोग CLI कमांड-लाइन या वेब-ब्राउज़र के माध्यम से किया जा सकता है।
सहायता, तर्क और सिंटैक्स:
$ php shucknt.php -h
__ _ _ __ _____
/ _\ |__ _ _ ___| | __ /\ \ \/__ \
\ \| '_ \| | | |/ __| |/ // \/ / / /\/
_\ \ | | | |_| | (__| </ /\ / / /
\__/_| |_|\__,_|\___|_|\_\_\ \/ \/ v1.0
DES-based authentication token shucker (https://shuck.sh)
@author : ycam | @asafety.fr / @yann.cam
ShuckNT is design to dowgrade, convert, dissect and shuck authentication token based on Data Encryption Standard (DES).
Algorithms / formats supported :
- NetNTLMv1(-ESS/SSP)
- MSCHAPv2
- NET(NT)LM
- (LM|NT)HASH
- PPTP-VPN $99$
- All with any challenge value!
ShuckNT rely on "hash shucking" principle to optimize challenge-response cracking and exploitability.
From a list of input tokens, ShuckNT provides :
- The NT-hash instantly (pass-the-hash ready) through a smart-research in the HaveIBeenPwned latest database (if present);
- The Crack.Sh ready-to-use optimized token, to pay less or nothing if NT-hash not found in HIBP-DB;
- Several converted formats to try to crack them via other tools (hashcat, jtr, CloudCracker, etc.) :
- Hashcat mode 5500 : to crack NetNTLMv1 to plaintext (unpredictable result, depend on wordlists, masks, rules...);
- Hashcat mode 27000: to shuck NetNTLMv1 to NT-hash (unpredictable result / depend on NT-wordlists...);
- Hashcat mode 14000: to shuck NetNTLMv1 to DES-keys then NT-hash (100% result / time needed);
- All the details of the dissection of the challenge-response (PT1/2/3, K1/2/3, CT1/2/3, HIBP occurences/candidates, LMresp, NTresp, challenges, etc.).
Use '-h' to print help.
usage: php shucknt.php [-h] [-f tokens.txt] [-i 'tokenValue'] [-w wordlist.bin] [-o json|stdout|web] [-v]
[-r input_wordlist.txt] [-b input_wordlist_reversed_sorted.txt] [-r output_wordlist] [-j]
Arguments details:
-h Print this help
-f tokens.txt Input tokens file, one per line.
-i 'tokenValue' Inline input token from stdin.
-w wordlist.bin Specific binary-reversed-sorted-wordlist to use.
-o json|stdout|web Commandline output in json, stdout or web format.
-v Verbosity for stdout output format only.
-r input_wordlist.txt Input wordlist file to be reversed.
-b input_wordlist.txt Input reversed-sorted-wordlist file to be binarized.
-r output_wordlist Output file for reversal or binarization.
-j Do not display header (for json output).
These are common ShuckNT commands used in various situations:
# Shuck tokens from an input file to stdout with verbosity:
php shucknt.php -f tokens.txt -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin -v
# Shuck token from stdin to json output:
php shucknt.php -i '$99$1a7F1qr2HihoXfs/56u5XMdpDZ83N6hW/HI=' -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin -o json -j
# Shuck token from stdin to light stdout (use default wordlist defined as constant in script):
php shucknt.php -i 'ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788'
# Reverse HIBPDB to output file:
php shucknt.php -r pwned-passwords-ntlm-ordered-by-hash-v8.txt -t pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed
# Binarize HIBPDB already reversed and sorted to output file:
php shucknt.php -b pwned-passwords-ntlm-ordered-by-hash-v8.txt-reversed-sorted -t pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
स्टडिन से (डिफ़ॉल्ट HIBP-DB के साथ) और वर्बोज़ आउटपुट के साथ, इसके संगत NT-हैश के लिए एक प्रमाणीकरण टोकन NetNTLMv1 ESS/SSP के साथ को तुरंत शक करें:
$ php shucknt.php -i 'ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788' -v
[...]
1 hashes-challenges analyzed in 0 seconds, with 1 NT-Hash instantly broken for pass-the-hash and 0 that can be broken via crack.sh for free.
[INPUT] ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788
[USERNAME] ycam
[DOMAIN] ad
[LMRESP] DEADC0DEDEADC0DE00000000000000000000000000000000
[NTRESP] 70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED
[CT1] 70C249F75FB6D2C0
[CT2] AC2C2D3808386CCA
[CT3] B1514A2095C582ED
[ESS] YES
[CLIENTCHALL] 1122334455667788
[SERVERCHALL] DEADC0DEDEADC0DE
[CHALLENGE] C85086419358F950
[NTHASH-SHUCKED] 93B3C62269D55DB9CA660BBB91E2BD0B
[HIBP-CANDIDATES] 12778
[HIBP-OCCURENCE] 15
[PT1] 93B3C62269D55D
[PT2] B9CA660BBB91E2
[PT3] BD0B
[K1] 93D9F1C5274F55BB
[K2] B9E599C1BBDD47C5
[K3] BD85C10101010101
[CRACK.SH-TOKEN] $NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED (20-300$)
[FORMAT-NETNTLMV1-NO-ESS] ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950
[FORMAT-MSCHAPV2] $MSCHAPv2$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED$
[FORMAT-NET(NT)LM] $NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED
[FORMAT-PPTP] $99$yFCGQZNY+VBwwkn3X7bSwKwsLTgIOGzKvQs=
एक इनपुट फ़ाइल से (निर्दिष्ट HIBP-DB के साथ) और सरल आउटपुट के साथ, उनके संगत NT-हैश के लिए समर्थित प्रारूपों के कई प्रमाणीकरण टोकन तुरंत शक करें:
$ php shucknt.php -f tokens-samples.txt -w pwned-passwords-ntlm-reversed-ordered-by-hash-v8.bin
[...]
10 hashes-challenges analyzed in 3 seconds, with 8 NT-Hash instantly broken for pass-the-hash and 1 that can be broken via crack.sh for free.
[INPUT] $99$1a7F1qr2HihoXfs/56u5XMdpDZ83N6hW/HI=
[NTHASH-SHUCKED] DE26CCE0356891A4A020E7C4957AFC72
[INPUT] LMHASH:2B56DAEB658F9FE977BD3B61E7976684388EF712DB95C6F8
[NTHASH-SHUCKED] C780C78872A102256E946B3AD238F661
[INPUT] NTHASH:D4ACBAA3CD626E2A074D76C7491D332F8FB8989968E88736
[NTHASH-SHUCKED] C22B315C040AE6E0EFEE3518D830362B
[INPUT] ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788
[NTHASH-SHUCKED] 93B3C62269D55DB9CA660BBB91E2BD0B
[INPUT] $NETNTLM$4803CB182E23B79A$BA4DA703C6A056727CC7B62FFA065970D5D400F18D02C6D1
[NTHASH-SHUCKED] 8E2FDD50C6FB5D0E22E2455394D98D2A
[INPUT] user::domain.tld:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
[NTHASH-SHUCKED] 8846F7EAEE8FB117AD06BDD830B7586C
[INPUT] $MSCHAPv2$1337133713371337$F93A1DB1C044133F52582EFDA5C31667EBBE6F8F2814E539$root
[NTHASH-SHUCKED] 209C6174DA490CAEB422F3FA5A7AE634
[INPUT] $NETLM$FE2CFD84F6C7DEF8$852074A98A9B2AF70D59D449AD0F9B898B4A9455C7B90CE7
[NTHASH-SHUCKED] 0A42BC909E226C6F8FFCBAA6AB0DA43D
[INPUT] $99$ESIzRFVmd4i8671kB52wcm9qK5VdJR7lJKU=
[CRACK.SH-TOKEN] NTHASH:BCEBBD64079DB0726F6A2B955D251EE57D6DD8A109D77A0D (0$)
[INPUT] x::x:FEC7A34F78C17A9700000000000000000000000000000000:E875F0A28BD7729D071D7DF05272B0FB4549AE926FE36255:1122334455667788
[CRACK.SH-TOKEN] $NETLM$1A6A5C911D8A4DF2$E875F0A28BD7729D071D7DF05272B0FB4549AE926FE36255 (20-300$)
केवल JSON आउटपुट के साथ टोकन शक करें:
$ php shucknt.php -f tokens-samples.txt -o json -j
[...]
{
"type": "NetNTLMv1 (ESS\/SSP)",
"description": "NetNTLMv1 (ESS\/SSP) type with C85086419358F950 as challenge",
"token": "ycam::ad:DEADC0DEDEADC0DE00000000000000000000000000000000:70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:1122334455667788",
"user": "ycam",
"domain": "ad",
"lmresp": "DEADC0DEDEADC0DE00000000000000000000000000000000",
"ntresp": "70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED",
"ct1": "70C249F75FB6D2C0",
"ct2": "AC2C2D3808386CCA",
"ct3": "B1514A2095C582ED",
"ess": true,
"clientchallenge": "1122334455667788",
"serverchallenge": "DEADC0DEDEADC0DE",
"challenge": "C85086419358F950",
"deskeys": {
"k1": "93D9F1C5274F55BB",
"k2": "B9E599C1BBDD47C5",
"k3": "BD85C10101010101"
},
"nthash": "93B3C62269D55DB9CA660BBB91E2BD0B",
"pt1": "93B3C62269D55D",
"pt2": "B9CA660BBB91E2",
"pt3": "BD0B",
"reversePt3": "B0DB",
"HIBPcountCandidates": 12778,
"HIBPoccurence": 15,
"crackshToken": "$NETLM$C85086419358F950$70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED (20-300$)",
"h4m14000": "echo \"70C249F75FB6D2C0:C85086419358F950\">14000.hash;echo \"AC2C2D3808386CCA:C85086419358F950\">>14000.hash;hashcat -m 14000 -a 3 -1 charsets\/DES_full.charset --hex-charset 14000.hash ?1?1?1?1?1?1?1?1",
"h4m5500": "echo \"ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950\">5500.hash;hashcat -m 5500 -a 3 5500.hash ?a?a?a?a?a --increment",
"h4m27000": "echo \"ycam::ad::70C249F75FB6D2C0AC2C2D3808386CCAB1514A2095C582ED:C85086419358F950\">27000.hash;hashcat -m 27000 -a 0 27000.hash nthash-wordlist.txt"
}
[...]
PHP 7/8+ का समर्थन करने वाले वेब सर्वर (Apache, Nginx, आदि) पर ShuckNT होस्ट करें:
ऑनलाइन सेवा Shuck.sh, जो ShuckNT टूल को लागू करती है, कई विवरण और एक FAQ प्रदान करती है।
एक गतिशील और ऑन-द-फ्लाई जनरेटर ऑनलाइन मौजूद है, जो एक स्पष्ट टेक्स्ट पासवर्ड या NT-हैश से प्रमाणीकरण टोकन जनरेशन एल्गोरिदम (NetNTLMv1(-ESS/SSP), MSCHAPv2, PPTP-VPN, आदि) की क्रियाविधि देखने की अनुमति देता है।
अंत में, एक गतिशील और ऑन-द-फ्लाई कनवर्टर भी ऑनलाइन मौजूद है, जो एक प्रमाणीकरण टोकन (NetNTLMv1(-ESS/SSP), MSCHAPv2, PPTP-VPN, आदि) से विस्तार से उसका विच्छेदन दिखाने की अनुमति देता है, और यदि DES कुंजियाँ K1 और K2 प्रदान की जाती हैं (उदाहरण के लिए DES-KPA हमले के बाद) तो संबंधित NT-हैश प्राप्त करने की भी अनुमति देता है।