مقدمة عن Nmap

Nmap (Network Mapper) هي أداة مفتوحة المصدر لاستكشاف الشبكات واختبار الأمان. تُستخدم لاكتشاف الأجهزة والخدمات على شبكة كمبيوتر، مما يوفر معلومات قيمة عن المضيفين المتاحين، الخدمات التي يقدمونها، أنظمة التشغيل التي يعملون بها، وأنواع جدران الحماية المستخدمة.

نصيحة: تأكد من أنك تمتلك الإذن المناسب لمسح الشبكات التي تستهدفها. استخدام Nmap على شبكات دون إذن قد يكون غير قانوني في بعض البلدان.

التثبيت والإعداد

كيفية تثبيت Nmap على أنظمة التشغيل المختلفة:

Terminal
# على أنظمة Ubuntu/Debian
sudo apt update
sudo apt install nmap

# على أنظمة CentOS/RHEL/Fedora
sudo yum install nmap
# أو
sudo dnf install nmap

# على macOS باستخدام Homebrew
brew install nmap

# على Windows
# قم بتنزيله من الموقع الرسمي: https://nmap.org/download.html
ملاحظة: تأكد من تحديث Nmap إلى أحدث版本 للحصول على أحدث الميزات وإصلاحات الأمان.
المسح الأساسي
المسح المتقدم
المسخ المتخفي
خيارات الإخراج

مسح الأهداف الأساسي

أوامر المسح الأساسية لتحديد الأهداف والشبكات:

الأمر الوصف
nmap <hostip>مسح عنوان IP مفرد
nmap <hostip1> <hostip2>مسح عناوين IP محددة
nmap 192.168.1.1-254مسح نطاق من العناوين
nmap scanme.nmap.orgمسح نطاق (domain)
nmap 192.168.1.0/24مسح باستخدام ترميز CIDR
nmap -iL targets.txtمسح أهداف من ملف
nmap -iR 100مسح 100 جهاز عشوائي
nmap --exclude 192.168.1.1استبعاد أجهزة محددة
nmap -sn 192.168.1.0/24اكتشاف الأجهزة النشطة فقط (لا مسح منافذ)

مسح متقدم

أوامر المسح المتقدمة مع خيارات إضافية:

الأمر الوصف
nmap -sP 192.168.1.0/24مسح ping لعناوين متعددة مرة واحدة
nmap -p <port(s)> <host>مسح منافذ محددة
nmap -p- <host>مسح جميع المنافذ (1-65535)
nmap -sT <host>مسح TCP كامل (three-way handshake)
nmap -O <host>كشف نظام التشغيل
nmap -A <host>كشف متقدم (نظام التشغيل + الإصدار + السكريبتات + traceroute)
nmap -sV <host>كشف إصدار الخدمة
nmap --script ssl-enum-ciphers -p 443 <host>فحص SSL/TLS
nmap --script vuln <host>فحص الثغرات الأمنية

مسح متخفي

أوامر المسح المتخفي لتجنب الاكتشاف:

الأمر الوصف
nmap -sS -p <port(s)> <host>مسح SYN متخفي (لا يكمل three-way handshake)
nmap -sN <host>مسح NULL (لا flags)
nmap -sF <host>مسح FIN (فقط FIN flag)
nmap -sX <host>مسح Xmas (FIN, PSH, URG flags)
nmap -D <decoy1,decoy2> <host>إضافة عناوين خداع لإخفاء المسح الحقيقي
nmap -T0 <host>أبطأ مسح (تخفي شديد)
nmap -T5 <host>أسرع مسح (ضجيج عالي)
nmap -f <host>تجزئة الحزم (لتجنب كشف جدار الحماية)
nmap --data-length 100 <host>إضافة بيانات عشوائية للحزم
تحذير: العديد من أنظمة كشف التسلل (IDS) الحديثة يمكنها اكتشاف مسح Nmap حتى مع استخدام التقنيات المتخفية. استخدم هذه التقنيات بحذر وفقط على الشبكات التي你有 الإذن لفحصها.

خيارات الإخراج

خيارات حفظ وتصدير نتائج المسح:

الأمر الوصف
nmap -oN results.txt <host>حفظ النتائج بتنسيق عادي
nmap -oX results.xml <host>حفظ النتائج بتنسيق XML
nmap -oG results.grep <host>حفظ النتائج بتنسيق grepable
nmap -oS results.script <host>حفظ النتائج بتنسيق script kiddie
nmap -oA results <host>حفظ النتائج بجميع التنسيقات
nmap -v <host>وضع verbose (مفصل)
nmap -vv <host>وضع very verbose (مفصل جداً)
nmap --reason <host>عرض سبب كون المنفذ مفتوحاً أو مغلقاً
nmap --stats-every 10s <host>عرض الإحصائيات كل 10 ثوان

أمثلة عملية شائعة

مثال: مسح أساسي مع الخيارات الشائعة
Terminal
nmap -sV -sC -oA nmap_scan 192.168.1.1
  • -sV → كشف إصدار الخدمة
  • -sC → تشغيل السكريبتات الافتراضية
  • -oA → حفظ النتائج بجميع التنسيقات
مثال: مسح شامل لجميع المنافذ
Terminal
nmap -p- -sV -sC -T4 -oA full_scan 192.168.1.100
  • -p- → مسح جميع المنافذ (1-65535)
  • -T4 → سرعه متوسطة (أسرع من الافتراضي)
مثال: مسح شبكة كاملة
Terminal
nmap -sn 192.168.1.0/24

هذا المسح يكتشف الأجهزة النشطة فقط دون مسح المنافذ، مفيد لرسم خريطة الشبكة.

مثال: مسح متخفي مع خداع
Terminal
nmap -sS -D 192.168.1.99,192.168.1.100 -p 22,80,443 -T2 192.168.1.1
  • -sS → مسح SYN متخفي
  • -D → إضافة عناوين خداع
  • -T2 → سرعه بطيئة (أكثر تخفياً)

نصائح وتقنيات متقدمة

تحسين الأداء: استخدم الخيار -T للتحكم في سرعة المسح. -T0 (أبطأ) إلى -T5 (أسرع). المسح الأسرع يولد ضجيجاً أكثر ويمكن اكتشافه بسهولة.
الأمان القانوني: تأكد دائماً من أنك تمتلك الإذن الكتابي لمسح الشبكات والأجهزة. المسح غير المصرح به قد يعتبر جريمة في العديد من البلدان.
السكريبتات المخصصة: Nmap يأتي مع المئات من السكريبتات المتخصصة. استخدم nmap --script-help <script-name> لمعرفة المزيد عن سكريبت معين.