در دنیای امنیت سایبری، قبل از اینکه یک متخصص امنیت بتواند وضعیت امنیتی یک شبکه را بررسی کند، باید ابتدا بداند چه سیستمهایی در شبکه وجود دارند، چه پورتهایی باز هستند و چه سرویسهایی روی آنها اجرا میشوند.
اینجاست که ابزار قدرتمند Nmap وارد میشود.
Nmap یکی از شناختهشدهترین ابزارهای Network Discovery و Security Auditing است که به متخصصان امنیت، مدیران شبکه و هکرهای اخلاقی کمک میکند ساختار قابل مشاهده یک شبکه را بررسی کنند.
نام Nmap از عبارت:
Network Mapper
گرفته شده است.
با Nmap میتوان اطلاعاتی مانند موارد زیر را بررسی کرد:
- سیستمهای فعال در شبکه
- پورتهای باز
- سرویسهای در حال اجرا
- نسخه برخی سرویسها
- سیستمعامل احتمالی
- وضعیت شبکه
- برخی اطلاعات مربوط به Firewall
- اسکریپتهای امنیتی NSE
اما یک نکته بسیار مهم:
Nmap برای اسکن سیستمهایی است که مالک آنها هستید یا اجازه بررسی آنها را دارید.
اسکن شبکههای دیگران بدون مجوز میتواند باعث ایجاد مشکل قانونی و امنیتی شود.
Nmap چه کاری انجام میدهد؟
به زبان ساده، Nmap مثل یک نقشهبردار برای شبکه است.
فرض کنید یک شبکه داریم:
192.168.1.0/24
ممکن است در این شبکه چندین دستگاه وجود داشته باشد:
192.168.1.1 Router
192.168.1.10 PC
192.168.1.20 Laptop
192.168.1.30 Server
192.168.1.40 Printer
Nmap میتواند به شما کمک کند بفهمید کدام Hostها در محدوده مورد بررسی قابل مشاهده هستند.
بعد میتوان روی سیستمهای مجاز، پورتها و سرویسهای قابل مشاهده را بررسی کرد.
Port چیست؟
قبل از یادگیری Nmap باید مفهوم Port را بدانیم.
هر سیستم متصل به شبکه میتواند سرویسهای مختلفی ارائه دهد.
برای اینکه برنامهها بتوانند ارتباط شبکهای داشته باشند، از Port استفاده میشود.
برخی پورتهای شناختهشده:
| Port | سرویس رایج |
|---|---|
| 21 | FTP |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP |
| 53 | DNS |
| 80 | HTTP |
| 110 | POP3 |
| 143 | IMAP |
| 443 | HTTPS |
| 3306 | MySQL |
| 3389 | RDP |
این جدول به معنی آسیبپذیر بودن این سرویسها نیست.
باز بودن یک Port بهتنهایی به معنی وجود آسیبپذیری نیست.
وضعیت Portها در Nmap
Nmap معمولاً وضعیت Portها را در چند دسته قرار میدهد.
Open
یعنی یک برنامه یا سرویس روی آن Port در حال Listen کردن است.
مثلاً:
80/tcp open http
یعنی Port 80 باز است و Nmap سرویس HTTP را تشخیص داده است.
Closed
یعنی سیستم قابل دسترسی است اما روی آن Port سرویس فعالی وجود ندارد.
80/tcp closed
Filtered
یعنی Nmap نمیتواند با اطمینان مشخص کند Port باز است یا بسته؛ معمولاً Firewall یا یک فیلتر شبکه مانع مشاهده دقیق میشود.
80/tcp filtered
نصب Nmap
Nmap روی سیستمعاملهای مختلف قابل استفاده است.
Kali Linux
در بسیاری از نسخههای Kali از قبل نصب شده است.
برای بررسی:
nmap --version
اگر نصب نبود:
sudo apt update
sudo apt install nmap
اولین اسکن Nmap
برای شروع بهتر است یک سیستم آزمایشگاهی خودتان داشته باشید.
مثلاً:
192.168.56.10
سادهترین دستور:
nmap 192.168.56.10
Nmap پورتهای متداول را بررسی میکند و نتیجهای شبیه این نشان میدهد:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
حالا میدانیم روی این سیستم، سرویسهایی روی Portهای 22، 80 و 443 قابل مشاهده هستند.
اسکن یک شبکه
اگر لابراتوار شما شبکهای مانند:
192.168.56.0/24
داشته باشد، میتوانید Host Discovery را روی محدوده مجاز انجام دهید:
nmap -sn 192.168.56.0/24
گزینه:
-sn
برای Host Discovery استفاده میشود و در این حالت هدف اصلی پیدا کردن Hostهای قابل مشاهده است، نه انجام Port Scan کامل.
خروجی ممکن است چیزی شبیه این باشد:
Nmap scan report for 192.168.56.1
Host is up
Nmap scan report for 192.168.56.10
Host is up
Nmap scan report for 192.168.56.20
Host is up
تفاوت Host Discovery و Port Scanning
این دو مفهوم را با هم اشتباه نگیرید.
Host Discovery
سؤال:
چه سیستمهایی در این محدوده قابل مشاهده هستند؟
Port Scanning
سؤال:
روی این سیستم چه Portهایی قابل مشاهده هستند؟
بنابراین معمولاً ابتدا میتوان تصویر کلی شبکه را به دست آورد و سپس سیستمهای موردنظر را در Scope مجاز بررسی کرد.
اسکن پورتهای مشخص
فرض کنیم فقط میخواهیم Portهای 22، 80 و 443 را بررسی کنیم:
nmap -p 22,80,443 192.168.56.10
این روش نسبت به اسکن گسترده، هدفمندتر است.
اسکن یک محدوده Port
مثلاً:
nmap -p 1-1000 192.168.56.10
یعنی Portهای 1 تا 1000 را بررسی کن.
البته تعداد Portهایی که باید بررسی شوند به هدف آزمایش و شرایط شبکه بستگی دارد.
اسکن تمام Portهای TCP
برای بررسی تمام محدوده Portهای TCP:
nmap -p- 192.168.56.10
گزینه:
-p-
به معنی بررسی کل محدوده Portهای TCP است.
این اسکن نسبت به اسکن پیشفرض میتواند زمان بیشتری مصرف کند.
تشخیص سرویسها
یکی از قابلیتهای بسیار مهم Nmap، Service Detection است.
با:
nmap -sV 192.168.56.10
Nmap تلاش میکند اطلاعات بیشتری درباره سرویسهای موجود به دست آورد.
مثلاً:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH
80/tcp open http Apache
اینجا دیگر فقط نمیدانیم Port باز است؛ بلکه Nmap تلاش کرده نوع و نسخه سرویس را نیز تشخیص دهد.
چرا Version Detection مهم است؟
فرض کنید در یک سیستم آزمایشگاهی این نتیجه را دریافت کنیم:
80/tcp open http Apache
متخصص امنیت میتواند از این اطلاعات برای مرحله بعدی ارزیابی استفاده کند.
مثلاً:
- سرویس را شناسایی کند.
- نسخه را بررسی کند.
- مستندات رسمی را مطالعه کند.
- آسیبپذیریهای شناختهشده را بررسی کند.
- در صورت وجود مجوز، تست امنیتی انجام دهد.
بنابراین Nmap خودش الزاماً آسیبپذیری را Exploit نمیکند؛ بلکه میتواند اطلاعات مرحله Recon و Scanning را فراهم کند.
تشخیص سیستمعامل
Nmap قابلیت OS Detection نیز دارد.
دستور:
sudo nmap -O 192.168.56.10
گزینه:
-O
برای OS Detection استفاده میشود.
Nmap با بررسی ویژگیهای پاسخ شبکه تلاش میکند سیستمعامل احتمالی را تشخیص دهد.
ممکن است نتیجهای مانند:
OS details:
Linux
نمایش داده شود.
تشخیص سیستمعامل همیشه قطعی نیست و ممکن است Nmap چند احتمال ارائه کند.
اسکن SYN
یکی از حالتهای شناختهشده Nmap، SYN Scan است:
sudo nmap -sS 192.168.56.10
این روش از رفتار TCP در فرآیند برقراری ارتباط استفاده میکند تا وضعیت Portها را بررسی کند.
در بسیاری از محیطهای تست نفوذ، SYN Scan یکی از روشهای رایج اسکن TCP است.
TCP Connect Scan
روش دیگر:
nmap -sT 192.168.56.10
در این حالت Nmap از اتصال TCP معمولی استفاده میکند.
اگر دسترسی لازم برای SYN Scan وجود نداشته باشد، TCP Connect Scan میتواند گزینه مناسبی باشد.
UDP Scan
TCP تنها پروتکل مورد استفاده نیست.
برای بررسی UDP میتوان از:
sudo nmap -sU 192.168.56.10
استفاده کرد.
UDP رفتار متفاوتی نسبت به TCP دارد و اسکن آن معمولاً میتواند کندتر باشد.
برخی سرویسهای مهم از UDP استفاده میکنند، بنابراین در ارزیابیهای مجاز نباید UDP را کاملاً نادیده گرفت.
اسکن ترکیبی
در یک آزمایشگاه میتوان چند قابلیت را با هم ترکیب کرد.
مثلاً:
sudo nmap -sS -sV -O 192.168.56.10
در اینجا:
-sS SYN Scan
-sV Service Detection
-O OS Detection
استفاده شده است.
NSE چیست؟
یکی از جذابترین قابلیتهای Nmap، سیستم اسکریپت آن است.
نام آن:
Nmap Scripting Engine
یا:
NSE
است.
NSE مجموعهای از Scriptهاست که قابلیتهای Nmap را گسترش میدهد.
مثلاً میتوان از Scriptها برای کارهایی مانند:
- Discovery
- Service Enumeration
- بررسی تنظیمات
- جمعآوری اطلاعات
- برخی بررسیهای امنیتی
استفاده کرد.
مشاهده Scriptهای Nmap
در Kali Linux معمولاً Scriptها در مسیر مشابه زیر قرار دارند:
ls /usr/share/nmap/scripts/
برای جستوجوی Scriptهای مرتبط:
ls /usr/share/nmap/scripts/ | grep http
اجرای Scriptهای NSE
برای مثال، در یک لابراتوار مجاز:
nmap --script http-title 192.168.56.10
این Script میتواند عنوان HTTP را بررسی کند.
یا:
nmap --script http-headers 192.168.56.10
برای بررسی Headerهای HTTP.
Script Category چیست؟
Scriptهای NSE در دستههای مختلف قرار دارند.
برخی دستههای شناختهشده:
auth
broadcast
brute
default
discovery
dos
exploit
external
fuzzer
intrusive
malware
safe
version
vuln
برای شروع بهتر است با Scriptهای safe و discovery در محیط آزمایشگاهی کار کنید.
دستههایی مانند exploit یا dos میتوانند رفتار تهاجمی داشته باشند و نباید روی سیستمهای بدون مجوز اجرا شوند.
اسکن با Scriptهای پیشفرض
گزینه:
-sC
مجموعهای از Scriptهای پیشفرض NSE را اجرا میکند.
مثلاً:
nmap -sC 192.168.56.10
گاهی ترکیب آن با Service Detection مفید است:
nmap -sC -sV 192.168.56.10
Nmap و تشخیص Firewall
Nmap میتواند در برخی شرایط سرنخهایی درباره وجود فیلترینگ شبکه ارائه کند.
مثلاً ممکن است Portها به شکل:
filtered
نمایش داده شوند.
اما نباید از یک نتیجه ساده نتیجه بگیریم که:
«حتماً Firewall وجود دارد.»
ممکن است عوامل دیگری نیز روی نتیجه تأثیر داشته باشند.
Timing در Nmap
Nmap دارای Templateهای Timing است.
از:
-T0
تا:
-T5
وجود دارند.
بهصورت مفهومی:
T0 → بسیار آهسته
T1 → آهسته
T2 → نسبتاً آهسته
T3 → عادی
T4 → سریع
T5 → بسیار سریع
برای لابراتوار معمولاً:
nmap -T4 192.168.56.10
میتواند مناسب باشد.
اما سرعت بیشتر همیشه بهتر نیست.
در شبکه واقعی، اسکن بسیار سریع میتواند:
- ترافیک بیشتری ایجاد کند
- روی تجهیزات فشار وارد کند
- هشدارهای امنیتی ایجاد کند
- باعث از دست رفتن برخی پاسخها شود
ذخیره نتیجه اسکن
اگر بخواهید نتایج را برای گزارش امنیتی ذخیره کنید، Nmap چند Format ارائه میدهد.
خروجی متنی
nmap 192.168.56.10 -oN scan.txt
خروجی XML
nmap 192.168.56.10 -oX scan.xml
خروجی قابل Import در برخی ابزارها
nmap 192.168.56.10 -oA scan
گزینه -oA چند نوع خروجی را با نام مشخص ذخیره میکند.
یک Workflow حرفهای Nmap
در یک ارزیابی مجاز میتوان Workflow زیر را دنبال کرد:
Target
↓
Host Discovery
↓
Port Scan
↓
Service Detection
↓
OS Detection
↓
NSE
↓
Manual Verification
↓
Risk Analysis
↓
Report
مثلاً:
مرحله 1 — پیدا کردن Host
nmap -sn 192.168.56.0/24
مرحله 2 — بررسی Portهای مشخص
nmap -p 22,80,443 192.168.56.10
مرحله 3 — تشخیص سرویس
nmap -sV 192.168.56.10
مرحله 4 — تشخیص سیستمعامل
sudo nmap -O 192.168.56.10
مرحله 5 — Scriptهای پیشفرض
nmap -sC 192.168.56.10
مرحله 6 — ذخیره گزارش
nmap -sC -sV 192.168.56.10 -oA scan-result
یک سناریوی کامل آزمایشگاهی
فرض کنیم یک Kali Linux و یک ماشین آزمایشگاهی داریم.
شبکه:
192.168.56.0/24
هدف:
192.168.56.10
ابتدا Host را بررسی میکنیم:
nmap -sn 192.168.56.10
اگر Host فعال بود، Port Scan را شروع میکنیم:
nmap 192.168.56.10
فرض کنیم نتیجه:
22/tcp open ssh
80/tcp open http
حالا Service Detection:
nmap -sV 192.168.56.10
بعد میتوانیم اطلاعات OS را بررسی کنیم:
sudo nmap -O 192.168.56.10
و در نهایت:
nmap -sC -sV 192.168.56.10
نتایج را ذخیره میکنیم:
nmap -sC -sV 192.168.56.10 -oA lab-scan
حالا یک گزارش اولیه از وضعیت شبکه داریم.
Nmap چه چیزی را به ما نمیگوید؟
یکی از اشتباهات رایج افراد تازهکار این است که فکر میکنند:
«Nmap اجرا کردم، پس سیستم را هک کردم.»
خیر.
Nmap عمدتاً ابزار:
Discovery + Scanning + Enumeration
است.
اگر Nmap بگوید:
80/tcp open http
این فقط یعنی یک سرویس HTTP قابل مشاهده است.
این نتیجه بهتنهایی نمیگوید:
- سایت آسیبپذیر است
- سرور هک شده
- اطلاعات قابل سرقت است
- Exploit وجود دارد
برای رسیدن به چنین نتایجی باید مراحل بررسی امنیتی دیگری انجام شود.
تفاوت Nmap با ابزارهای دیگر
| ابزار | کاربرد اصلی |
| Nmap | Network Discovery و Port Scanning |
| Wireshark | تحلیل Packet و Traffic |
| Burp Suite | تست امنیت Web Application |
| Nikto | بررسیهای امنیتی Web Server |
| WhatWeb | شناسایی فناوریهای وب |
| Metasploit | Framework تست نفوذ |
| Shodan | جستوجوی سرویسهای قابل مشاهده اینترنتی |
یک متخصص امنیت معمولاً از یک ابزار بهتنهایی استفاده نمیکند.
هر ابزار بخشی از تصویر را نشان میدهد.
20 دستور مهم Nmap
nmap 192.168.56.10
اسکن پایه.
nmap -sn 192.168.56.0/24
Host Discovery.
nmap -p 80 192.168.56.10
اسکن Port مشخص.
nmap -p 1-1000 192.168.56.10
اسکن محدوده Port.
nmap -p- 192.168.56.10
اسکن تمام Portهای TCP.
nmap -sV 192.168.56.10
تشخیص سرویس و نسخه.
sudo nmap -O 192.168.56.10
تشخیص سیستمعامل.
sudo nmap -sS 192.168.56.10
SYN Scan.
nmap -sT 192.168.56.10
TCP Connect Scan.
sudo nmap -sU 192.168.56.10
UDP Scan.
nmap -sC 192.168.56.10
اجرای Scriptهای پیشفرض.
nmap -sC -sV 192.168.56.10
Script + Service Detection.
nmap -T4 192.168.56.10
Timing سریعتر.
nmap -oN scan.txt 192.168.56.10
ذخیره خروجی متنی.
nmap -oX scan.xml 192.168.56.10
ذخیره XML.
nmap -oA scan 192.168.56.10
ذخیره چند نوع خروجی.
nmap --script http-title 192.168.56.10
اجرای Script مربوط به عنوان HTTP.
nmap --script http-headers 192.168.56.10
بررسی Headerهای HTTP.
nmap -Pn 192.168.56.10
اسکن با صرفنظر کردن از مرحله معمول Host Discovery.
nmap -v 192.168.56.10
نمایش اطلاعات بیشتر هنگام اجرای اسکن.
اشتباهات رایج در یادگیری Nmap
اشتباه اول: اجرای Nmap روی هر IP
این کار را انجام ندهید.
همیشه Scope و مجوز را مشخص کنید.
اشتباه دوم: تصور اینکه Open یعنی Vulnerable
یک Port باز الزاماً آسیبپذیر نیست.
اشتباه سوم: استفاده از اسکنهای سنگین بدون دلیل
اسکن تمام Portها، UDP و Scriptهای مختلف میتوانند زمان و منابع بیشتری مصرف کنند.
اشتباه چهارم: اعتماد کامل به Version Detection
تشخیص Version همیشه دقیق نیست و باید در مراحل بعدی بررسی شود.
اشتباه پنجم: نادیده گرفتن گزارش
هدف نهایی اسکن امنیتی فقط اجرای دستور نیست.
باید بتوانید نتیجه را تحلیل و مستند کنید.
تمرین پیشنهادی برای هنرجو
یک لابراتوار با دو ماشین مجازی بسازید:
Kali Linux
↓
Virtual Network
↓
Linux/Windows Lab Machine
سپس فقط روی ماشین آزمایشگاهی خودتان این مراحل را انجام دهید:
[ ] پیدا کردن Host
[ ] اسکن Portهای پیشفرض
[ ] اسکن Portهای 1 تا 1000
[ ] بررسی تمام TCP Portها
[ ] تشخیص Service
[ ] تشخیص OS
[ ] اجرای Scriptهای Safe
[ ] ذخیره نتیجه
[ ] تحلیل یافتهها
[ ] تهیه گزارش
در پایان باید بتوانید به این سؤال پاسخ دهید:
«این سیستم چه سرویسهایی را در اختیار شبکه قرار میدهد و آیا چیزی وجود دارد که نیاز به بررسی امنیتی بیشتری داشته باشد؟»
جمعبندی
Nmap یکی از مهمترین ابزارهایی است که یک متخصص امنیت سایبری باید یاد بگیرد.
اما حرفهای شدن در Nmap به حفظ کردن دستورها محدود نمیشود.
باید بتوانید:
شبکه را بشناسید → Hostها را پیدا کنید → Portها را بررسی کنید → سرویسها را شناسایی کنید → نتایج را تحلیل کنید → ریسکها را مستند کنید.
Nmap در واقع یکی از پلهای مهم بین Reconnaissance و Vulnerability Assessment است.
اگر OSINT به شما کمک میکند اطلاعات عمومی هدف را پیدا کنید، Nmap به شما کمک میکند ساختار قابل مشاهده شبکه و سرویسهای آن را بهتر بشناسید.
یک هکر اخلاقی قبل از اینکه به دنبال راه ورود باشد، اول باید بداند هدف چه چیزی را در معرض دید قرار داده است.

دیدگاه شما