اگر در مسیر یادگیری تست نفوذ و امنیت سایبری هستید، یکی از اولین ابزارهایی که باید بهخوبی یاد بگیرید Nmap است.
Nmap به شما کمک میکند بفهمید یک سیستم چه پورتهایی دارد، چه سرویسهایی روی آنها فعال هستند و در برخی موارد چه نسخهای از سرویس در حال اجراست.
در این آموزش، همه تمرینها را روی آزمایشگاه قبلی Kali Linux + Metasploitable 2 انجام میدهیم تا بدون آسیب به سیستمهای واقعی، با فرایند شناسایی در تست نفوذ آشنا شوید.
⚠️ هشدار: دستورات این آموزش را فقط روی سیستم شخصی، آزمایشگاه خودتان یا اهدافی که مجوز تست آنها را دارید اجرا کنید. اسکن بدون مجوز میتواند نقض قوانین یا سیاستهای شبکه باشد.
Nmap چیست؟
Nmap یا Network Mapper ابزاری متنباز برای کشف و بررسی شبکه است.
از Nmap میتوان برای مواردی مانند:
- شناسایی میزبانهای فعال
- پیدا کردن پورتهای باز
- تشخیص سرویسها
- تشخیص نسخه نرمافزارها
- اجرای اسکریپتهای NSE
- بررسی وضعیت شبکه
استفاده کرد.
در یک تست نفوذ، Nmap معمولاً یکی از ابزارهای مرحله Reconnaissance و Enumeration است.
Nmap در فرایند تست نفوذ
یک سناریوی ساده را تصور کنید:
هدف
↓
کشف میزبان
↓
اسکن پورتها
↓
تشخیص سرویس
↓
تشخیص نسخه
↓
بررسی آسیبپذیری
↓
اعتبارسنجی در محیط مجاز
بنابراین Nmap معمولاً قبل از ابزارهایی مانند Metasploit وارد فرایند میشود.
آزمایشگاه موردنیاز
برای این آموزش بهتر است همان آزمایشگاهی را که در آموزش قبلی ساختیم داشته باشید:
┌─────────────────────┐
│ Kali Linux │
│ Testing Machine │
│ 192.168.56.10 │
└──────────┬──────────┘
│
Host-Only LAN
│
┌──────────▼──────────┐
│ Metasploitable 2 │
│ Lab Target │
│ 192.168.56.20 │
└─────────────────────┘
IPهای بالا فقط نمونه هستند. IP واقعی ماشینهای خودتان را استفاده کنید.
مرحله اول: بررسی IP ماشین Kali
ترمینال Kali را باز کنید:
ip addr
یا:
ip a
به Interface شبکه نگاه کنید و آدرس IP ماشین Kali را پیدا کنید.
مرحله دوم: پیدا کردن IP هدف
در Metasploitable 2:
ifconfig
یا:
ip addr
فرض میکنیم IP هدف این باشد:
192.168.56.20
مرحله سوم: بررسی ارتباط
از Kali:
ping 192.168.56.20
اگر پاسخ دریافت کردید، ارتباط بین دو ماشین برقرار است.
برای توقف:
Ctrl + C
مرحله چهارم: اولین اسکن Nmap
حالا سادهترین اسکن را اجرا کنید:
nmap 192.168.56.20
Nmap پورتهای رایج را بررسی میکند و نتیجهای مشابه زیر ممکن است مشاهده کنید:
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql
پورت Open یعنی چه؟
در خروجی Nmap، وضعیت پورت اهمیت زیادی دارد.
Open
یعنی یک سرویس در حال Listen کردن روی آن پورت است.
Closed
یعنی سیستم قابل دسترسی است اما سرویس فعالی روی آن پورت وجود ندارد.
Filtered
یعنی Nmap نمیتواند با اطمینان مشخص کند پورت باز است یا بسته؛ معمولاً Firewall یا فیلتر شبکه در مسیر وجود دارد.
مرحله پنجم: تشخیص نسخه سرویسها
اسکن ساده فقط اطلاعات محدودی ارائه میدهد.
برای تشخیص نسخه سرویسها از:
nmap -sV 192.168.56.20
استفاده کنید.
مثلاً ممکن است نتیجه شامل اطلاعاتی مانند:
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH ...
80/tcp open http Apache ...
اکنون دیگر فقط نمیدانیم پورت 21 باز است؛ بلکه میدانیم چه سرویس و نسخهای روی آن اجرا میشود.
چرا Version Detection مهم است؟
فرض کنید فقط این را بدانیم:
21/tcp open ftp
اطلاعات زیادی نداریم.
اما اگر بدانیم:
21/tcp open ftp vsftpd 2.3.4
میتوانیم درباره همان نرمافزار و نسخه مشخص، تحقیقات امنیتی انجام دهیم.
این دقیقاً همان چیزی است که در مرحله Enumeration اهمیت دارد.
مرحله ششم: استفاده از Default Scripts
Nmap دارای مجموعهای از اسکریپتها با نام NSE — Nmap Scripting Engine است.
برای اجرای اسکریپتهای پیشفرض:
nmap -sC 192.168.56.20
ترکیب -sC با تشخیص نسخه نیز بسیار کاربردی است:
nmap -sC -sV 192.168.56.20
این یکی از اسکنهای مناسب برای شروع بررسی یک هدف آزمایشگاهی است.
مرحله هفتم: اسکن یک پورت خاص
لازم نیست همیشه تمام پورتها را اسکن کنید.
مثلاً برای بررسی HTTP:
nmap -p 80 192.168.56.20
برای چند پورت:
nmap -p 21,22,80,443 192.168.56.20
مرحله هشتم: اسکن یک محدوده پورت
برای مثال:
nmap -p 1-1000 192.168.56.20
این دستور پورتهای 1 تا 1000 را بررسی میکند.
برای تمام پورتهای TCP:
nmap -p- 192.168.56.20
اسکن تمام پورتها میتواند زمان بیشتری نسبت به اسکن پیشفرض نیاز داشته باشد.
مرحله نهم: تشخیص سیستمعامل
Nmap در برخی شرایط میتواند درباره سیستمعامل هدف نیز حدس بزند:
sudo nmap -O 192.168.56.20
در این روش Nmap از ویژگیهای پاسخ شبکه برای OS Detection استفاده میکند.
نتیجه همیشه قطعی نیست و باید بهعنوان تشخیص احتمالی در نظر گرفته شود.
مرحله دهم: اسکن جامعتر
برای آزمایشگاه خودمان میتوانیم از:
sudo nmap -A 192.168.56.20
استفاده کنیم.
گزینه -A مجموعهای از قابلیتهای تشخیصی مانند:
- OS Detection
- Version Detection
- Script Scanning
- Traceroute
را فعال میکند.
به دلیل گستردهتر بودن بررسیها، این اسکن نسبت به یک اسکن ساده اطلاعات بیشتری تولید میکند.
مرحله یازدهم: پیدا کردن میزبانهای فعال
فرض کنید شبکه آزمایشگاهی شما:
192.168.56.0/24
است.
برای بررسی اینکه چه میزبانهایی در این شبکه پاسخ میدهند:
nmap -sn 192.168.56.0/24
این روش بیشتر برای Host Discovery استفاده میشود و هدف اصلی آن شناسایی میزبانهای موجود است.
مرحله دوازدهم: بررسی سرویس HTTP
اگر پورت 80 باز باشد:
nmap -sV -p 80 192.168.56.20
ممکن است اطلاعاتی درباره Web Server دریافت کنید.
بعد میتوانید در مرورگر Kali آزمایش کنید:
http://192.168.56.20
در Metasploitable 2 معمولاً چند سرویس و برنامه آموزشی آسیبپذیر برای تمرین وجود دارد.
مرحله سیزدهم: NSE چیست؟
یکی از ویژگیهای قدرتمند Nmap، Nmap Scripting Engine است.
برای مشاهده دستهبندی اسکریپتها:
ls /usr/share/nmap/scripts/
برای مثال دستههایی مانند:
auth
broadcast
brute
default
discovery
dos
exploit
external
fuzzer
intrusive
malware
safe
version
vuln
وجود دارند.
اما نکته مهم:
همه اسکریپتها رفتار یکسانی ندارند و برخی میتوانند تهاجمی یا مخرب باشند. در آزمایشگاه خودتان قبل از اجرای آنها توضیحات اسکریپت را بررسی کنید.
مرحله چهاردهم: مشاهده اطلاعات یک Script
برای بررسی یک اسکریپت:
nmap --script-help <script-name>
مثلاً:
nmap --script-help http-title
قبل از اجرای اسکریپت، توضیحات آن را مطالعه کنید.
مرحله پانزدهم: اسکریپتهای آسیبپذیری
Nmap مجموعهای از اسکریپتهای مربوط به شناسایی آسیبپذیریها نیز دارد.
در آزمایشگاه میتوانید اسکریپتهای مربوط به دسته vuln را بررسی کنید.
مثلاً:
nmap --script vuln 192.168.56.20
این نوع اسکن ممکن است حجم زیادی از اطلاعات تولید کند.
بنابراین برای یادگیری بهتر، خروجی را سرویسبهسرویس تحلیل کنید و هر یافته را با مستندات مربوط به همان نرمافزار تطبیق دهید.
مرحله شانزدهم: ذخیره نتایج
در تست نفوذ حرفهای، نگهداری نتایج اهمیت زیادی دارد.
برای ذخیره خروجی معمولی:
nmap -sV 192.168.56.20 -oN scan.txt
برای فرمت XML:
nmap -sV 192.168.56.20 -oX scan.xml
و برای ذخیره چند فرمت خروجی:
nmap -sV 192.168.56.20 -oA metasploitable-scan
این کار برای مستندسازی و تهیه گزارش بسیار مفید است.
چند دستور مهم Nmap
| دستور | کاربرد |
|---|---|
nmap IP |
اسکن پایه |
nmap -sV IP |
تشخیص نسخه سرویس |
nmap -sC IP |
اجرای اسکریپتهای پیشفرض |
nmap -sC -sV IP |
اسکن اسکریپتی + تشخیص نسخه |
nmap -p 80 IP |
اسکن پورت مشخص |
nmap -p 1-1000 IP |
اسکن محدوده پورت |
nmap -p- IP |
اسکن تمام پورتهای TCP |
nmap -sn NETWORK |
کشف میزبانها |
sudo nmap -O IP |
تشخیص احتمالی سیستمعامل |
sudo nmap -A IP |
بررسی جامع |
nmap --script-help NAME |
مشاهده راهنمای Script |
-oN file.txt |
ذخیره خروجی متنی |
-oX file.xml |
ذخیره خروجی XML |
-oA name |
ذخیره خروجی در چند فرمت |
یک سناریوی واقعی در آزمایشگاه
حالا بیایید تمام مطالب را کنار هم قرار دهیم.
فرض کنید Metasploitable 2 این IP را دارد:
192.168.56.20
۱. اسکن اولیه
nmap 192.168.56.20
۲. تشخیص نسخهها
nmap -sV 192.168.56.20
۳. بررسی دقیقتر
nmap -sC -sV 192.168.56.20
۴. بررسی سیستمعامل
sudo nmap -O 192.168.56.20
۵. بررسی جامع در آزمایشگاه
sudo nmap -A 192.168.56.20
۶. ذخیره نتیجه
nmap -sC -sV 192.168.56.20 -oA metasploitable-recon
حالا یک مجموعه اطلاعات برای تحلیل در اختیار دارید.
🧠 تمرین حرفهای کاربران صفر و یک سایبر
حالا بدون اینکه مستقیماً سراغ Metasploit بروید، نتیجه اسکن را بررسی کنید.
یک جدول مانند زیر ایجاد کنید:
| Port | Service | Version | وضعیت | مرحله بعد |
|---|---|---|---|---|
| 21 | FTP | … | Open | بررسی نسخه |
| 22 | SSH | … | Open | بررسی تنظیمات |
| 80 | HTTP | … | Open | بررسی Web Server |
| 3306 | MySQL | … | Open | بررسی سرویس |
سپس برای هر سرویس پاسخ دهید:
۱. این سرویس چه کاری انجام میدهد؟
۲. آیا نسخه آن قدیمی است؟
۳. آیا آسیبپذیری شناختهشدهای برای آن وجود دارد؟
۴. آیا میتوان آن آسیبپذیری را در محیط آزمایشگاهی اعتبارسنجی کرد؟
این تمرین شما را از «اجرای دستور» به سمت تحلیل واقعی امنیتی میبرد.
🔥 Nmap و Metasploit چه ارتباطی دارند؟
در آموزش قبلی Metasploit را بررسی کردیم.
حالا ارتباط این دو ابزار را بهتر میتوانیم ببینیم:
Nmap
│
▼
شناسایی هدف
│
▼
پورتهای باز
│
▼
سرویس و نسخه
│
▼
تحلیل آسیبپذیری احتمالی
│
▼
Metasploit
│
▼
اعتبارسنجی در آزمایشگاه
یعنی Nmap جای Metasploit را نمیگیرد؛ بلکه اطلاعات مرحله شناسایی میتواند به تصمیمگیری در مراحل بعدی تست نفوذ کمک کند.
⚠️ اشتباهات رایج در یادگیری Nmap
❌ اسکن اینترنت بدون مجوز
برای تمرین، آزمایشگاه خودتان را بسازید.
❌ تصور اینکه Port Open یعنی سیستم هک شده
باز بودن پورت فقط نشان میدهد سرویسی روی آن در دسترس است.
❌ اعتماد کامل به تشخیص نسخه
Version Detection همیشه صددرصد دقیق نیست و باید با منابع دیگر بررسی شود.
❌ اجرای تمام Scriptها بدون شناخت
ابتدا مستندات Script را بخوانید.
❌ فقط حفظ کردن دستورات
هدف اصلی یادگیری Nmap، تحلیل خروجی است؛ نه حفظ کردن تعداد زیادی Flag.
جمعبندی
Nmap یکی از پایهایترین ابزارهایی است که یک متخصص امنیت سایبری باید با آن آشنا باشد.
با Nmap یاد میگیریم:
چه چیزی در شبکه وجود دارد → چه پورتی باز است → چه سرویسی اجرا میشود → چه نسخهای دارد → چه چیزی ارزش بررسی بیشتر دارد.
اگر این مراحل را روی Kali Linux و Metasploitable 2 تمرین کنید، بعد از مدتی میتوانید خروجی Nmap را مثل یک نقشه اولیه از سطح حمله سیستم تحلیل کنید.

دیدگاه شما