اعرف اللي قصادك. احمي أرضك.

nmap

الأداة المرجعية لمسح المنافذ وتحديد الخدمات، وتتضمن محرك سكربتات NSE القوي لاكتشاف الثغرات وتوصيف الأنظمة.

الاتنينمفتوحة المصدرLinuxmacOSWindows
nmap.org

nmap — الدليل الشامل لمسح الشبكات ورسم خرائطها

تُعد أداة nmap الأداة المرجعية والأكثر شهرة في مجال مسح المنافذ (Port Scanning) ورسم خرائط الشبكة (Network Mapping). بفضل محرك النصوص البرمجية الخاص بها (NSE)، لا تقتصر وظيفتها على اكتشاف المنافذ المفتوحة فحسب، بل تمتد لتشمل تحديد بصمات الخدمات، واكتشاف الثغرات الأمنية (CVEs)، وتنفيذ هجمات استغلال محددة الأهداف. إتقان nmap ضروري جداً لكل من الفرق الحمراء (Red Teams) والفرق الزرقاء (Blue Teams).

التثبيت (Install)

$ apt install nmap
$ brew install nmap
$ choco install nmap # لنظام Windows

خيارات أنماط المسح (Scan-type flags)

الخيارالنمطملاحظات
-sSمسح TCP SYNالنمط الافتراضي لصلاحيات root، سريع، يعتمد على الاتصال شبه المفتوح (Half-open)
-sTمسح TCP connectيُستخدم عند عدم توفر صلاحيات الوصول للمقابس الخام (Raw Sockets)
-sUمسح UDPبطيء؛ يفضل استخدامه مع قوائم منافذ قصيرة
-sN / -sF / -sXمسح Null / FIN / Xmasتقنيات متقدمة لاكتشاف بصمة نظام التشغيل
-sAمسح ACKلاكتشاف قواعد الجدار الناري (تحديد ما إذا كان المنفذ مفلتراً أم لا)
-sWمسح Windowتنويع لمسح ACK
-sMمسح Maimonيعتمد على أخطاء في معايير RFC للتخفي
-sY / -sZمسح SCTP INIT/COOKIEمخصص لقطاع الاتصالات
-sOمسح بروتوكول IPيحدد البروتوكولات التي يدعمها المضيف (TCP, UDP, ICMP, ESP)
-sLمسح القائمة (List scan)تحليل العناوين فقط دون إرسال حزم فحص
-sP / -snفحص Ping / بدون منافذلاكتشاف المضيفين النشطين فقط (Host Discovery)

تحديد المنافذ (Port specification)

الخيارالمعنى
-p 22منفذ واحد فقط
-p 22,80,443منافذ متعددة
-p 1-65535 / -p-النطاق الكامل (بطيء لكنه شامل جداً)
-p T:80,U:53دمج بروتوكولات مختلفة
--top-ports 1000أشهر 1000 منفذ (الخيار الافتراضي إذا لم يتم تحديد -p)
-Fأشهر 100 منفذ (المسح السريع)
-rمسح متسلسل (بدون عشوائية)

السرعة والتوقيت (Speed / timing)

الخيارالسرعةمتى يُستخدم
-T0Paranoidلتجاوز أنظمة اكتشاف الاختراق (IDS)، يستغرق أياماً للمضيف الواحد
-T1Sneakyللتخفي (Stealth)
-T2Politeلتقليل الضغط على الشبكة
-T3Normalالنمط الافتراضي (مناسب للشبكات المحلية)
-T4Aggressiveيُستخدم في معظم المهام الرسمية لسرعته
-T5Insaneللمختبرات (Lab) وتحديات CTF فقط

إعدادات مخصصة: --min-rate 5000 (أقل معدل للحزم), --max-retries 2, --host-timeout 5m.

اكتشاف الخدمات ونظام التشغيل (Service / OS detection)

الخيارالغرض منه
-sVفحص لافتات الخدمة (Banners) ← تحديد المنتج والإصدار
--version-intensity 0..9كثافة الفحص: زيادة الدقة تتطلب وقتاً أطول
-Oاكتشاف بصمة نظام التشغيل (يتطلب root ومنفذ مفتوح وآخر مغلق)
-Aاختصار يجمع بين: -sV -O --traceroute -sC

محرك النصوص البرمجية (NSE)

الخيارالغرض منه
-sCتشغيل النصوص البرمجية الافتراضية الآمنة
--script <name>تشغيل نصوص محددة (يدعم استخدام النماذج/Globs)
--script-argsتمرير وسطاء (Arguments) للنصوص
--script-help <name>عرض المساعدة الخاصة بنص معين

فئات النصوص المفيدة: default, safe, discovery, auth, vuln, exploit, intrusive, dos, brute.

$ nmap --script vuln target.com
$ nmap --script "smb-vuln-* and safe" -p 445 10.0.0.0/24
$ nmap --script http-title,http-headers,http-enum -p 80,443 target.com
$ nmap --script ssl-enum-ciphers -p 443 target.com # فحص الشهادات وخوارزميات التشفير
$ nmap --script smb-enum-shares,smb-enum-users -p 445 10.0.0.5
$ nmap --script vuln,exploit -p 445 --script-args=unsafe=1 10.0.0.5 # لبيئات CTF

تنسيقات المخرجات (Output)

الخيارالتنسيق
-oNنص عادي (Normal)
-oGقابل للبحث (Grepable) - سطر واحد لكل مضيف
-oXXML (يسهل تحليله بواسطة أدوات أخرى)
-oA <basename>إنتاج الثلاثة تنسيقات معاً
--reasonعرض سبب تصنيف حالة المنفذ
--openعرض المنافذ المفتوحة فقط
--packet-traceسجل كامل لكل حزمة (لأغراض استكشاف الأخطاء فقط)

خيارات التخفي وتجاوز الجدران النارية (Stealth / firewall flags)

الخيارالوظيفة
-Pnتخطي اكتشاف المضيف (الافتراض أنه نشط). مفيد للجدران النارية التي تمنع حزم ICMP
-nعدم إجراء بحث عكسي لأسماء النطاقات (No DNS lookup)
-D <decoys>استخدام عناوين IP وهمية (Decoys) للتمويه
-S <ip>انتحال عنوان IP المصدر (يعمل فقط إذا كان مسار العودة متاحاً)
-e <iface>تحديد واجهة الشبكة
-g <port> / --source-portتحديد منفذ المصدر (استخدام 53 أو 88 قد يتجاوز بعض قواعد ACLs)
--data-length 50إضافة بيانات حشو للحزم
--badsumإرسال حزم بـ Checksum خاطئ (لاكتشاف أنظمة الفلترة)
-f / --mtuتجزئة الحزم (Fragmentation)
--proxies <list>استخدام سلاسل وكيل (Proxies) - للمسح بنمط TCP فقط
--ttl <n>تحديد عمر الحزمة (TTL) بشكل مخصص
--randomize-hostsعشوائية ترتيب المضيفين المستهدفين
--spoof-mac <addr>انتحال عنوان MAC (للشبكات المحلية فقط)

سير العمل (Workflows)

الاستطلاع الخارجي القياسي (Standard external recon)

$ sudo nmap -sS -sV -sC -O -T4 -p- --min-rate 2000 -oA full target.com

يتم تحليل النتائج لاحقاً باستخدام: searchsploit -nmap أو nuclei -l.

مسح الشبكة الداخلية لنطاق /24

$ sudo nmap -sn 10.0.0.0/24 -oG live-hosts.gnmap
$ sudo nmap -sS -sV --top-ports 500 -iL <(grep '^Host:.*Up' live-hosts.gnmap | awk '{print $2}') -oA sweep

اكتشاف الثغرات المستهدفة

