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

الاستطلاع النشط — عرض توضيحي موجَّه

مختبر واحد، ثلاثة أهداف. نمرّ بكل طبقات المسح، نقرأ كل مخرَج، ونخرج بخطة هجوم واضحة في النهاية. لا شيء مدمِّر — نريد الخريطة، لا الرماد.

تذكير بالإطار

كل ما يلي يجري داخل مختبر host-only من الوحدة 1، مُوسَّعاً إلى ثلاثة أجهزة. لا أمر شرعي خارج مختبر تملكونه أو هدف مشمول باتفاقية RoE.

ما ستعرفون فعله بعد هذا الدرس​

  • اكتشاف المضيفين الأحياء دون معرفة IP مسبقاً.
  • رسم خريطة الخدمات والإصدارات في ثلاث تمريرات منطقية لـ Nmap.
  • تعداد مشاركة SMB دون كلمة مرور واستخراج قائمة مستخدمين.
  • رصد خدمة UDP منسيّة (SNMP)، مع community string الافتراضية.
  • توحيد تقرير استطلاع من صفحتين.

الديكور الموسَّع​

استعيدوا مختبر الأسبوع 1 وأضيفوا آلة افتراضية ثالثة تعمل بـ Linux وقابلة للاختراق.

الجهازالدورIP
Kaliالمهاجم10.10.10.5
Metasploitable 3 (Windows)الهدف 110.10.10.12
Metasploitable 2 (Linux)الهدف 210.10.10.20

يُنزَّل Metasploitable 2 من SourceForge. استوردوها، ضعوها على نفس host-only network، وفرضوا عنوانها على 10.10.10.20.

أنشئوا مجلد المهمة:

mkdir -p ~/labs/semaine-04/{scans,captures,rapport}
cd ~/labs/semaine-04

الخطوة 1 — اكتشاف الطبقة 2 (ARP)​

اكتشاف سلبي في ضجيجه: ARP أصليّ على LAN، لا يجذب أنظمة IDS.

sudo arp-scan --interface=eth0 --localnet | tee scans/arp.txt

المخرَج:

Interface: eth0, type: EN10MB, MAC: 08:00:27:aa:bb:cc, IPv4: 10.10.10.5
Starting arp-scan 1.9.7 with 256 hosts

10.10.10.1 0a:00:27:00:00:0a VirtualBox
10.10.10.12 08:00:27:c3:5f:1e PCS Systemtechnik GmbH (VirtualBox)
10.10.10.20 08:00:27:aa:12:34 PCS Systemtechnik GmbH (VirtualBox)

3 packets received by filter, 0 packets dropped by kernel

ثلاثة أسطر، هدفان. 10.10.10.1 هو مضيف VirtualBox (يُتجاهل). منظومة اختبارنا: .12 و.20.


الخطوة 2 — الاكتشاف عبر ping (ICMP + TCP)​

arp-scan لا يعمل خارج LAN. لمسح أوسع، يجمع nmap -sn بين ICMP echo، وSYN عبر TCP على 443 و80، وARP عندما يكون ذلك ممكناً.

sudo nmap -sn 10.10.10.0/24 -oA scans/hosts
cat scans/hosts.gnmap | grep Up

المخرَج:

Host: 10.10.10.12 () Status: Up
Host: 10.10.10.20 () Status: Up

يؤكد ما قاله ARP. جيّد.


الخطوة 3 — مسح كامل لمنافذ TCP​

دفعة واحدة، كل المنافذ، لكن جهاز واحد في كل مرّة. نسجّل:

sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.12 -oA scans/12-ports
sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.20 -oA scans/20-ports

مقتطف من .20 (Metasploitable 2):

PORT     STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown

قراءة سريعة:

  • telnet (23)، rsh/rexec/rlogin (512-514): بروتوكولات صريحة — مناجم ثغرات؛ ستُصرِخ أي عملية تدقيق.
  • distccd (3632): distributed compiler — RCE تاريخية.
  • ingreslock (1524): باب خلفي معروف لهذه الآلة الافتراضية (shell جذر مباشر).
  • X11 (6000): خادم رسومي مكشوف على الشبكة.
  • MySQL وPostgreSQL مكشوفان دون المرور بواجهة أمامية.

هذه الآلة الافتراضية صُنعت لتُدمَّر — كل شيء فيها مفتوح. على هدف حقيقي، قائمة كهذه تكون إشارة على بنية تحتية مهجورة.


الخطوة 4 — كشف الإصدارات​

لا نطلب الإصدارات إلا على المنافذ المفتوحة. استعيدوا القائمة:

