مقدمه (خلاصه): Nmap — مخفف “Network Mapper” — ابزار شماره یک برای شناسایی میزبانها و سرویسها در شبکه است. این مقاله بهصورت محاورهای ولی تخصصی نوشته شده و شامل دستورها، توضیحات، خروجی نمونه و بهترین شیوهها برای انجام اسکنهای ایمن و مؤثر میباشد. هدف: ارائه راهنمای کاملاً عملی برای تست نفوذگران، مهندسان امنیت و تیمهای ردگیری حادثه.
فهرست سریع
نصب و آمادهسازی
اصول و مفاهیم پایه
اسکن TCP: SYN, Connect
اسکن UDP
شناسایی نسخه و OS
Timing، performance و stealth
NSE — اسکریپتهای Nmap
خروجی و گزارشدهی (XML، grepable، HTML)
سناریوهای واقعی و مثالها
نکات امنیتی، خطاهای رایج و ترفندها
توضیح: همیشه از نسخه جدید استفاده کنید چون دیتابیس fingerprint ها و اسکریپتهای NSE مرتباً بهروزرسانی میشوند.
1) نصب و آمادهسازی
برای macOS با Homebrew:
بررسی نسخه:
توضیح: همیشه از نسخه جدید استفاده کنید چون دیتابیس fingerprint ها و اسکریپتهای NSE مرتباً بهروزرسانی میشوند.
2) اصول و مفاهیم پایه
Host discovery (ping sweep): مشخص میکند که کدام آدرسها در شبکه زندهاند.
Port scan: بررسی باز/بسته/filtered بودن پورتها.
Service/version detection: شناسایی سرویس و نسخه آن.
OS detection: تلاش برای تعیین سیستمعامل با استفاده از TCP/IP fingerprinting.
NSE (Nmap Scripting Engine): اجرای اسکریپتهای آماده برای کشف آسیبپذیریها، brute-force، و موارد دیگر.
اصلیترین الگوهای اسکن:
-sS: TCP SYN scan (نیمه باز — stealth)-sT: TCP connect scan (وقتی دسترسی raw socket نداریم)-sU: UDP scan-sV: version detection-O: OS detection-A: ترکیبی از-sV -O --script=default(در کاربرد عملی مراقب باشید — سرویسها را برمیانگیزد)
3) اسکن TCP: SYN و Connect
خروجی نمونه (برش خورده):
Connect scan (-sT) — وقتی دسترسی root ندارید. کندتر و «صریحتر» دیده میشود.
نکات:
از
-Pnوقتی میدانید هاستها فایروال دارند و ping را drop میکنند استفاده کنید تا Nmap فرض نکند هاست down است.برای اسکن پورتهای خاص از
-pاستفاده کنید، مثلاً-p-برای همه پورتهای TCP (۱ تا ۶۵۵۳۵).
4) اسکن UDP
UDP قابل اطمینان نیست چون بسیاری از سرویسها پاسخ نمیدهند و ممکن است false positive زیاد داشته باشد.
خروجی نمونه (نمونهسازی):
توضیح: Nmap برای UDP، زمانی که هیچ پاسخی دریافت نکند، پورت را open|filtered گزارش میکند. افزایش --host-timeout و --max-retries در شبکههای شلوغ مفید است.
5) شناسایی نسخه و OS
شناسایی سرویس/نسخه (-sV)
نمونه خروجی:
OS detection (-O) — به root نیاز دارد و ممکن است با firewall ناکام بماند:
خروجی نمونه:
نکته: برای دقت بیشتر -A را تنها در محیط کنترلشده استفاده کنید چون باعث تولید ترافیک اضافی و ممکن است سرویسها را روشن کند:
6) Timing، عملکرد و stealth
Nmap مقادیر timing از -T0 تا -T5 دارد:
-T0: paranoid — خیلی آهسته، برای اجتناب از IDS-T1: sneaky-T2: polite-T3: normal-T4: aggressive — برای شبکههای محلی-T5: insane — فقط اگر خیلی مطمئنید
مثال برای اسکن آهسته بهخاطر IDS:
Rate limiting و نقل و انتقال بستهها: میتوانید از --scan-delay و --max-rate استفاده کنید تا سرعت پکتها را محدود کنید و از شناسایی جلوگیری کنید.
Fragmentation / decoys / source port spoofing:
-f: fragment packets (ممکن است برخی IPSها را فریب دهد اما کمتر مؤثر شده)--spoof-mac: تغییر MAC--data-length: اضافه کردن padding به بستهها-D decoy1,decoy2,ME: استفاده از آدرسهای فریبدهنده
هشدار: این تکنیکها قانونی پیچیدهای دارند و در محیطهای تولیدی میتوانند عواقب داشته باشند.
7) NSE — Nmap Scripting Engine
NSE قابلیت Nmap را بهشدت گسترش میدهد. اسکریپتها در پوشه scripts/ قرار دارند و بر اساس دستهبندی اجرا میشوند: auth, vuln, exploit, brute, default, discovery و …
اجرای اسکریپتهای پیشفرض:
اجرای یک اسکریپت خاص:
مثال: اجرای تعدادی اسکریپت مرتبط با SMB
نمونه خروجی (برش):
نکته مهم: برخی اسکریپتها میتوانند عملیات مخرب انجام دهند یا موجب کرش سرویس شوند — همیشه در محیط تست اجرا کنید.
8) خروجی و گزارشدهی
Nmap چند فرمت خروجی مفید دارد:
-oN: خروجی عادی-oG: grepable (مناسب برای اسکریپتها)-oX: XML (برای ابزارهای دیگر)-oA: همه فرمتها (prefix)
مثال:
این دستور فایلهای scans/office_scan.nmap, scans/office_scan.gnmap, scans/office_scan.xml میسازد.
برای تبدیل XML به گزارش انسانی:
ابزارها: ndiff برای مقایسه دو اسکن، nmap-converter برای تبدیل خروجی و metasploit برای وارد کردن نتایج — همه میتوانند به گردش کار pentest کمک کنند.
9) سناریوها و مثالهای واقعی (با خروجی نمونه)
سناریو A — اسکن شبکه محلی جهت شناسایی سرویسهای HTTP و SSH
خروجی sample (خلاصه):
سناریو B — کشف آسیبپذیریها با NSE
خروجی sample (برش):
سناریو C — اسکن stealth با decoys و فشردهسازی ترافیک
توضیح: خروجی اینجوری باعث میشود لاگها پراکنده و شناسایی منشا واقعی دشوارتر شود — اما اثر بخشی آن به مجموعه ابزار دفاعی مقابل بستگی دارد.
10) نکات امنیتی، خطاهای رایج و ترفندها
همیشه قبل از اسکن، مجوز قانونی بگیرید؛ اسکن بدون مجوز میتواند غیرقانونی باشد.
اگر اسکن کند اجرا میشود، از
--reasonو-vبرای دید بهتر از دلایل تشخیص استفاده کنید.اگر هدف فایروال دارد از
-Pnو سپس-sT/-sSبا تأخیر مناسب استفاده کنید.برای شبکههای بزرگ از
--min-parallelismو--max-parallelismاستفاده کنید تا بار شبکه را کنترل کنید.از
--script-argsبرای پارامتر دادن به اسکریپتها استفاده کنید، مثلاً:
برای ترکیب با Masscan (برای اسکن پورتهای بسیار گسترده):
Masscan برای شناسایی پورتهای باز سریع است. خروجی آن را به فایل تبدیل کنید.
پورتهای یافته را به Nmap پاس دهید تا شناسایی سرویس/نسخه و اسکریپت اجرا شود.
مثال انتقال خروجی masscan به nmap (خطفرمان سریع):
خاتمه و جمعبندی
Nmap یک ابزار همهکاره است؛ از کشف ابتدایی میزبان تا اجرای اسکریپتهای پیچیده برای کشف آسیبپذیریها. برای متخصصان امنیت، مهم است که:
با گزینههای اساسی (
-sS,-sU,-sV,-O) مسلط شوید.از NSE برای خودکارسازی کشف استفاده کنید اما محتاط باشید.
خروجیها را ذخیره، نسخهبندی و مقایسه کنید.
همیشه قوانین محیط تست/قانونی را رعایت کنید.