$ nmap -p 80,443 --script http-shellshock,http-vuln-cve2017-5638 target.com

فحص UDP — البطيء ولكن المهم

$ sudo nmap -sU --top-ports 50 -T4 --max-retries 1 target.com

تجاوز أنظمة كشف التسلل (IDS evasion)

$ sudo nmap -sS -p 80,443,3389 -T2 -f --data-length 24 -D RND:10 -g 53 --randomize-hosts target-list.txt

تفسير المخرجات (Output Classification)

PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.9p1 Ubuntu 3 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     nginx 1.21.6
443/tcp  open  ssl/http nginx 1.21.6
3389/tcp open  ms-wbt-server Microsoft Terminal Services
  • open: الخدمة استجابت.
  • closed: المضيف استجاب بـ RST (المنفذ مغلق).
  • filtered: لا يوجد استجابة (غالباً بسبب جدار ناري).
  • open|filtered: حالة غامضة (شائعة في مسح UDP).

الأخطاء الشائعة وحلولها (Bad output / fixes)

العرضالسبب المحتملالحل
جميع المنافذ filteredجدار ناري يمنع الحزماستخدم -Pn؛ تأكد من عنوان IP؛ جرب -sA لفهم قواعد ACL
Host seems downمنع حزم ICMPاستخدم -Pn
اكتشاف الخدمة كـ tcpwrappedتم التعرف على بصمة الخدمة لكنها ترفض الاتصالحاول بزيادة الكثافة --version-intensity 9
Service Info: OS: Linux فقطلافتة الخدمة غير كافيةأضف -A أو نصوص NSE مخصصة
المسح بطيء جداًمسح UDP، نطاق كامل، أو توقيت منخفضقلل UDP، استخدم --min-rate أو -T4
إصدار مضلل (مثلاً nginx يظهر كـ Apache)تمويه اللافتة أو وجود WAFتحقق باستخدام أدوات أخرى مثل httpx أو whatweb
Failed to resolveمشكلة في مزود DNSحدد مزوداً آخر عبر --dns-servers 1.1.1.1

منظور المدافع الأمني (Defender's Perspective)

يمكن للمدافعين ملاحظة: دفعات كبيرة من حزم SYN من عنوان واحد عبر منافذ متعددة، حزم فحص ICMP، وخيارات TCP الخاصة ببصمات الخدمات. أفكار للاكتشاف:

  • قواعد IDS: استخدام Suricata لاكتشاف أنماط مسح Xmas أو Null.
  • عتبات مسح المنافذ (Thresholds): برمجة الجدران النارية لحظر المصدر بعد تجاوز عدد معين من المنافذ في الثانية.
  • منافذ الأفخاخ (Honeypots): مثل Canary أو T-Pot، حيث يعتبر أي اتصال بها مشبوهاً.

أمن العمليات (OPSEC)

  • الإعداد الافتراضي لـ nmap صاخب جداً. استخدام -T4 -sS سيكتشف في ثوانٍ بواسطة أنظمة IDS الحديثة.
  • في العمليات الحقيقية، قم بتقسيم المسح: مضيف للاكتشاف، وآخر لتحديد الخدمات، وثالث لتشغيل النصوص البرمجية.
  • استخدام Tor مع proxychains لا يدعم مسح المقابس الخام (-sS). استخدم -sT في هذه الحالة.
الأداةالاستخدام
masscanأسرع بمئات الأضعاف، لكن بدون اكتشاف للخدمات
naabuبديل مكتوب بلغة Go، سريع ومخرجاته منظمة
rustscanماسح TCP سريع جداً يمرر النتائج لـ nmap
nucleiفحص الثغرات بناءً على القوالب بعد اكتشاف المنافذ
nmap-formatterتحويل مخرجات XML إلى HTML أو Markdown
vulscan / vulnersربط إصدارات الخدمات بالثغرات المعروفة (CVEs)