مرحبا أخوي! هاد الدليل رح يعلمك كيف تحدد نوع كل hash وتكسره باستخدام أداة John the Ripper. كل هاش فيه شرح كامل، الأوامر، وشو رح تشوف على الشاشة.
أهم مفهوم لازم تفهمه قبل ما تبدأ
يا أخوي، الـ hash هو عملية رياضية بتاخد أي نص (الباسورد مثلاً) وبتحوله لسلسلة أحرف وأرقام بطول ثابت. المهم تفهم إنه مش تشفير!
533c5ba8368075db8f6ef201546bd71a.
يعني لو عندي الهاش، بخمن كلمات وأهاشها، لما يطابق = وجدت الباسورد!
ليش بعض الهاشات أصعب من غيرها؟
| النوع | Salt؟ | Iterations | السرعة بالـ GPU | الصعوبة |
|---|---|---|---|---|
| MD5 | لأ | 1 | 50 مليار/ثانية | سهل جداً |
| SHA-1 | لأ | 1 | 10 مليار/ثانية | سهل جداً |
| SHA-256 | لأ | 1 | 4 مليار/ثانية | سهل |
| NTLM | لأ | 1 | 100 مليار/ثانية | سهل جداً |
| MD5crypt | آه | 1,000 | 50 مليون/ثانية | متوسط |
| SHA256crypt | آه | 5,000 | 3 مليون/ثانية | صعب |
| SHA512crypt | آه | 5,000 | 1.5 مليون/ثانية | صعب جداً |
| bcrypt | آه | 1,024+ | 10 آلاف/ثانية | شبه مستحيل |
تأكد إنهم موجودين قبل ما تبدأ
/mnt/c/Users/notir عشان كل الأوامر الجاية تشتغل صح.
عد الحروف: 32 حرف كلهم أرقام وحروف من a-f (هكس). ما فيه prefix زي $ في البداية. هاد يعني: إما MD5 أو NTLM — كلهم 32 حرف.
h1_md5.txt → كتب فيه "md5". لو كان NTLM كان فيه "ntlm". كمان NTLM بيجي من Windows بس (من ملف SAM أو NTDS.dit).ممتاز — الهاش موجود وشكله صح.
جون رح يجرب كل كلمة في rockyou.txt، يهاشها بـ MD5، ويقارنها بهاشك. 14 مليون كلمة — بتنتهي بثواني!
السطر المهم هو sunny (?) — هاد الباسورد! الـ (?) معناها "المستخدم" لأن ملفنا ما فيه username.
عد الحروف: 40 حرف هكس. وبس! 40 حرف = SHA-1 دايماً. ما فيه نوع ثاني بطول 40 حرف هكس شايع.
64 حرف هكس بدون prefix = SHA-256. هاد هو الـ algorithm الأقوى من بين الهاشات اللي بدون salt، بس لو الباسورد موجود بالـ wordlist رح ينكسر بثواني.
--format=raw-md5 رح تفشل. السر باسم الملف: h4_ntlm.txt
NTLM = NT LAN Manager — نظام Windows بيستخدمه لتخزين الباسوردات في ملف SAM وفي NTDS.dit (قاعدة بيانات الـ Active Directory).
john --format=raw-md5 ... → No password hashes loaded! لأن الهاش موجود بالـ pot بفورمات nt مش raw-md5.يبدأ بـ $1$ → هاد هو MD5-crypt. جون رح يتعرف عليه تلقائياً ما في داعي تحدد الـ format يدوياً.
$1$ = MD5crypt |
$5$ = SHA256crypt |
$6$ = SHA512crypt |
$2b$ = bcrypt
الـ Salt هو الجزء بين الـ $ الثاني والثالث (rX9kQpLm). هاد يعني حتى لو عندك rainbow table ما رح تفيدك، لأن كل هاش له salt فريد.
يبدأ بـ $5$ → SHA-256-crypt. هاد النظام مستخدم بالـ Linux الحديث في ملف /etc/shadow. فيه 16 حرف salt و 5000 iteration افتراضي.
يبدأ بـ $6$ → SHA-512-crypt. هاد هو الـ standard الحالي لـ Linux passwords. أطول hash بالملف — 86 حرف بعد الـ salt. 5000 iteration من SHA-512.
يبدأ بـ $2b$ (أو $2a$ أو $2y$) → bcrypt. الـ 10 هو الـ cost factor، ويليه 22 حرف salt ثم 31 حرف هاش. المجموع الكلي 60 حرف دايماً.
s وانت بالـ terminal عشان يطبع لك كيف ماشي — كم بنسبة خلص ومتوقع ينتهي امتى.32 حرف هكس بدون prefix. اسم الملف h9_md5.txt → MD5. نفس الموضوع بالظبط زي الهاش رقم 1.
40 حرف هكس → SHA-1. بسيطة!
$1$ = MD5crypt. جون يكتشفه تلقائي. الفرق بس إن هاد من ورقة الامتحان.Windows قديماً كان يخزن الباسورد بطريقتين مع بعض:
aad3b435b51404eeaad3b435b51404ee هاد هو الـ LM Hash "الفارغ" — يعني إما الباسورد فارغ أو LM معطل على هاد الحساب.
31d6cfe0d16ae931b73c59d7e0c089c0 هاد هو NTLM لباسورد فارغ "" — وهاد مشهور جداً وموجود بكل قاعدة بيانات!
جون بيقدر يقرأ الهاش بهالشكل مباشرة. بس تعطيه --format=nt ويستخرج الـ NT Hash تلقائياً.
(?) — يعني الباسورد هو النص الفارغ "". هاد معروف لأن 31d6cfe0... هو دايماً NTLM للباسورد الفارغ.31d6cfe0... معروف!$2b$ و$2y$ و$2a$ كلهم نفس الـ algorithm. الفرق تاريخي بس (PHP كان يستخدم $2y$، الأنظمة الحديثة بتستخدم $2b$). جون بيتعرف على الثلاثة.هاد الشكل بيطلع لما تعمل dump لقاعدة بيانات Windows — من SAM file أو NTDS.dit أو بأدوات زي secretsdump.py. كل سطر يمثل يوزر واحد.
ما في داعي تستخرج الهاش يدوياً. احفظ السطر كامل بملف وجون يفهمه تلقائياً.
(Administrator) بدل (?) لأن السطر فيه username. جون بيربط الباسورد باليوزر تلقائياً.8846f7eaee8fb117ad06bdd830b7586c معروف!لو الباسورد مش بالـ rockyou.txt، هاد السلاح التاني. إنت بتحدد شكل الباسورد وجون يجرب كل الاحتمالات.
الـ Tokens المتاحة — احفظها!
--1='aeiou0123456789'أمثلة عملية
جدول الـ Keyspace — كيف يكبر عدد الاحتمالات
| الطول | ?d فقط (10) | ?l فقط (26) | ?a (95) | الوقت @ مليار/ثانية |
|---|---|---|---|---|
| 4 | 10,000 | 456 ألف | 81 مليون | أقل من ثانية |
| 5 | 100 ألف | 11.8 مليون | 7.7 مليار | 8 ثواني |
| 6 | مليون | 308 مليون | 735 مليار | 12 دقيقة |
| 7 | 10 مليون | 8 مليار | 69 تريليون | 19 ساعة |
| 8 | 100 مليون | 208 مليار | 6.6 كوادريليون | 209 سنة |
8 أحرف عشوائية من كل الأنواع = مستحيل تقريباً بالـ CPU بدون GPU متخصص.اضغط على كل باسورد عشان تكشفه
الهاشات 1-10: باسورداتها غير معروفة — شغّل جون وهي بتنكسر. الامتحان E2 وE4 باسوردهم معروف.
أمر واحد يعرض كل الهاشات المكسورة دفعة واحدة