sudo nmap -sV -p 21,22,23,25,53,80,111,139,445,512-514,1099,1524,2049,3306,3632,5432,5900,6000,6667,8009,8180 \
10.10.10.20 -oA scans/20-versions

مقتطف:

PORT     STATE SERVICE     VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

الكلمة السحرية: vsftpd 2.3.4. هذا الإصدار المحدَّد يحوي باباً خلفياً معروفاً علناً (الشهير vsftpd 2.3.4 smiley face backdoor، CVE-2011-2523). يكفي إرسال تسجيل دخول يحتوي :) ليُفتح shell جذر على المنفذ 6200. سنتناوله في الوحدة 5.

الأمر نفسه في Samba 3.x: تاريخ من الثغرات (usermap script، EternalRed…). هدف مؤكَّد.


الخطوة 5 — مسح UDP موجَّه​

nmap -sU -p- طويل جداً (أكثر من 10 ساعات). نستهدف منافذ UDP التي غالباً ما تحمل شيئاً:

sudo nmap -sU --top-ports 20 10.10.10.20 -oA scans/20-udp

المخرَج:

PORT     STATE         SERVICE
53/udp open domain
69/udp open|filtered tftp
111/udp open rpcbind
137/udp open netbios-ns
161/udp open snmp
2049/udp open nfs

SNMP (161) مفتوح. SNMP عبر UDP، بمجتمع افتراضي public، هو الوكيل الذي يكشف الجرد الكامل للآلة.

التحقق:

snmpwalk -v 2c -c public 10.10.10.20 sysDescr
snmpwalk -v 2c -c public 10.10.10.20 hrSWRunName | head

المخرَج:

SNMPv2-MIB::sysDescr.0 = STRING: Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "init"
HOST-RESOURCES-MIB::hrSWRunName.2 = STRING: "sshd"
HOST-RESOURCES-MIB::hrSWRunName.3 = STRING: "mysqld"
HOST-RESOURCES-MIB::hrSWRunName.4 = STRING: "apache2"
...

تعرفون الآن النواة الدقيقة، إصدار التوزيعة، قائمة العمليات الجارية. دون مصادقة. دون استغلال.


الخطوة 6 — تعداد SMB بواسطة nxc​

على 10.10.10.12 (Windows) و10.10.10.20 (Linux بـ Samba)، الأداة نفسها:

nxc smb 10.10.10.12 10.10.10.20

المخرَج:

SMB  10.10.10.12  445  METASPLOITABLE3  [*] Windows Server 2008 R2 SP1  (name:METASPLOITABLE3) (domain:METASPLOITABLE3) (signing:False) (SMBv1:True)
SMB 10.10.10.20 445 METASPLOITABLE [*] Unix (Samba 3.0.20-Debian) (name:METASPLOITABLE) (domain:WORKGROUP) (signing:False) (SMBv1:True)

Signing:False في كل مكان: هجمات SMB relay ستكون ممكنة. لاحظوها للوحدة 10.

لنعدّد المشاركات دون مصادقة:

nxc smb 10.10.10.12 -u '' -p '' --shares
nxc smb 10.10.10.20 -u '' -p '' --shares

المخرَج على .20:

SMB  10.10.10.20  445  METASPLOITABLE   [+] METASPLOITABLE\: 
SMB 10.10.10.20 445 METASPLOITABLE [*] Enumerated shares
SMB 10.10.10.20 445 METASPLOITABLE Share Permissions Remark
SMB 10.10.10.20 445 METASPLOITABLE ----- ----------- ------
SMB 10.10.10.20 445 METASPLOITABLE print$ READ Printer Drivers
SMB 10.10.10.20 445 METASPLOITABLE tmp READ,WRITE oh noes!
SMB 10.10.10.20 445 METASPLOITABLE opt READ
SMB 10.10.10.20 445 METASPLOITABLE IPC$ NO ACCESS IPC Service

مشاركة tmp بصلاحية READ,WRITE في جلسة فارغة. يمكن لمهاجم أن يودع فيها حمولة وينفّذها عن بُعد (انظر الوحدة 8).

هل المستخدمون قابلون للتعداد؟

enum4linux-ng -U 10.10.10.20

مقتطف:

users:
user: games
user: msfadmin
user: postgres
user: user
user: service

msfadmin — حساب المسؤول الافتراضي لهذه الآلة الافتراضية. على هدف حقيقي، قائمة المستخدمين عبر جلسة فارغة هي تسريب كبير. هنا، نلاحظها ونتقدّم.


الخطوة 7 — Wireshark أثناء المسح​

افتحوا Wireshark على Kali، التقطوا على eth0، وأطلقوا مسحاً خفيفاً:

