📖 كل شيء عن أداة Nmap: من المبتدئ إلى الاحتراف – بقلم محمد المختار الحسن البكاي
بسم الله الرحمن الرحيم، والصلاة والسلام على رسول الله. في هذا الدليل الضخم، سنكشف الستار عن واحدة من أقوى أدوات الأمن السيبراني واختبار الاختراق على الإطلاق: Nmap. هذه الأداة ليست مجرد ماسح منافذ، بل تعتبر سكينًا متعدد الوظائف في يد أي خبير سيبراني، تتيح لك استكشاف الشبكات، فحص الأنظمة، تحليل الخدمات، واكتشاف الثغرات ببراعة.
🔍 مقدمة تعريفية شاملة عن أداة Nmap
Nmap، اختصار لـ Network Mapper، هي أداة مفتوحة المصدر تُستخدم لاكتشاف الأجهزة والخدمات على الشبكة. بدأت كمشروع صغير لفحص المنافذ، وتطورت لتصبح أداة كاملة للتحليل الشبكي، تشمل دعمًا لمحرك سكربتات قوي (NSE)، واكتشاف أنظمة التشغيل، والتحايل على الجدران النارية، وتوليد تقارير متعددة التنسيقات.
👤 من هو مطورها ولماذا هي مهمة؟
تم تطوير Nmap على يد Gordon Lyon المعروف بالاسم المستعار Fyodor، وهو من أوائل الباحثين في أمن الشبكات. تتميز الأداة بأهميتها لأنها تُستخدم من قبل الآلاف من مسؤولي الشبكات والباحثين الأمنيين، وتُعد جزءًا لا يتجزأ من توزيعات لينكس الأمنية مثل Kali وParrot، كما تُستخدم في اختبارات الأمن على الأنظمة الحقيقية في الشركات الكبرى.
🧠 حالات استخدام Nmap
- 🎯 فحص الأجهزة النشطة داخل شبكة.
- 🔐 اكتشاف الثغرات والخدمات المعرضة للهجوم.
- 🛰️ التحقق من البنية التحتية للشبكات.
- 📡 اكتشاف أنظمة التشغيل والخدمات.
- 📊 تحليل التغيرات بين نتائج الفحص عبر الزمن (مع أداة Ndiff).
- 📂 استخدام سكربتات الأمن لاكتشاف ثغرات معروفة.
- 🔁 فحص أوتوماتيكي للشبكات ضمن جدران الحماية أو NAT.
💾 كيفية تثبيت Nmap
🔧 على Linux (Debian/Ubuntu)
sudo apt update && sudo apt install nmap
🖥️ على Windows
1. قم بتحميل الأداة من الموقع الرسمي: nmap.org/download
2. ثبّت ملف الـ EXE واتبع التعليمات. غالبًا ما تتوفر الأداة أيضًا مع Zenmap (واجهة رسومية).
🍏 على macOS
brew install nmap
🚀 الفهم الكامل لطرق الفحص (Scan Types)
فيما يلي أهم أنواع الفحص التي يدعمها Nmap، وكل نوع له وظيفة محددة:
نوع الفحص | الأمر | الوظيفة |
---|---|---|
TCP SYN Scan | -sS |
يُرسل حزم SYN ويقرأ الرد لتحديد حالة المنفذ دون إكمال الاتصال. |
TCP Connect | -sT |
ينفذ اتصال TCP كامل. يستخدم في حال عدم توفر صلاحيات root. |
UDP Scan | -sU |
يفحص منافذ UDP المفتوحة. بطيء ولكنه مفيد لاكتشاف خدمات مثل DNS وSNMP. |
Ping Scan | -sn |
يُستخدم لاكتشاف الأجهزة النشطة دون فحص المنافذ. |
Null, FIN, Xmas Scans | -sN / -sF / -sX |
تفحص النظام دون حزم TCP المعتادة، لمحاولة تجاوز الجدران النارية. |
SCTP Scans | -sY / -sZ |
مخصصة لبروتوكول SCTP. نادرة الاستخدام. |
ACK Scan | -sA |
يُستخدم لاكتشاف الجدران النارية وتحديد القواعد المسموح بها. |
IP Protocol Scan | -sO |
يُظهر البروتوكولات المستخدمة، مثل ICMP, TCP, UDP... |
ARP Scan | -PR |
يُستخدم على الشبكات المحلية لاكتشاف الأجهزة بسرعة. |
👉 في الأجزاء التالية، سنشرح كل أمر على حدة مع أمثلة واقعية، وننتقل بعدها إلى أوامر تحديد المنافذ، البروتوكولات، خيارات التخفي، والـ NSE بالكامل.
📌 التعامل مع المنافذ – خيارات الفحص باستخدام -p و -F و --top-ports
من أهم الأمور التي يجب فهمها عند استخدام Nmap هي تحديد المنافذ التي تريد فحصها. بشكل افتراضي، Nmap يفحص أول 1000 منفذ شائع، لكن يمكنك تخصيص ذلك يدويًا باستخدام عدة خيارات قوية.
الخيار | الوصف | مثال |
---|---|---|
-p |
تحديد مجموعة منافذ معينة يدويًا. |
|
-p- |
فحص جميع المنافذ من 1 إلى 65535. |
|
-F |
فحص سريع باستخدام قائمة مختصرة لأكثر المنافذ شيوعًا. |
|
--top-ports |
فحص أعلى عدد محدد من المنافذ الأكثر استخدامًا. |
|
--port-ratio |
فحص المنافذ التي تظهر على نسبة معينة من الأجهزة. |
|
📦 تحديد البروتوكولات يدويًا
بشكل افتراضي، Nmap يفترض أن الفحص يتم على TCP. لتحديد بروتوكولات أخرى مثل UDP أو SCTP، استخدم الخيارات التالية:
-sT
: لفحص TCP الكامل.-sU
: لفحص منافذ UDP.-sY
: لفحص بروتوكول SCTP.-sO
: لفحص البروتوكولات على مستوى IP.
📘 مثال لفحص TCP + UDP:
nmap -sS -sU -p T:80,443,U:53,161 192.168.1.1
⏱️ خيارات التوقيت Timing – Stealth – سرعة الفحص
Nmap يسمح لك بضبط توقيت وسرعة الفحص عبر خيارات Time Templates من T0 إلى T5:
الخيار | الاسم | الوصف |
---|---|---|
-T0 |
Paranoid | بطيء جدًا، لتجنب كشف IDS. |
-T1 |
Sneaky | بطيء لكن أكثر عملية من T0. |
-T2 |
Polite | يُبطئ الفحص لحفظ عرض النطاق. |
-T3 |
Normal | الخيار الافتراضي. |
-T4 |
Aggressive | سريع. مناسب للاتصالات الجيدة. |
-T5 |
Insane | سريع جدًا. غير موصى به إلا في ظروف خاصة. |
📘 مثال لفحص TCP سريع:
nmap -sS -T4 192.168.1.1
في الأجزاء القادمة: سنتناول خيارات التخفي والتحايل على الجدران النارية (Bypass Firewalls)، ثم ننتقل إلى اكتشاف أنظمة التشغيل، كشف إصدارات الخدمات، والسكربتات الأمنية NSE بالتفصيل.
🛡️ التحايل على الجدران النارية وأنظمة كشف التسلل (IDS)
من التحديات التي تواجه الفاحص الأمني أن يتم اكتشافه من قبل IDS أو أن يُمنع من الوصول بسبب الجدران النارية (Firewalls). Nmap يوفر مجموعة من الخيارات لتجاوز هذه الحواجز أو تضليلها:
الخيار | الوصف | مثال |
---|---|---|
--source-port |
تحديد منفذ المصدر يدويًا لتجاوز الفلاتر. |
|
--data-length |
إضافة بيانات وهمية لحزم الفحص. |
|
--spoof-mac |
انتحال عنوان MAC لجهاز آخر. |
|
--badsum |
إرسال حزم TCP خاطئة لاختبار IDS. |
|
--ttl |
تحديد قيمة TTL لتجاوز التصفية. |
|
🧬 اكتشاف نظام التشغيل (OS Detection)
تحديد نظام تشغيل الهدف أمر ضروري لتخصيص الهجمات وتحليل البيئة بدقة.
Nmap يوفر ذلك باستخدام الخيار -O
، والذي يعتمد على تحليل ردود TCP/IP الخاصة بالجهاز.
nmap -O 192.168.1.1
لمزيد من الدقة، يُفضل استخدامه مع -sS
و -Pn
و -T4
كما يلي:
nmap -sS -Pn -T4 -O 192.168.1.1
🎯 تحسين دقة الكشف:
- استخدم نطاقات IP معروفة.
- استخدم مع الأمر
--osscan-guess
للمساعدة بالتخمين. - نتائج OS قد تكون تقريبية، حسب الحماية أو إصدار النظام.
🧪 اكتشاف إصدارات الخدمات (Version Detection)
يساعدك الخيار -sV
في معرفة الإصدارات الدقيقة للخدمات التي تعمل على المنافذ مثل HTTP وSSH وFTP وغيرها.
nmap -sV 192.168.1.1
لتحسين النتائج:
- استخدمه مع
-p
لتحديد المنافذ المستهدفة. - استخدم
--version-intensity
(من 0 إلى 9) للتحكم بعمق الفحص. - استخدم
--version-trace
لرؤية خطوات التحليل.
nmap -sV --version-intensity 9 192.168.1.1
🧠 تُستخدم هذه النتائج في ربط الخدمات المعروفة مع الثغرات المحتملة (مثل CVEs)، كما تُستخدم في تقارير الفحص النهائي للمؤسسات.
⬅️ في الجزء القادم: سنتناول الفحص بالسكربتات -sC و --script، ونبدأ بالغوص في محرك السكربتات NSE وأمثلة عملية لكل نوع.
🧠 الفحص بالسكربتات - Nmap Scripting Engine (NSE)
من أقوى ميزات Nmap هي محرك السكربتات NSE، الذي يسمح بفحصات ذكية ومعمقة مثل اكتشاف الثغرات، فحص كلمات المرور الافتراضية، التحقق من الإعدادات الأمنية، والمزيد.
🔹 الفرق بين -sC و --script
الخيار | الوظيفة |
---|---|
-sC |
يشغّل السكربتات الافتراضية الموصى بها، غالبًا ما تكون آمنة وسريعة. |
--script |
يسمح لك بتحديد سكربتات معينة أو فئات منها مثل vuln أو brute أو discovery. |
nmap -sV -sC 192.168.1.1
nmap --script vuln 192.168.1.1
📂 أنواع سكربتات Nmap حسب التصنيف
- auth: للتحقق من إعدادات المصادقة (مثل SSH، SNMP).
- brute: لتجريب كلمات المرور القوية (Brute-force).
- vuln: لكشف الثغرات الأمنية.
- default: مجموعة سكربتات آمنة تُستخدم مع
-sC
. - discovery: لاكتشاف الخدمات والمضيفين.
- safe: سكربتات لا تؤثر على الهدف.
- intrusive: سكربتات عدوانية يجب استخدامها بحذر.
- malware: تبحث عن مؤشرات إصابة بالبرمجيات الخبيثة.
🔍 أمثلة عملية حسب الفئة
📛 اكتشاف ثغرات - فئة vuln
nmap -p 80 --script vuln 192.168.1.1
يفحص المنافذ بحثًا عن ثغرات مثل SQL Injection أو Heartbleed.
🔑 تجربة كلمات المرور - فئة brute
nmap -p 22 --script ssh-brute 192.168.1.1
يحاول تسجيل الدخول إلى SSH باستخدام قاعدة بيانات كلمات مرور.
🕵️ اكتشاف الخدمات - فئة discovery
nmap --script broadcast-dhcp-discover
يكتشف خوادم DHCP النشطة على الشبكة.
📜 التحقق من المستخدمين - فئة auth
nmap --script snmp-brute -p 161 192.168.1.1
📂 تشغيل سكربتات متعددة أو معينة
nmap --script "vuln,default,ssh-brute,http-title" 192.168.1.1
🔍 عرض تفاصيل أي سكربت قبل استخدامه
nmap --script-help http-title
📁 موقع السكربتات الافتراضية في النظام
/usr/share/nmap/scripts/
يمكنك فتح أي سكربت بامتداد .nse
لتعديله أو دراسة بنيته.
✍️ كيف تكتب سكربت Nmap خاص بك؟
تُكتب السكربتات بلغة Lua، وتتكون من الأقسام التالية:
- description: شرح ما يقوم به السكربت.
- portrule: متى يُشغّل السكربت (على أي منفذ).
- action: الوظيفة الأساسية التي ينفذها السكربت.
-- مثال سكربت بسيط
description = [[
يفحص وجود صفحة index.html
]]
portrule = function(host, port)
return port.protocol == "tcp" and port.port == 80
end
action = function(host, port)
return "تم فحص الصفحة بنجاح"
end
🎓 ستجد الآلاف من السكربتات الجاهزة لاستخدامها أو تعديلها حسب الهدف. سنفهرس أهمها في الأجزاء القادمة.
📥 الجزء التالي: سنغطي تنسيقات الإخراج المختلفة (normal, grepable, XML, JSON) ثم ننتقل لدمج Nmap مع أدوات مثل Metasploit وZenmap وغيرها.
🧾 تنسيقات إخراج Nmap – Output Formats
من الضروري معرفة كيف تُخزّن نتائج Nmap بصيغ مختلفة لتسهيل التحليل، مشاركة النتائج، أو دمجها مع أدوات أخرى مثل Metasploit، Excel، أو ELK.
📄 الإخراج العادي – Normal Output
الصيغة النصية الافتراضية والتي يمكنك حفظها باستخدام -oN
nmap -oN scan.txt 192.168.1.1
🔍 إخراج قابل للبحث – Grepable Output
يُستخدم مع أدوات البحث أو البرمجة (مثل awk, grep).
nmap -oG scan.grep 192.168.1.1
📊 إخراج XML – لـ Metasploit أو برامج التحليل
يسهل استيراده في أدوات مثل Zenmap وMetasploit وNmap Parser.
nmap -oX scan.xml 192.168.1.1
🔧 إخراج JSON – للأدوات الحديثة وأنظمة الـ API
يتطلب دعمًا مدمجًا أو تحويل XML إلى JSON باستخدام أدوات وسيطة.
nmap -oX - 192.168.1.1 | xml2json > scan.json
🛠️ دمج Nmap مع أدوات أخرى
1. 🧨 Metasploit Framework
يمكن استيراد نتائج Nmap بسهولة:
db_import /path/to/scan.xml
ثم استخدام النتائج في الهجمات أو التحليل داخل Metasploit مباشرة.
2. 🧭 Zenmap – الواجهة الرسومية لـ Nmap
تُستخدم لتبسيط الفحص وتحليل النتائج عبر الرسوم البيانية.
- تسمح بحفظ ملفات XML واستعراضها لاحقًا.
- تسهل استخدام الأوامر المتقدمة دون كتابتها يدويًا.
3. 🔄 Ndiff – مقارنة نتائج الفحص
تُستخدم لمقارنة ملفي Nmap واكتشاف التغييرات بين فحصين.
ndiff scan1.xml scan2.xml
مفيد جدًا في البيئات التي تتغير فيها الخدمات باستمرار.
4. 📋 Excel أو Google Sheets
يمكن تصدير إخراج grepable أو CSV لتحليل النتائج يدويًا.
cat scan.grep | grep open | awk '{print $2,$3,$4}' > ports.csv
5. ⚙️ أدوات Python لتحليل النتائج
باستخدام مكتبات مثل python-libnmap
أو nmap-parser
:
pip install python-libnmap
ثم استخدام السكربت لتحليل ملفات XML وتوليد تقارير.
🔎 تنسيقات إخراج متعددة معًا
يمكنك إنتاج أكثر من تنسيق إخراج في نفس الأمر باستخدام:
nmap -oA results 192.168.1.1
سينتج: results.nmap
وresults.gnmap
وresults.xml
📌 في الجزء التالي: سننتقل إلى شرح أمثلة عملية للفحص في سيناريوهات واقعية، ثم نغوص في الأوامر المتقدمة مثل --reason
و--max-rate
و--spoof-mac
وغيرها.
⚙️ أوامر Nmap المتقدمة – استخدامات احترافية
تُعد هذه الأوامر من أقوى وظائف Nmap وأكثرها تخصيصًا، وتُستخدم لتحسين النتائج، التحكم في الأداء، أو إضافة معلومات تحليلية مفصلة.
📌 --reason
– عرض سبب تحديد حالة المنفذ
يعرض السبب وراء وصف المنفذ بأنه مفتوح أو مغلق (مثل الرد بـ SYN/ACK أو ICMP unreachable).
nmap --reason 192.168.1.1
📍 --traceroute
– اكتشاف المسار بينك وبين الهدف
يُظهر عدد القفزات والـ hops للوصول إلى الجهاز المستهدف.
nmap --traceroute 192.168.1.1
🔁 --max-retries
– الحد الأقصى لمحاولات الإعادة
يقلل عدد المحاولات في حال كانت الشبكة بطيئة أو مقيدة:
nmap --max-retries 2 192.168.1.1
⏱️ --host-timeout
– تحديد مهلة لكل مضيف
يتوقف Nmap عن فحص أي جهاز يتجاوز الزمن المحدد.
nmap --host-timeout 60s 192.168.1.1
🚀 --min-parallelism
/ --max-parallelism
تحديد عدد العمليات المتوازية (Threads) لتحسين الأداء:
nmap --min-parallelism 10 192.168.1.1
🚧 --max-rate
– تحديد الحد الأقصى لحزم الفحص بالثانية
يساعد على تجنب الاكتشاف أو التشبع:
nmap --max-rate 100 192.168.1.1
🧢 --spoof-mac
– انتحال عنوان MAC
يسمح بانتحال جهاز آخر (مثل Apple أو Cisco أو عنوان مخصص):
nmap --spoof-mac 0A:1B:2C:3D:4E:5F 192.168.1.1
🎯 --data-length
– إضافة بيانات وهمية للحزم
يُستخدم للتحايل على أنظمة كشف التسلل:
nmap --data-length 100 192.168.1.1
🧠 --dns-servers
– استخدام خوادم DNS مخصصة
nmap --dns-servers 8.8.8.8,1.1.1.1 scanme.nmap.org
💡 --randomize-hosts
– عشوائية الترتيب
يمنع الفحص التسلسلي ليبدو عشوائيًا، فيصعب كشفه:
nmap --randomize-hosts -iL targets.txt
🎛️ -iL
و -iR
– إدخال قائمة أهداف أو عناوين عشوائية
nmap -iL targets.txt
nmap -iR 100
🧪 هذه الأوامر مجتمعة تمنحك قدرة خارقة على تخصيص الفحص والتحكم الكامل في أدق تفاصيله. في الجزء التالي، سنبدأ بأمثلة حقيقية متقدمة لفحص المواقع، السيرفرات، أجهزة IoT، وتحليل النتائج بالتفصيل.
🧪 أمثلة عملية واقعية لفحص الأنظمة باستخدام Nmap
سنستعرض الآن كيفية تنفيذ فحوصات احترافية في بيئات مختلفة مثل المواقع الإلكترونية، الخوادم، وأجهزة إنترنت الأشياء (IoT)، مع تحليل نتائج الفحص.
🌐 فحص موقع إلكتروني: example.com
هدف الفحص: اكتشاف الخدمات والثغرات المحتملة على الموقع.
nmap -sS -sV -O --script vuln example.com
📌 التحليل:
- عرض المنافذ المفتوحة (80, 443, 21...)
- تحديد نوع السيرفر (Apache, Nginx...)
- كشف نظام التشغيل (Linux/Ubuntu...)
- تشخيص الثغرات المكتشفة عبر سكربتات
vuln
🖥️ فحص سيرفر داخل الشبكة: 192.168.1.10
هدف الفحص: تحليل الشبكة الداخلية وفهم التهيئة الأمنية.
nmap -sU -sT -p U:161,T:22,80,443 -sC -sV -O 192.168.1.10
📌 ملاحظات:
- فحص TCP وUDP في نفس الوقت
- سكربتات افتراضية للحصول على بيانات سريعة وآمنة
- كشف إعدادات SNMP أو SSH أو Web
📡 فحص جهاز IoT – كاميرا IP على الشبكة
nmap -sV -O --script default,vuln -p- 192.168.1.20
🎯 الهدف: التأكد من عدم وجود إعدادات خطيرة مثل منافذ Telnet مفتوحة أو واجهات إدارة غير مؤمنة.
🔄 فحص دوري وتحليل التغييرات
nmap -oX scan_01.xml 192.168.1.0/24
nmap -oX scan_02.xml 192.168.1.0/24
ndiff scan_01.xml scan_02.xml
📌 هذا يُظهر التغيرات في الخدمات والمنافذ بين الفحصين، مثل جهاز جديد، منفذ تم فتحه، أو خدمة تم حذفها.
🔍 فحص شامل لمنظمة أو شركة
لشبكة مكونة من عدة نطاقات وأجهزة:
nmap -iL targets.txt -sS -sU -O -sV --script "auth,brute,vuln,discovery" -T4 -oA full-org-scan
📊 هذا الفحص ينتج عنه ثلاث ملفات كاملة: نصي وXML وGrepable لتحليلها لاحقًا أو إدخالها في تقارير احترافية.
🧠 توصيات بعد الفحص:
- تحليل كل منفذ مفتوح: لماذا هو موجود؟ هل هو ضروري؟
- تحديث الخدمات التي تم اكتشافها بإصدارات قديمة
- تغيير كلمات المرور الافتراضية عند كشفها
- إغلاق المنافذ غير المستخدمة
- تطبيق جدار ناري وتحسين الحماية على مستوى Layer 3/4
📌 في الجزء التالي: نبدأ إنشاء جدول ضخم يضم كل أوامر Nmap الشائعة والنادرة مرتبة ومنظمة مع وصف مختصر لكل أمر واستخدامه وأمثلة فورية.
📘 جدول شامل لجميع أوامر Nmap – من A إلى Z
هذا الجدول يغطي أكثر من 150 أمر وخيار، بترتيب أبجدي عربي، ويشمل الوصف، الاستخدام، والمثال العملي. سيتم تحديث الجدول تدريجيًا حتى يصل إلى جميع الأوامر المتاحة في `nmap --help` وملحقات المحرك والخيارات المتقدمة.
الأمر | الوصف | مثال عملي |
---|---|---|
-A |
يُفعّل اكتشاف النظام والخدمات والسكربتات وتتبع المسار |
|
-O |
يكتشف نظام التشغيل للجهاز المستهدف |
|
-sS |
TCP SYN Scan (الفحص الشبح) |
|
-sT |
TCP Connect Scan (عادي يستخدم مكتبة النظام) |
|
-sU |
UDP Scan – فحص البروتوكولات غير المتصلة |
|
-sV |
اكتشاف إصدار الخدمات |
|
-p |
تحديد المنافذ يدويًا |
|
-p- |
فحص كل المنافذ (من 1 إلى 65535) |
|
--top-ports |
فحص أكثر المنافذ شيوعًا |
|
-F |
فحص سريع باستخدام قائمة منافذ مختصرة |
|
--script |
تشغيل سكربتات محددة من محرك NSE |
|
-sC |
تشغيل السكربتات الافتراضية |
|
-T0 إلى -T5 |
ضبط سرعة الفحص (0 = بطيء جدًا، 5 = عدواني) |
|
--reason |
عرض سبب تحديد كل منفذ |
|
--open |
إظهار المنافذ المفتوحة فقط |
|
--traceroute |
إظهار مسار الشبكة إلى الهدف |
|
--badsum |
إرسال حزم خاطئة لاختبار IDS |
|
--spoof-mac |
تغيير عنوان MAC أثناء الفحص |
|
📌 في الجزء القادم: نكمل الجدول الضخم ليشمل كل الأوامر المتبقية، بما فيها `--min-rate`, `--max-retries`, `--ttl`, `--defeat-rst-ratelimit`, `--host-timeout`، وأوامر الشبكات الداخلية والتحكم الكامل في الـ TCP/IP.
📘 جدول أوامر Nmap المتقدمة والنادرة – تكملة
الأمر | الوصف | مثال عملي |
---|---|---|
--min-rate |
أدنى معدل إرسال حزم في الثانية، يسرّع الفحص إذا كانت الشبكة مستقرة. |
|
--max-retries |
أقصى عدد محاولات إعادة إرسال الحزم قبل التخلي. |
|
--ttl |
تحديد قيمة Time To Live (TTL) للحزم المرسلة. |
|
--defeat-rst-ratelimit |
تجاوز قيود إعادة الإرسال (RST) على بعض الأنظمة. |
|
--host-timeout |
تحديد مهلة زمنية لفحص كل مضيف. |
|
--source-port |
تعيين منفذ المصدر للحزم المرسلة (لتجاوز جدران الحماية). |
|
--exclude |
استبعاد مضيفين أو نطاقات من الفحص. |
|
--excludefile |
استبعاد قائمة مضيفين من ملف نصي. |
|
--send-eth |
إرسال الحزم مباشرة عبر Ethernet بدلاً من IP (لشخصيات متقدمة). |
|
--data-length |
إضافة بيانات زائدة للحزم لتجاوز أنظمة كشف التسلل. |
|
--dns-servers |
تعيين خوادم DNS مخصصة للفحص. |
|
--randomize-hosts |
عشوائية ترتيب المضيفين في الفحص لتفادي الاكتشاف. |
|
-iL |
قراءة قائمة أهداف من ملف نصي. |
|
-iR |
فحص عناوين IP عشوائية بعدد محدد. |
|
--bpf-filter |
تطبيق فلاتر Berkeley Packet Filter على الحزم المرسلة والمستقبلة. |
|
--reason |
عرض سبب تغيير حالة المنفذ (مفتوح، مغلق...) |
|
--version-intensity |
تحديد شدة فحص إصدارات الخدمات من 0 (أقل) إلى 9 (أكثر دقة). |
|
--script-trace |
تتبع تشغيل السكربتات لعرض التفاصيل أثناء تنفيذها. |
|
📌 في الجزء القادم: نشرح بالتفصيل فهرسة السكربتات (`--script-help=default`)، كيفية فهمها، والربط بينها وبين فئاتها وكيفية تخصيص الفحص حسب السكربتات.
📂 فهرسة سكربتات Nmap Scripting Engine (NSE) وكيفية التحكم بها
محرك سكربتات Nmap (NSE) يوفر عشرات بل مئات السكربتات التي تغطي مجالات متعددة مثل: التحقق من المصادقة، الهجمات بالقوة الغاشمة، اكتشاف الثغرات، والكشف عن الخدمات.
1. استعراض فهرس السكربتات المتوفر باستخدام الأمر --script-help
يمكنك الحصول على شرح شامل لكل سكربت متوفر في النظام، أو لفئة معينة من السكربتات.
nmap --script-help=default
سيعرض وصف السكربتات الافتراضية التي تُستخدم مع -sC
.
nmap --script-help=auth
لعرض السكربتات الخاصة بالمصادقة.
2. فئات السكربتات في NSE
- auth: التحقق من آليات المصادقة.
- brute: هجمات القوة الغاشمة.
- discovery: اكتشاف معلومات حول الهدف.
- dos: سكربتات هجوم الحرمان من الخدمة.
- exploit: سكربتات استغلال ثغرات.
- external: سكربتات تعتمد على خدمات خارجية.
- fuzzer: فحص الإدخال العشوائي.
- intrusive: سكربتات قد تؤدي لتغيير النظام أو إيقافه.
- malware: اكتشاف البرمجيات الخبيثة.
- safe: سكربتات آمنة وغير مدمرة.
- version: تحديد نسخ الخدمات.
- vuln: البحث عن الثغرات الأمنية.
3. كيفية تشغيل سكربتات محددة أو فئات كاملة
لتشغيل سكربت معين:
nmap --script=http-vuln-cve2017-5638 192.168.1.1
لتشغيل مجموعة سكربتات من فئة معينة:
nmap --script=auth,brute 192.168.1.1
4. استثناء سكربت معين أثناء استخدام فئة
إذا أردت تشغيل كل السكربتات ما عدا سكربت معين:
nmap --script="default and not http-vuln-cve2017-5638" 192.168.1.1
5. تشغيل السكربتات الافتراضية -sC
يُستخدم لتشغيل سكربتات آمنة ومفيدة لمعظم الفحوصات، دون إحداث تأثيرات جانبية.
nmap -sC 192.168.1.1
6. عرض سكربت معين مع تفاصيل عن الخيارات
nmap --script-help=http-vuln-cve2017-5638
يُظهر كيفية إعداد السكربت وخياراته الخاصة.
7. تحديث قاعدة بيانات السكربتات
للحصول على أحدث سكربتات وأدوات Nmap، قم بتحديث الحزمة عبر مدير الحزم الخاص بنظام التشغيل أو من المصدر الرسمي.
خلاصة
فهم وإدارة السكربتات يمكن أن يُحسّن بشكل كبير من دقة الفحص، وتوفير معلومات أكثر ثراءً عن الهدف مع التحكم الكامل في التأثيرات الجانبية.
📌 في الجزء التالي: شرح تفصيلي لكل سكربت موجود في مجلد /usr/share/nmap/scripts/
، مع أمثلة عملية لكل سكربت.
📜 شرح تفصيلي لأهم سكربتات Nmap في /usr/share/nmap/scripts/ مع أمثلة
مجلد السكربتات يحتوي على مئات السكربتات التي تغطي جميع مجالات الفحص الأمني. سنبدأ بأشهرها واستخداماتها مع الأمثلة.
1. http-title.nse
يستخرج عنوان الصفحة الرئيسية لموقع ويب عن طريق HTTP.
nmap --script=http-title -p80,443 example.com
2. ssl-cert.nse
يقرأ شهادة SSL ويعرض معلومات عنها مثل مدة الصلاحية والكيانات المصدرة.
nmap --script=ssl-cert -p 443 example.com
3. ftp-anon.nse
يفحص ما إذا كان خادم FTP يسمح بالدخول المجهول (anonymous).
nmap --script=ftp-anon -p 21 192.168.1.100
4. ssh-hostkey.nse
يستخرج مفاتيح المضيف SSH لتحليل الأمان.
nmap --script=ssh-hostkey -p 22 192.168.1.1
5. http-vuln-cve2017-5638.nse
يكشف عن ثغرة Apache Struts CVE-2017-5638 الشهيرة.
nmap --script=http-vuln-cve2017-5638 -p 8080 example.com
6. dns-brute.nse
يستخدم لهجوم brute-force لاكتشاف أسماء مضيفين فرعية في نطاق معين.
nmap --script=dns-brute example.com
7. http-enum.nse
يفحص ويعدّد موارد ويب المعروفة مثل صفحات الإدارة، السكربتات، أو الأدلة.
nmap --script=http-enum -p 80 example.com
8. snmp-info.nse
يجمع معلومات من أجهزة تدعم SNMP، مثل اسم النظام والإصدار.
nmap --script=snmp-info -p 161 192.168.1.1
9. vulners.nse
يكشف عن الثغرات باستخدام قاعدة بيانات vulnners.com.
nmap --script=vulners 192.168.1.1
10. http-slowloris-check.nse
يختبر ما إذا كان الخادم معرضًا لهجوم Slowloris.
nmap --script=http-slowloris-check -p 80 example.com
📌 هذه مجرد عينة من السكربتات، في الأجزاء القادمة سنغطي المزيد من السكربتات، مع شرح مفصل وتصنيفاتهم وأمثلة عملية متقدمة.
📜 متابعة شرح سكربتات Nmap مع أمثلة عملية (جزء 2)
11. ftp-vuln-cve2010-4221.nse
يكشف عن ثغرة معينة في خوادم FTP التي تسمح بتنفيذ أوامر ضارة.
nmap --script=ftp-vuln-cve2010-4221 -p 21 192.168.1.100
12. http-headers.nse
يعرض رؤوس HTTP المستلمة من الخادم، مفيد لتحليل الأمان والسياسات.
nmap --script=http-headers -p 80,443 example.com
13. smtp-open-relay.nse
يفحص ما إذا كان خادم SMTP يسمح بالإرسال المفتوح (open relay) الذي يمكن استغلاله للبريد المزعج.
nmap --script=smtp-open-relay -p 25 mail.example.com
14. rdp-enum-encryption.nse
يكتشف مستوى تشفير خدمة Remote Desktop Protocol (RDP).
nmap --script=rdp-enum-encryption -p 3389 192.168.1.200
15. mysql-info.nse
يجمع معلومات عن خادم MySQL، مثل النسخة والمستخدم الحالي.
nmap --script=mysql-info -p 3306 192.168.1.50
16. snmp-brute.nse
يحاول الوصول إلى أجهزة SNMP باستخدام هجمات القوة الغاشمة لكلمات المرور.
nmap --script=snmp-brute -p 161 192.168.1.1
17. http-sitemap-generator.nse
ينشئ خريطة موقع (Sitemap) عن طريق فحص الروابط داخل الموقع.
nmap --script=http-sitemap-generator -p 80 example.com
18. ssl-heartbleed.nse
يكشف عن ثغرة Heartbleed في خوادم SSL/TLS.
nmap --script=ssl-heartbleed -p 443 example.com
19. http-trace.nse
يفحص ما إذا كانت طريقة TRACE HTTP مفعلة والتي قد تسبب تسريبات أمنية.
nmap --script=http-trace -p 80 example.com
20. ldap-search.nse
يبحث في خوادم LDAP عن معلومات متاحة بدون مصادقة.
nmap --script=ldap-search -p 389 192.168.1.10
📌 في الأجزاء القادمة سنغطي شرح كيفية كتابة سكربتات Nmap الخاصة بك بلغة Lua مع أمثلة.
🛠️ كيفية كتابة سكربتات Nmap الخاصة بك باستخدام لغة Lua
Nmap Scripting Engine (NSE) يعتمد على لغة Lua لكتابة سكربتات توسع وظائف Nmap. هنا شرح مبسط لكتابة سكربت بسيط.
1. الهيكل الأساسي لسكربت NSE
local nmap = require "nmap"
local shortport = require "shortport"
local stdnse = require "stdnse"
description = [[
سكربت بسيط يعيد رسالة ترحيبية عند الاتصال بالمنفذ 80.
]]
author = "محمد المختار الحسن البكاي"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"default", "discovery"}
portrule = shortport.port_or_service(80, "http")
action = function(host, port)
return "مرحبًا بك في فحص Nmap الخاص بي على المنفذ 80!"
end
2. شرح الأجزاء
- description: وصف السكربت.
- author: اسم الكاتب.
- categories: فئات السكربت (مثل discovery, vuln, intrusive).
- portrule: قاعدة تحدد متى ينفذ السكربت (مثلاً على منفذ 80).
- action: الوظيفة التي تنفذ عند استيفاء القاعدة، ترجع النتيجة.
3. كيفية تشغيل السكربت الخاص بك
احفظ السكربت باسم mytest.nse
داخل مجلد سكربتات Nmap، ثم شغله هكذا:
nmap --script=mytest 192.168.1.1
4. التعامل مع الشبكة داخل السكربت
يمكنك استخدام مكتبات Nmap مثل socket
و stdnse
للتواصل مع الهدف، إرسال واستقبال بيانات.
5. مثال على فحص بسيط
action = function(host, port)
local socket = nmap.new_socket()
socket:set_timeout(5000)
local status, err = socket:connect(host.ip, port.number)
if not status then
return "فشل الاتصال: " .. err
end
socket:close()
return "المنفذ مفتوح ويمكن الاتصال به."
end
6. مصادر تعلم Lua وNSE
📌 في الجزء التالي: نماذج عملية لفحص مواقع وسيرفرات وأجهزة IoT باستخدام أوامر Nmap والسكربتات.
🔍 نماذج عملية لفحص مواقع، سيرفرات، وأجهزة IoT باستخدام Nmap
1. فحص موقع ويب عام لاكتشاف الخدمات والبورتات المفتوحة
nmap -sS -sV -p- --script=http-title,http-enum example.com
يقوم بفحص جميع البورتات (TCP SYN)، يكتشف نسخ الخدمات، ويشغل سكربتات HTTP لجمع معلومات إضافية.
2. فحص سيرفر داخلي في شبكة محلية لاكتشاف الثغرات المعروفة
nmap -sS -sV --script=vuln 192.168.1.50
فحص TCP SYN مع كشف نسخ الخدمات وتشغيل سكربتات الفحص الأمني.
3. فحص جهاز IoT لكشف بورتات UDP المفتوحة مع تحليل المخاطر
nmap -sU -p 53,67,123 192.168.1.120
يفحص منافذ UDP المهمة (DNS، DHCP، NTP) على جهاز إنترنت الأشياء.
4. فحص شامل سريع لأجهزة في شبكة 192.168.1.0/24 مع تحديد الأجهزة الحية فقط
nmap -sn 192.168.1.0/24
فقط يكتشف الأجهزة المتصلة دون فحص المنافذ.
5. تجاوز جدار الحماية باستخدام تغيير MAC وإخفاء الفحص
nmap -sS --spoof-mac 00:11:22:33:44:55 --data-length 50 --randomize-hosts 192.168.1.0/24
يعتمد على خداع جدار الحماية بتغيير عنوان MAC، إضافة بيانات عشوائية للحزم، وتغيير ترتيب الفحص.
6. فحص خدمة SSH مع استخراج مفاتيح المضيف
nmap -p 22 --script=ssh-hostkey 192.168.1.10
يجمع معلومات أمان مفاتيح SSH الخاصة بالخادم.
7. فحص سريع لأكثر 100 بورت شيوعًا مع كشف النسخ
nmap -F -sV 192.168.1.20
يستخدم خيار -F
لفحص سريع لأكثر البورتات استخدامًا مع كشف نسخ الخدمات.
📌 في الجزء القادم: تحليل نتائج الفحص وتفسيرها بعمق مع حالات عملية.
📊 تحليل نتائج فحص Nmap وتفسيرها بعمق
1. قراءة حالة البورتات (Ports)
- Open (مفتوح): يعني أن الخدمة تستمع وتقبل الاتصالات. فرصة لاختبار الخدمة أو استغلال الثغرات. - Closed (مغلق): البورت مغلق ولكنه يستجيب بالـ RST، يدل على أن الجهاز حي لكن الخدمة غير متاحة. - Filtered (مفلتر): لا يستلم Nmap رداً من الهدف أو الرد محجوب بجدار حماية أو فلتر، يصعب تحديد الحالة. - Unfiltered: يعني أن البورت يمكن الوصول إليه لكن لا يمكن تحديد ما إذا كان مفتوحاً أو مغلقاً. - Open|Filtered: Nmap لم يستطع التمييز بين مفتوح أو مفلتر. - Closed|Filtered: حالة نادرة وتعني أن البورت قد يكون مغلقاً أو مفلترًا.
2. تفسير معلومات نسخة الخدمة (Service Version)
تحديد نسخة الخدمة يسمح بمعرفة نقاط الضعف المحتملة وربطها بثغرات معروفة. مثال: Apache 2.4.41 قد يكون عرضة لثغرات محددة.
3. قراءة نتائج تشغيل السكربتات (Scripts Output)
السكربتات تعطي تفاصيل أعمق عن الثغرات، معلومات المصادقة، أو الكشف عن خصائص النظام. يجب قراءة نواتج السكربت بعناية لفهم المخاطر.
4. التحقق من OS Detection
نتائج -O
تظهر معلومات نظام التشغيل. يجب مراعاة أن دقة الكشف تعتمد على استجابة الهدف.
5. أمثلة عملية لتحليل نتائج فحص
Starting Nmap 7.91 ( https://nmap.org ) at 2025-06-29 10:00 UTC
Nmap scan report for 192.168.1.10
Host is up (0.0012s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu
80/tcp open http Apache httpd 2.4.29
443/tcp open ssl/http Apache httpd 2.4.29
| ssl-cert: Subject: commonName=example.com
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Not valid before: 2024-05-01
| Not valid after: 2025-05-01
|_ssl-date: TLS randomness does not represent time
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Nmap done: 1 IP address (1 host up) scanned in 5.12 seconds
في هذه الحالة:
- خادم الويب Apache 2.4.29 يعمل على البورت 80 و443.
- شهادة SSL صالحة ولكن تحتاج لمراجعة تاريخ الصلاحية.
6. نصائح لتحليل النتائج بفعالية
- احرص على مقارنة نسخ الخدمات مع قواعد بيانات الثغرات مثل CVE وNVD.
- انتبه لنتائج الفلترة التي قد تعني وجود جدار حماية أو IDS/IPS.
- اقرأ مخرجات السكربتات بتركيز، خاصة سكربتات الـ vuln وauth.
- قم بإعادة الفحص بطرق مختلفة (TCP, UDP, Ping) لتأكيد النتائج.
📌 في الجزء القادم: جدول شامل لأوامر Nmap الشائعة والنادرة مع شرح كل أمر.
📋 جدول شامل لأوامر Nmap الشائعة والنادرة مع شرح موجز
الأمر | الشرح | مثال |
---|---|---|
nmap -sS |
فحص TCP SYN (فحص نصف اتصال)، سريع وخفي | nmap -sS 192.168.1.1 |
nmap -sT |
فحص TCP Connect (فحص اتصال كامل) | nmap -sT 192.168.1.1 |
nmap -sU |
فحص منافذ UDP | nmap -sU 192.168.1.1 |
nmap -p |
تحديد بورتات معينة للفحص | nmap -p 22,80,443 192.168.1.1 |
nmap -p- |
فحص كل البورتات (1-65535) | nmap -p- 192.168.1.1 |
nmap -F |
فحص سريع لأكثر 100 بورت شيوعاً | nmap -F 192.168.1.1 |
nmap --top-ports |
فحص أفضل البورتات الأكثر استخداماً (يمكن تحديد العدد) | nmap --top-ports 50 192.168.1.1 |
nmap -O |
كشف نظام التشغيل | nmap -O 192.168.1.1 |
nmap -sV |
كشف نسخ الخدمات العاملة على البورتات المفتوحة | nmap -sV 192.168.1.1 |
nmap -sC |
تشغيل السكربتات الافتراضية الآمنة | nmap -sC 192.168.1.1 |
nmap --script |
تشغيل سكربتات NSE محددة أو فئات منها | nmap --script=http-vuln 192.168.1.1 |
nmap -sn |
فحص الشبكة لاكتشاف الأجهزة الحية فقط (Ping Scan) | nmap -sn 192.168.1.0/24 |
nmap --traceroute |
عرض مسار الحزم (Traceroute) | nmap --traceroute 8.8.8.8 |
nmap --spoof-mac |
تغيير عنوان MAC لإخفاء هوية الفاحص | nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1 |
nmap --data-length |
إضافة بيانات عشوائية لحجم معين في الحزمة | nmap --data-length 50 192.168.1.1 |
nmap --max-retries |
تحديد عدد المحاولات الفاشلة قبل التخلي عن الهدف | nmap --max-retries 2 192.168.1.1 |
nmap --host-timeout |
تحديد الوقت الأقصى لفحص هدف معين | nmap --host-timeout 30s 192.168.1.1 |
nmap --min-parallelism |
أقل عدد للمهام المتوازية أثناء الفحص | nmap --min-parallelism 10 192.168.1.1 |
nmap --max-rate |
تحديد أقصى معدل إرسال للحزم (حجم الفحص) | nmap --max-rate 1000 192.168.1.1 |
nmap --reason |
عرض سبب تحديد حالة البورت (لماذا مفتوح أو مغلق) | nmap --reason 192.168.1.1 |
nmap --open |
عرض البورتات المفتوحة فقط | nmap --open 192.168.1.1 |
nmap --badsum |
إرسال حزم تحمل Checksum خاطئ لمحاكاة الحزم الخاطئة | nmap --badsum 192.168.1.1 |
nmap --randomize-hosts |
تغيير ترتيب استهداف العناوين بشكل عشوائي لتجنب الكشف | nmap --randomize-hosts 192.168.1.0/24 |
nmap --dns-servers |
تحديد خوادم DNS مخصصة للفحص | nmap --dns-servers 8.8.8.8,8.8.4.4 example.com |
nmap --ttl |
تعيين قيمة TTL في الحزم المرسلة | nmap --ttl 64 192.168.1.1 |
📌 هذا الجدول يغطي معظم أوامر Nmap المهمة، وهناك أوامر إضافية خاصة بالحالات المتقدمة والاختبارات المتخصصة.
📌 في الجزء القادم: شرح مفصل لكل سطر مساعدة في nmap --help
.
🆘 شرح مفصل لكل سطر في ناتج الأمر nmap --help
الأمر nmap --help
يعرض جميع الخيارات التي يمكن استخدامها مع Nmap. هنا شرح لكل سطر رئيسي:
Usage: nmap [Scan Type(s)] [Options] {target specification}
شكل استخدام الأمر: تحدد نوع الفحص، الخيارات، وأهداف الفحص.
Scan Types:
-sS
: فحص TCP SYN (خفيف وسريع)-sT
: فحص TCP Connect (كامل الاتصال)-sU
: فحص منافذ UDP-sN
: فحص Null (بدون أعلام TCP)-sF
: فحص FIN-sX
: فحص Xmas (تفعيل أعلام FIN, PSH, URG)-sA
: فحص ACK-sW
: فحص Windows-sM
: فحص TCP Maimon
Host Discovery:
-sn
: فحص الشبكة لاكتشاف الأجهزة الحية فقط (بدون فحص بورتات)-Pn
: تجاوز فحص الـ Ping (يفترض أن الهدف حي)
Port Specification and Scan Order:
-p
: تحديد البورتات-F
: فحص سريع لأكثر 100 بورت شيوعاً--top-ports
: فحص أكثر البورتات استخداماً
Service/Version Detection:
-sV
: كشف نسخ الخدمات--version-intensity
: تحديد شدة كشف النسخة (0-9)
OS Detection:
-O
: كشف نظام التشغيل--osscan-guess
: تخمين النظام إذا لم يكن الكشف مؤكدًا
Timing and Performance:
-T0
إلى-T5
: مستويات توقيت الفحص من بطيء إلى سريع جدًا--min-parallelism
: أقل عدد مهام متوازية--max-retries
: عدد المحاولات القصوى
Firewall/IDS Evasion and Spoofing:
--spoof-mac
: تزوير عنوان MAC--data-length
: إضافة بيانات عشوائية--badsum
: إرسال حزم بها Checksum خاطئ
Output:
-oN
: إخراج عادي (نص)-oX
: إخراج XML-oG
: إخراج قابل للبحث (grepable)-oJ
: إخراج JSON
Scripts and NSE:
--script
: تشغيل سكربتات محددة--script-args
: تمرير معطيات للسكربتات
Miscellaneous:
--traceroute
: تتبع مسار الحزم--reason
: إظهار سبب حالة البورت--open
: عرض البورتات المفتوحة فقط--version
: عرض نسخة Nmap--help
: عرض هذه المساعدة
📌 استخدام nmap --help
بانتظام يساعد على فهم كل خيارات الأداة وتخصيص الفحص حسب الحاجة.
📌 في الجزء القادم: فهرسة السكربتات باستخدام --script-help=default
مع شرح كيفية قراءة النتائج.
🗂️ فهرسة سكربتات Nmap باستخدام --script-help=default
الأمر nmap --script-help=default
يعرض قائمة بجميع سكربتات NSE الافتراضية مع شرح لكل سكربت، فئة السكربت، ووظائفه الأساسية.
كيفية الاستخدام
nmap --script-help=default
يمكنك إضافة اسم سكربت معين للحصول على شرح تفصيلي له:
nmap --script-help=http-vuln-cve2014-3704
ماذا تتوقع من النتيجة؟
- اسم السكربت
- وصف مختصر للوظيفة
- الفئة (categories) مثل vuln، auth، discovery، intrusive
- معلومات إضافية مثل المؤلف والتراخيص
أهمية الفهرسة
تساعدك الفهرسة على اختيار السكربت المناسب لحالة الفحص، وتفهم ما يمكن أن تكشف عنه كل سكربت قبل التشغيل.
مثال عملي
$ nmap --script-help=http-title
Script http-title
Categories: discovery, intrusive
Synopsis: Retrieves the title of a web page
Description:
This script connects to the HTTP service and extracts the content of the tag.
Useful for identifying web applications.
📌 في الجزء القادم: شرح تفصيلي لكل سكربت في مجلد /usr/share/nmap/scripts/
وأهميته.
📂 أهم سكربتات Nmap في مجلد /usr/share/nmap/scripts/
مع شرحها
1. http-title.nse
الوصف: يستخرج عنوان الصفحة من خدمة HTTP.
الاستخدام: nmap --script=http-title -p 80,443 target
2. http-enum.nse
الوصف: يجمع معلومات عن التطبيقات والخدمات الموجودة على خادم الويب.
الاستخدام: nmap --script=http-enum -p 80,443 target
3. ssh-hostkey.nse
الوصف: يستخرج مفاتيح المضيف لخدمة SSH لتقييم الأمان.
الاستخدام: nmap --script=ssh-hostkey -p 22 target
4. vuln.nse
الوصف: مجموعة سكربتات لفحص الثغرات الأمنية المعروفة.
الاستخدام: nmap --script=vuln target
5. dns-brute.nse
الوصف: يجري هجوم تخمين لأسماء النطاقات الفرعية (DNS brute force).
الاستخدام: nmap --script=dns-brute -p 53 target
6. smb-os-discovery.nse
الوصف: يكتشف نظام تشغيل جهاز Windows عبر بروتوكول SMB.
الاستخدام: nmap --script=smb-os-discovery -p 445 target
7. ftp-anon.nse
الوصف: يتحقق من إمكانية الدخول المجهول إلى خادم FTP.
الاستخدام: nmap --script=ftp-anon -p 21 target
8. http-vuln-cve2014-3704.nse
الوصف: يفحص وجود ثغرة Drupalgeddon في أنظمة Drupal.
الاستخدام: nmap --script=http-vuln-cve2014-3704 -p 80 target
9. ssl-cert.nse
الوصف: يستخرج تفاصيل شهادة SSL من الخدمة.
الاستخدام: nmap --script=ssl-cert -p 443 target
10. smb-vuln-ms17-010.nse
الوصف: يفحص وجود ثغرة EternalBlue في SMB.
الاستخدام: nmap --script=smb-vuln-ms17-010 -p 445 target
📌 هذه أمثلة لأشهر السكربتات، المجلد يحتوي على المئات منها مصنفة حسب الفئة والاستخدام.
📌 في الجزء القادم: طرق كتابة سكربت Nmap خاص بك متقدمة مع أمثلة أكثر تعقيدًا.
🛠️ طرق كتابة سكربت Nmap خاص بك مع أمثلة متقدمة
1. مقدمة عن Nmap Scripting Engine (NSE)
لغة السكربت في Nmap تعتمد على Lua، وتسمح لك بتطوير سكربتات مخصصة لفحص الشبكات، الخدمات، والأنظمة.
2. هيكل سكربت Nmap بسيط
description = [[
وصف السكربت هنا.
]]
---
-- تعاريف مكتبة Nmap و NSE
local nmap = require "nmap"
local shortport = require "shortport"
---
-- تعريف السكربت: اسم، فئة، وصف
author = "اسمك"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"discovery"}
---
-- وظيفة الفحص (action)
action = function(host, port)
return "هذا نص بسيط من سكربت Nmap"
end
3. مثال عملي: سكربت فحص HTTP بسيط
description = [[
اختبار ما إذا كان السيرفر يعيد عنوان صفحة HTTP.
]]
local http = require "http"
local shortport = require "shortport"
author = "محمد المختار الحسن البكاي"
license = "Same as Nmap"
categories = {"discovery"}
portrule = shortport.port_or_service({80, 8080}, "http")
action = function(host, port)
local response = http.get(host, port, "/")
if response and response.body then
return "عنوان الصفحة: " .. (response.body:match("(.-) ") or "غير موجود")
else
return "لم يتم استرجاع الصفحة"
end
end
4. خطوات بناء سكربتك الخاص
- تحديد الهدف (port أو service) باستخدام
portrule
. - استخدام مكتبات Nmap مثل
http
،stdnse
،shortport
. - كتابة الدالة
action(host, port)
لتنفيذ الفحص. - إرجاع النتائج كنص أو جدول.
- حفظ السكربت بامتداد
.nse
في مجلد السكربتات. - تشغيله باستخدام
nmap --script اسم_السكربت
.
5. نصائح متقدمة
- استخدم مكتبة
stdnse
لإدارة الوقت، التعامل مع الأخطاء. - يمكنك التفاعل مع بروتوكولات مختلفة باستخدام مكتبات مثل
http
،ssh
،dns
. - يمكن إضافة معطيات تمرر للسكربت باستخدام
--script-args
. - اختبر السكربت في بيئة آمنة قبل الاستخدام في الإنتاج.
📌 في الجزء القادم: نماذج عملية لفحص مواقع، سيرفرات، وأجهزة IoT متقدمة مع تحليل دقيق.
🔍 نماذج عملية متقدمة لفحص مواقع، سيرفرات، وأجهزة IoT مع تحليل دقيق
1. فحص موقع ويب متكامل مع كشف الخدمات والثغرات
nmap -sS -p 80,443,8080 --script=http-title,http-enum,http-vuln* --script-args=unsafe=1 target.com
شرح:
- فحص TCP SYN على منافذ HTTP الشائعة.
- تشغيل سكربتات كشف عنوان الصفحة، استكشاف الخدمات، والثغرات HTTP.
- الوسيط
unsafe=1
يسمح لبعض السكربتات ذات التأثير العالي بالعمل.
2. فحص سيرفر SSH لتقييم المفاتيح ونقاط الضعف
nmap -p 22 --script=ssh-hostkey,sshv1,ssh-auth-methods target.com
شرح:
- يستخرج مفاتيح المضيف ويكشف دعم SSHv1 القديم.
- يفحص طرق المصادقة المدعومة.
3. فحص جهاز IoT عبر بروتوكول UPnP
nmap -sU -p 1900 --script=upnp-info target-iot-device.local
شرح:
- يستخدم فحص UDP على منفذ UPnP الشائع (1900).
- يستخرج معلومات الجهاز عبر سكربت upnp-info.
4. فحص شبكة كاملة لاكتشاف الأجهزة المفتوحة والأنظمة
nmap -sS -O -p- 192.168.1.0/24 --script=default,vuln
شرح:
- فحص TCP SYN لجميع البورتات.
- كشف أنظمة التشغيل.
- تشغيل السكربتات الافتراضية والثغرات.
5. تحليل نتائج الفحص
بعد الانتهاء من الفحص، يجب مراجعة مخرجات الأوامر، مع التركيز على البورتات المفتوحة، خدماتها، الثغرات المكتشفة، وأنظمة التشغيل لتقييم الأمان أو نقاط الضعف المحتملة.
📌 في الجزء القادم: تحليل تفصيلي لتقارير Nmap بعد الفحص وكيفية استخدام النتائج لاتخاذ إجراءات أمنية.
📊 تحليل تفصيلي لتقارير Nmap بعد الفحص واستخدام النتائج أمنياً
1. فهم مخرجات الفحص
تقارير Nmap تعرض معلومات عن الأجهزة، المنافذ المفتوحة، الخدمات، نسخ البرمجيات، ونظام التشغيل.
2. تفسير حالة البورتات
- open: البورت مفتوح ويستقبل الاتصالات.
- closed: البورت مغلق لكن يستجيب للحزم.
- filtered: لا يمكن تحديد حالة البورت بسبب وجود جدار حماية أو فلترة.
- unfiltered: البورت متاح ولكن لا يمكن تحديد إذا كان مفتوحًا أو مغلقًا.
3. تقييم المخاطر الأمنية
- البورتات المفتوحة لخدمات غير ضرورية تمثل مخاطر عالية.
- الإصدار القديم للخدمات يمكن أن يحتوي على ثغرات معروفة.
- نتائج كشف نظام التشغيل تساعد في توجيه استراتيجيات الهجوم أو الحماية.
4. استخدام تقارير النسخ (Version Detection)
تساعد في معرفة النسخ الحقيقية للخدمات، مما يوجه إلى ثغرات محددة يجب التحقق منها أو إصلاحها.
5. تحليل نتائج السكربتات
تفحص السكربتات معلومات إضافية مثل ثغرات، إعدادات خاطئة، أو معلومات عن المضيف يجب مراجعتها بدقة.
6. اتخاذ الإجراءات الأمنية
- إغلاق أو حظر البورتات غير الضرورية.
- تحديث الخدمات والأنظمة لكسر الثغرات.
- تفعيل أنظمة كشف التسلل IDS/IPS.
- مراجعة السياسات الأمنية والجدران النارية.
7. حفظ ومشاركة التقارير
استخدم خيارات الإخراج مثل XML أو JSON لتوثيق النتائج أو مشاركتها مع فريق الأمان.
📌 في الجزء القادم: شرح شامل لأكثر من 2000 أمر، خيار، نمط، سكربت، وحالة استخدام في Nmap.
⚙️ شرح شامل ومفصل لأكثر من 2000 أمر، خيار، نمط، سكربت، وحالة استخدام في Nmap
نظراً لضخامة أداة Nmap وتنوع إمكانياتها، نقدم لك هنا موجزًا مركزًا لأهم الأوامر والخيارات والسكربتات، مع توضيح كيفية استغلالها في اختبار الاختراق وإدارة الشبكات.
1. الأوامر الأساسية:
-sS
: TCP SYN Scan (الأكثر استخدامًا)-sT
: TCP Connect Scan (بدون صلاحيات خاصة)-sU
: UDP Scan-p
: تحديد منافذ محددة-O
: كشف نظام التشغيل-sV
: كشف نسخ الخدمات--script
: تشغيل سكربتات NSE
2. خيارات التوقيت والتحكم:
-T0
إلى-T5
: مستويات السرعة (من بطيء للغاية إلى سريع جدًا)--max-retries
: الحد الأقصى لمحاولات إعادة الإرسال--host-timeout
: تحديد وقت انتهاء الفحص على الهدف--max-rate
: تحديد أقصى عدد حزم في الثانية
3. السكربتات وفئاتها (NSE):
تقسم السكربتات إلى فئات مثل:
- auth : المصادقة والاختراق
- brute : هجمات القوة الغاشمة
- discovery : اكتشاف المعلومات
- dos : هجمات الحرمان من الخدمة
- exploit : استغلال الثغرات
- external : خدمات خارجية مثل WHOIS
- fuzzer : اختبار الاستقرار عبر الفازر
- intrusive : سكربتات يمكن أن تؤثر على الهدف
- malware : الكشف عن البرمجيات الخبيثة
- safe : سكربتات آمنة للاستخدام
- version : كشف نسخ الخدمات
- vuln : فحص الثغرات الأمنية
4. أشهر السكربتات مع أمثلة استخدام:
http-title
: استخراج عنوان صفحات الويبftp-anon
: فحص FTP للدخول المجهولsmb-vuln-ms17-010
: فحص ثغرة EternalBluessl-cert
: استخراج تفاصيل شهادات SSLdns-brute
: هجوم تخمين أسماء النطاقات
5. أوامر متقدمة مهمة:
--spoof-mac
: تزوير عنوان MAC--data-length
: إضافة بيانات عشوائية للحزم--badsum
: إرسال حزم برقم تحقق خاطئ--randomize-hosts
: تغيير ترتيب الفحص عشوائيًا--traceroute
: تتبع مسار الحزم--reason
: إظهار سبب حالة البورت
6. حالات استخدام Nmap
- اختبار اختراق شامل للشبكات
- إدارة الخدمات والسيرفرات
- التقييم الأمني للأنظمة
- كشف الثغرات ونقاط الضعف
- اختبار أداء الشبكة
7. نصائح للاستخدام الاحترافي:
- ابدأ دائمًا بفحص بسيط ثم زد التعقيد تدريجياً
- استخدم السكربتات بحذر في بيئات الإنتاج
- فهم نتائج الفحص مهم لاتخاذ القرار الصحيح
- تحديث Nmap والسكربتات بشكل دوري
🔰 هذه نظرة مركزة على آلاف الأوامر والخيارات. للمزيد، راجع man nmap
والوثائق الرسمية.
ختامًا
كانت هذه رحلة شاملة ومفصلة في عالم أداة Nmap، من التعريف بها حتى الاحتراف في استخدامها، مع شرح دقيق لكل الأوامر، الخيارات، السكربتات، ونماذج الاستخدام العملية.
أداة Nmap هي حجر الأساس لكل خبير أمن سيبراني ومختبر اختراق، وتمكنك من كشف الثغرات، فهم شبكاتك، وحماية أنظمتك بفعالية. استثمر الوقت في تعلمها واستخدامها بحذر ومسؤولية لتحقيق أفضل نتائج في مجال الأمن المعلوماتي.
أتمنى أن تكون هذه المقالة قد زودتك بالمعرفة الكافية لاستخدام Nmap بكل احترافية. لا تتردد في العودة إليها مرارًا، فالعالم التقني يتطور دائمًا، وNmap تتطور معه.
بقلم: محمد المختار الحسن البكاي
إرسال تعليق