Nmap چیست؟ آموزش اسکن شبکه از صفر تا حرفه‌ای

What is Nmap Network scanning training from zero to professional
0 دیدگاه
۱۴۰۵-۰۵-۲۴ ۱۱:۲۹:۰۵

در دنیای امنیت سایبری، قبل از اینکه یک متخصص امنیت بتواند وضعیت امنیتی یک شبکه را بررسی کند، باید ابتدا بداند چه سیستم‌هایی در شبکه وجود دارند، چه پورت‌هایی باز هستند و چه سرویس‌هایی روی آن‌ها اجرا می‌شوند.

اینجاست که ابزار قدرتمند 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

متخصص امنیت می‌تواند از این اطلاعات برای مرحله بعدی ارزیابی استفاده کند.

مثلاً:

  1. سرویس را شناسایی کند.
  2. نسخه را بررسی کند.
  3. مستندات رسمی را مطالعه کند.
  4. آسیب‌پذیری‌های شناخته‌شده را بررسی کند.
  5. در صورت وجود مجوز، تست امنیتی انجام دهد.

بنابراین 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 به شما کمک می‌کند ساختار قابل مشاهده شبکه و سرویس‌های آن را بهتر بشناسید.

یک هکر اخلاقی قبل از اینکه به دنبال راه ورود باشد، اول باید بداند هدف چه چیزی را در معرض دید قرار داده است.

دسته بندی‌ها:

آنچه در این مقاله میخوانید

دیدگاه شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *