در این مقاله به آموزش یکی از ابزارهای امنیتی، nmap میپردازیم. هدف این مقاله معرفی اجمالی و روش کار با nmap است. این ابزار پرکاربرد متن باز، اطلاعات سامانه هدف از جنس شبکه را در اختیار متخصص امنیت قرار میدهد و با استفاده از فرستادن پکت و پاسخهای آن به شناسایی شبکه میپردازد.
معرفی نرمافزار nmap:
نرمافزار nmap یک نرمافزار متن باز برای اسکن شبکه است که توسط Gordon Lyon خلق شده است. وظیفه این نرمافزار یافتن هاستها، سرویسها و کامپیوترها در داخل شبکه است و این کار را از طریق فرستادن پکتهایی روی شبکه و تحلیل پاسخهای آن انجام میدهد. از ویژگیهای nmap میتوان به جستجوی شبکه کامپیوتری اشاره کرد. این جستجو منجر به پیدا کردن هاستها، سرویسها و سیستمهای عامل میشود.
در ادامه با آموزش nmap همراه ما باشید.
دانلود و نصب nmap:
برای دانلود nmap میتوانید به سایت زیر مراجعه کنید و برای تمام پلتفرمها، این نرمافزار در دسترس:
https://nmap.org/download.html
استفاده از nmap:
در این آموزش از سیستم عامل kali استفاده شده است. بهترین راهنمای استفاده از این نرمافزار، help خود نرمافزار است در ترمینال kali دستور زیر را وارد میکنیم:
nmap --help
این دستور تمام حالتهای ممکن استفاده از nmap را نمایش میدهد. در help مثالهای استفاده از nmap آورده شده است:
Example:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
namp -v -iR 1000 -Pn -p 80
-v Increase verbosity level (use -vv or more for greater effect)
این دستور اطلاعات بیشتری از نتیجه عملیاتی شبکه را در اختیار کاربر قرار میدهد. برای مثال، مدت زمانی که nmap برای اسکن پورت صرف کرده را در خروجی نشان میدهد.
-A Enable OS detection, version detection, script scanning, and traceroute:
این دستور برای فعال کردن تشخیص سیستم عامل، تشخیص نسخه سیستم عامل، اسکن اسکریپت و traceroute است.
-sn Ping Scan - disable port scan
این ویژگی در nmap ، بعد از یافتن هاست، هاستهای در دسترس که در شبکه پاسخ میدهند را در خروجی نشان میدهد و اسکن پورتهای هاست را انجام نمیدهد.
-iR <num hosts>: Choose random targets
برای جستجوی سطح وسیع در اینترنت و تحقیقات استفاده میشود. برای مثال، اهداف را تصادفی انتخاب میکند. آرگومان <num hosts> تعداد IP کاربر را تولید میکند. IPهای نامطلوب مانند آدرسهای خصوصی، با چند هدف یا غیر اختصاصی را بررسی نمیکند. آرگومان صفر به معنی بررسی کل IPهای موجود است و زمانی برای توقف اسکن وجود ندارد. به خاطر داشته باشید که برخی از مدیران شبکه به اسکنهای غیر مجاز شبکه اعتراض و شکایت کنند.
-Pn Treat all hosts as online -- skip host discovery
این گزینه مرحله کشف هاست را حذف میکند. به طور معمول، nmap از این گزینه برای تعیین تشخیص ماشینهای فعال شبکه یا اسکنهای سنگینتر استفاده میکند. در حالت پیشفرض، nmap کاوش سنگین مانند اسکن پورت، تشخیصی نسخه یا نوع سیستم عامل هاستهای پیدا شده را انجام میدهد. حذف این گزینه با این دستور باعث ایجاد درخواست از تابعهای nmap برای اسکن هر IP مشخص شده میشود. برای مثال، اگر هدف IP آدرسهای کلاس B باشد (/۱۶)، تمام ۶۵۵۳۶ آدرسهای IP اسکن میشوند.
-p <port ranges>: Only scan specified ports
این گزینه پیش فرض را لغو میکند و پورت مورد نظر کاربر برای اسکن را مشخص میکند. هر پورت با یک عدد مشخص میشود و بازه پورتهای برای اسکن کردن با یک خط مشخص میشود برای مثال:
۱-۱۰۲۳
سازنده آموزش nmap سایتی را جهت انجام اسکن در اختیار کاربران داده است:
برای شروع از کد زیر استفاده میکنیم:
nmap scanme.nmap.org
نتایج کد بالا به شکل زیر است:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-21 03:14 EDT
Nmap scan report for nmap.scanme.org (45.33.32.156)
Host is up (0.24s latency).
Other addresses for nmap.scanme.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
rDNS record for 45.33.32.156: scanme.nmap.org
Not shown: 996 closed ports
PORT STATE SERVICE
۲۲/tcp open ssh
۸۰/tcp open http
۹۹۲۹/tcp open nping-echo
۳۱۳۳۷/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 22.11 seconds
اطلاعات که در دستور بالا است شامل latency سرور سایت که برابر است با ۰.24s است. nmap در حالت پیش فرض هزار پورت را بررسی میکند:
Not shown: 996 closed ports
۹۹۶ پورت بسته هستند و استفادهای از این پورتها نمیشود. خروجی زیر:
PORT STATE SERVICE
۲۲/tcp open ssh
۸۰/tcp open http
۹۹۲۹/tcp open nping-echo
۳۱۳۳۷/tcp open Elite
در قسمت Port شماره پورت و نوع اتصال آن را مشخص میگردد. در قسمت state برای پورتها شش حالت وجود دارد که شامل:
open:
یک نرمافزار سه حالت ارتباطی دارد که شامل TCP، UDP و SCTP است. پیدا کردن نوع اتصال هدف اولیه اسکن توسط nmap است. هدف یک متخصص امنیت از اسکن پورتهای open برای پیدا کردن ضعف سیستم است و هدف مدیر سیستم close کردن پورتها توسط firewall است، بدون اینکه جلوی اتصال کاربر احرازهویت شده را بگیرد. همچنین پورتهای باز برای اهداف غیرامنیتی مانند نشان دادن نوع سرویسها در این پورتها مهم هستند.
closed:
پورتهای close به پکتهای nmap پاسخ میدهند ولی پورتهای بسته شده اطلاعات زیادی به متخصص امنیت نمیدهد. از پورتهای بسته شده اطلاعاتی شامل پیدا کردن هاست، اسکن ping و تشخیص سیستم عامل استفاده میشود.
filtered:
nmap نمیتواند حالت فیلتر بودن یک پورت را تشخیص دهد و دلیل این موضوع جلوگیری کردن پروبهای nmap توسط firewall است. پورتهای فیلتر شده معمولا اطلاعاتی را به متخصص امنیت نمیدهد. این پورتها معمولا میتواند شامل اطلاعاتی مانند پیامهای خطای ICMP باشند، مانند type 3 code 13 (destination unreachable: communication administratively prohibited). ولی معمولا فیلترها جلوی بازگرداندن این نوع خطا را میگیرد.
unfiltered:
زمانی که پورتها در حالت Unfiltered هستند، به معنای در دسترس بودن پورت است ولی nmap نمیتواند تشخیص دهد که این پورت open یا close است. این موضوع را میتوان با اسکن ACK تشخیص داد. این اسکن از قوانین و طبقه بندی firewall برای اسکن کردن پورتها استفاده میکند. اسکنهای دیگری مانند Window scan، SYN scan یا FIN scan بسته یا باز بودن پورتهای فیلتر شده را تشخیص میدهند.
open|filtered:
این حالت زمانی بوجود میآید که nmap فیلتر یا باز بودن پورت را نمیتواند تشخیص دهد. این حالت زمانی بوجود میآید که پورت باز است ولی پاسخی به nmap نمیدهد. این نوع پورت پکتهای nmap و پاسخ به پکتهای nmap را drop میکند. اسکنهای UDP، IP protocols، FIN، NULL و Xmas پورتها را به این شکل دستهبندی میکنند.
closed|filtered
در این حالت آموزش nmap ، بسته یا فیلتر بودن پورت را نمیتواند تشخیص دهد. این حالت فقط برای اسکن IP ID idle استفاده میشود.
آخرین قسمت که بخش service است نوع سرویسی که پورت ارائه میکند، نشان داده میشود. در خروجی مثال گفته شده چهار حالت ssh، http، nping-echo و Elite وجود دارد.
امیدواریم از آموزش nmap توسط باگدشت در این صفحه بهره لازم را برده باشید.