sudo nmap -sS -p 22,80,445 10.10.10.20

في Wireshark، المرشّح:

tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 10.10.10.20

ترون:

  • ثلاث حزم SYN من عنوانكم نحو .20:22، .20:80، .20:445.
  • ثلاث SYN/ACK في الرجوع (منافذ مفتوحة) ← في كل مرّة، يرسل Kali الخاص بكم RST (نمطي في مسح SYN).

أنتم ترون الآن ما كان الهدف سيراه في سجلاته الخاصة — نفس عنوان المصدر، نفس التسلسل، نفس النافذة في TCP. هذه بصمتكم. في اختبار اختراق صاخب، نتقبّلها؛ في red team، نموّهها (انظر الوحدة 8).


الخطوة 8 — Scapy في العرض التوضيحي​

مسح Xmas لمنفذ واحد، يدوياً:

from scapy.all import IP, TCP, sr1

for port in [22, 445, 3389, 8080]:
reponse = sr1(
IP(dst="10.10.10.12") / TCP(dport=port, flags="FPU"),
timeout=2, verbose=0
)
if reponse is None:
print(f"{port}/tcp open|filtered (pas de réponse)")
elif reponse.haslayer(TCP):
flags = reponse[TCP].flags
if flags == 0x14: # RST+ACK
print(f"{port}/tcp closed (RST reçu)")
else:
print(f"{port}/tcp ? (flags={hex(int(flags))})")

المخرَج:

22/tcp  open|filtered  (pas de réponse)
445/tcp open|filtered (pas de réponse)
3389/tcp open|filtered (pas de réponse)
8080/tcp closed (RST reçu)

التفسير: منافذ Windows تُرجع RST للحزم العادية، لكن Windows في مسح Xmas لا يستجيب — سلوك غير مطابق لـ RFC 793. مفيد للتمييز بين Windows وLinux، على مستوى منخفض جداً. هذا النوع من الحيل حيث تتفوّق Scapy على nmap.


الخطوة 9 — التوحيد​

افتحوا ~/labs/semaine-04/rapport/reconnaissance.md واملؤوه:

# Rapport de reconnaissance — Lab semaine 4  (2026-04-16)

## 1. Hôtes vivants
- 10.10.10.12 Windows Server 2008 R2 (Metasploitable 3)
- 10.10.10.20 Linux Ubuntu 8.04 (Metasploitable 2)

## 2. Cible 10.10.10.12 — Windows
- Ports ouverts TCP : 22, 80, 135, 139, 445, 3306, 3389, 4848, 8080
- SMB : SMBv1, signing:False, MS17-010 vulnérable (revoir semaine 1)
- Priorité 1 : réexploiter EternalBlue si non patché.

## 3. Cible 10.10.10.20 — Linux
- Ports ouverts TCP : voir scans/20-ports.gnmap (24 ports ouverts)
- Ports UDP notables : 53, 161 (SNMP public), 2049 (NFS)
- Services vulnérables identifiés :
- CRITIQUE : vsftpd 2.3.4 → backdoor CVE-2011-2523
- CRITIQUE : Samba 3.0.20 → usermap script (CVE-2007-2447)
- CRITIQUE : distccd → RCE (CVE-2004-2687)
- CRITIQUE : ingreslock 1524 → backdoor shell root direct
- HAUTE : SNMP community "public" → fuite d'inventaire
- Session nulle SMB : liste des utilisateurs obtenue (msfadmin, user, service…)
- Partage tmp writable en session nulle.

## 4. Plan pour la semaine 5-8
1. Vérifier chacune des 4 CVE de la .20 via NSE ciblés.
2. Confirmer MS17-010 sur .12.
3. Extraire l'inventaire complet SNMP de la .20.
4. Préparer une exploitation vsftpd (semaine 8, Metasploit).

## 5. Artefacts
- scans/*.gnmap, scans/*.xml, scans/*.nmap (12 fichiers)
- captures/wireshark-syn-scan.pcapng
- rapport/reconnaissance.md (ce fichier)

الحصيلة​

في 45 دقيقة من مسح مُدار جيداً، دون تعطيل خدمة واحدة:

  • رسمتم خريطة جهازين بعمق.
  • عزلتم خمس ثغرات حرجة مؤكَّدة أو مرجّحة جداً.
  • لديكم بصمة حركة مرور في Wireshark، يمكنكم عرضها على العميل («ها هو ما كان على أنظمة IDS لديكم أن تراه»).
  • لديكم خطة للأسابيع 5 إلى 8.

هذه نهاية الاستطلاع. ابتداءً من الوحدة 5، ندخل في الاستغلال.