
آموزش ابزار NMAP به همراه یک مثال در زبان پایتون
سلام خدمت دوستان و همراهان عزیز ما در سایت Etmad.ir .
در این آموزش ابزار NMAP را خدمت شما دوستان به صورت کامل معرفی خواهیم کرد.
مطالب این مقاله شامل :
- NMAP چیست ؟
- انواع اسکن در NMAP
- وضعیت پورت ها در خروجی NMAP
- آموزش تمام دستورات و سوییچ های NMAP
- نحوه ی استفاده از NMAP در Python
- نجوه ی جلوگیری از عملیات Port Scanning بر روی شبکه ی ما
NMAP چیست ؟
NMAP که مخفف عبارت Network Mapper میباشد یک اسکنر شبکه ی رایگان و منبع باز است که توسط فردی به نام Gordon Lyon ایجاد شده است.
NMAP برای کشف میزبان ها، بررسی وضعیت پورت ها و.... استفاده میشود و غالبا عملکرد بهینه، سوییچ های کاربردی و فراوان و نصب و استفاده ی راحت آن باعث محبوبیت آن در میان جوامع هکر ها و مدیران شبکه شده است.
ما با استفاده از این ابزار این امکان برایمان فراهم میشود تا به راحتی شبکه خود را به صورت حرفه ای اسکن کنیم و اشکالات آن را در اولین فرصت رفع نماییم.
انواع اسکن در NMAP
TCP SCAN
اسکن TCP معمولا برای یک Three-Way Handshake بین شما و یک سیستم هدف استفاده میشود، این اسکن عموما قابل شناسایی استزیرا شبکه میتواند فرستنده را ثبت کند و سیستم های امنیتی یا فایر وال ها را شناسایی کند.
UDP SCAN
اسکن UDP برای بررسی باز یا بسته بودن پورت های UDP و شنود درخواست های دریافتی هدف استفاده میشود و بر خلاف TCP شناسایی آن کمی سخت تر است، مدت زمان این اسکن مقداری طول میکشد زیرا سیستم به عنوان یک افدام احتیاطی واکنش خود به این درخواست هارا کاهش میدهد.
SYN SCAM
شکل دیگری از TCP میباشد. در این اسکن خود NMAP یک بسته ی SYN ایجاد میکند که اولین بسته برای ایجاد یک اتصال است، چیزی که در اینجا حائز اهمیت است این است که اتصال هرگز ایجاد نمیشود بلکه پاسخ به این بسته های خاص ساخته شده توسط NMAP برای تولید نتایج اسکن تجزیه و تحلیل میشود.
ARK SCAN
اسکن های ARK برای تشخیص اینکه آیا یک پورت فیلتر شده است یا خیر استفاده میشود.
FIN SCAN
یک اسکن مخفی مثل SYN اما به جای آن یک بسته ی TCP FIN ارسال میکند اکثر کامپیوتر ها در صورت دریافت این ورودی یک بسته ی RST را برمیگردانند.
NULL SCAN
این نوع اسکن، اسکن هایی بسیار مخفیانه هستند و کاری که انجام میدهند از نامشان مشخص است، در این اسکن تمام فیلد های header روی null تنظیم میشود و به طور کلی این یک بسته ی معمولی نیست و هدف نمیداند که چگونه باید با او برخورد کند.
XMAS SCAN
این اسکن نیز مانند NULL SCAN ماهیت مخفیانه دارد این اسکن برای دستکاری flag های PSH, URG و FIN که در TCP Header یافت میشود استفاده میشود.
IDLE SCAN
این اسکن مخفی ترین اسکن مورد بحث در این مقاله است زیرا بسته ها را از طریق یا سیستم دیگر که به اصطلاح به آن Zombie میگویند ارسال میکند.
این اسکن بیشتر برای حملات مخرب استفاده میشود.
RPC SCAN
RPC ویندوز پروتکلی میباشد که توسط سیستم عامل ویندوز مورد استفاده قرار میگیرد، این اسکن یک پیغام null rpc به تمام پورت های پیدا شده ی TCP و UDP میفرستد و اگر پورتی RPC باشد تشخیص میدهد.
وضعیت پورت ها در شبکه
باز |
open |
بسته | close |
فیلتر شده | Filtered |
فیلتر نشده | Unfiltered |
باز / فیلتر شده | Open / Filtered |
بسته / فیلتر شده | Close / Filtered |
پورت های باز : پورتی است که به صورت فعال آماده ی پاسخگویی میباشد.
پورت های بسته : پورتی که سرویسی ارائه نمیکند ولی توسط فایر وال فیلتر نشده است.
پورت های فیلتر شده : پورت هایی هستند که توسط برخی سرویس های محافظتی یا فایروال محافظت میشوند
پورت های فیلتر نشده : پورت هایی که اسکنر ما قادر به دسترسی به آن هست ولی به هر دلیل قادر به تشخیص باز یا بسته بودن آن نیست.
پورت های باز/فیلتر شده : یک پورت باز/فیلتر شده پورتی است که اسکنر ما هنگام اسکن دچار تردید شده که آیا این پورت باز است یا فیلتر شده.
پورت های بسته/فیلتر شده : یک پورت بسته/فیلتر شده پورتی است اسکنر ما هنگام اسکن دچار تردید شده که آیا این پورت بسته است یا فیلتر شده.
آموزش تمامی سوییچ های NMAP
برای اسکن یک شبکه در حالت کلی و یک جمع بندی ساده از دستور زیر استفاده میکنیم :
nmap 192.168.1.1
همچنین میتوانیم به شکل زیر مجموعه ای از شبکه ها را با این دستور اسکن کنیم :
nmap 192.168.1.1, 192.168.1.5, 192.168.1.20
برای اسکن تهاجمی و نسبتا کلی از یک شبکه از سوییچ -A استفاده میکنیم :
nmap -A 192.168.1.1
برای اسکن IPv6 یک شبکه با استفاده از سوییچ -6 به شکل زیر عمل میکنیم :
nmap -6 -v 192.168.1.1
در دستور بالا سوییچ -v مخفف عبارت verbose میباشد و بکار بردن آن به معنای درخواست یک خروجی با تمام توضیحات میباشد.
برای اسکن یک پورت، یک رنج خاص از پورت ها و تمامی پورت های یک شبکه به ترتیب به صورت زیر عمل میکنیم :
nmap -p 80 192.168.1.1
nmap -p 1-100 192.168.1.1
nmap -p * 192.168.1.1
برای اسکن سریع یک شبکه از سوییچ -F استفاده میکنیم.
همچنین میتوانیم برای حل مشکل ها هنگام اسکن از سوییچ -d به همراه یک مقدار از 0 الی 5 استفاده کنیم که 0 کمترین دقت و 5 بیشترین دقت را دارد، نحوه ی استفاده به این شکل میباشد :
nmap -F -d4 192.168.1.1
در دستور بالا ما از دو سوییچ به صورت ترکیبی استفاده کرده ایم.
به مدیران سیستم اجازه میدهد تا شبکههای خود را از طریق استفاده از بستههای IP fragmented اسکن کنند. این کار اساسا بستههای IP را به قسمتهای کوچکی تقسیم میکند و آنها را به سختی می توان از طریق فایروال های خارجی تشخیص داد.
nmap -f 192.168.1.1
برای TCP SCAN از سوییچ -sT استفاده میکنیم، به مثال زیر توجه کنید :
nmap -sT 192.168.1.1
برای UDP SCAN از سوییچ -sU استفاده میکنیم.
برای XMAS SCAN از سوییچ -sX استفاده میکنیم.
برای NULL SCAN از سوییچ -sN استفاده میکنیم.
برای SYN SCAN از سوییچ -sS استفاده میکنیم.
برای FIN SCAN از سوییچ -sF استفاده میکنیم.
برای RPC SCAN از سوییچ -RP استفاده میکنیم.
تمامی سوییچ های بالا را میتوانید به جای -sT در اخرین مثال جایگذاری و استفاده کنید.
همچنین میتوانیم مقدار تهاجمی یا آرام بودن و زمان یک اسکن را با استفاده از سوییچ -T0 الی -T5 خودمان تنظیم کنیم به این صورت که -T0 دارای کمترین زمان و کمترین جزئیات است و احتمال شناسایی آن نزدیک به صفر است و -T5 که دارای بیشترین تهاجم و بیشترین زمان است و اغلب اوقات توسط فایروال ها یا قوانین شبکه بلاک میشود، مقدار پیشفرض این سوییچ روی -T3 است.
nmap -sX -T4 192.168.1.1
یکی دیگر از متدهای مخفی کردن آدرس IP اسکن کننده، استفاده از این متد است. به طور خلاصه این متد به قربانی کردن IP آدرس های دیگر نیز شهرت دارد به این صورت که شما لیستی از اسکن کنندگان فراهم میکنید و شروع به اسکن میکنید. حال شبکه هدف که محافظت شده ام است متوجه اسکن میشود ولی نمیتواند متوجه مبدا این اسکن بشود.
nmap --top-ports 10 -D10.1.1.2, 10.1.1.4, 10.1.1.6 192.168.1.1
همچنین ما میتوانیم پورت های مهم یک شبکه را به راحتی با سوییچ --top-ports اسکن کنیم، به مثال زیر توجه کنید :
nmap --top-ports 10 192.168.1.1
یکی از قابلیت های فوق العاده ی NMAP این است که ما میتوانیم نتیجه ی اسکن شبکه را برای استفاده در زمانی دیگر در یک فایل ذخیره کنیم :
nmap -oX filename.xml -n 192.168.1.1
nmap -oG filename -n 192.168.1.1
nmap -oA filename -n 192.168.1.1
اگر به طور ناخواسته و به هر دلیلی اسکن nmap قطع شد، یعنی بر اثر رفتن برق، قطع شدن سیمی یا اتفاقی گزینه ctrl+c را فشردن. اسکن از اول بسیار سخت و ناراحت کننده به نظر میرسد، درحالی که اگر اطلاعات(log) هارا طبق توضیحات قبل ذخیره کرده باشید میتوانید اسکن را از جایی که قطع شده، شروع کنید.
nmap --resume filename
اگر یک مدیر سیستم باتجربه هستید، احتمال این وجود دارد که شما قبلا با traceroute کار کردهباشید. این یک ابزار UNIX است که مسیرها را به سمت دستگاهای هدف در یک شبکه نگاشت میکند. دستور زیر نشان میدهد که چگونه میتوانید از traceroute استفاده کنید.
nmap --traceroute 192.168.1.1
نحوه ی استفاده از NMAP در Python
from nmap import PortScanner
scanner = PortScanner()
IP = input("IP : ")
port_range = input("PORT RANGE (Example : 20-80) : ")
print("Start Scanning ... ")
scanner.scan(IP , ports=port_range)
open_tcp_ports = scanner[IP]["tcp"].keys()
print("------------")
for port in open_tcp_ports:
service_name = scanner[IP]["tcp"][port]["name"]
print ("{} - {} : OPEN".format(port , service_name))
input()
توضیح :
در ابتدا import های لازم را انجام داده ایم .
سپس شیء scanner را برای اسکن کردن پورت ها ساختیم . پس از آن IP و محدودهٔ پورت (port_range) را از کاربر دریافت کردیم .
سپس از شیء scanner و متود scan استفاده کردیم و IP و پورتی که کاربر وارد کرده بود را بهش دادیم تا اسکن را آغاز کند.
پس از آن تمام پورت های باز TCP رو گرفتیم و داخل متغییر open_tcp_ports ریختیم .
سپس با استفاده از یک حلقه ی for روی open_tcp_ports ، شماره و اسم سرویس اجرا شده روی هر پورت باز را برای کاربر نمایش دادیم .
راه های مقابله با Port Scanning
همیشه هنگامی که این عنوان مطرح شود بستن پورت های مورد نظر به فکر مدیران شبکه خطور میکند، اما قالبا راه های دیگری نیز برای جلوگیری از این عملیات هست.
نصب فایروال : فایروال به شما کمک میکند از دسترسی غیر مجاز به شبکه ی خود جلوگیری کنید همچنین برای شما این امکان را فراهم میکند تا پورت هایی را که در معرض دید هستند مدیریت کنید و قابلیت مشاهده ی آنها را کنترل کنید، فایروال ها همچنین میتوانند اسکن پورت در حال انجام را تشخیص داده و آن را در لحظه بلاک(Block) یا مسدود کنند.
TCP Wrapper : دسته بندی درخواست های پروتکل TCP میتواند به مدیران شبکه امکان انعطاف پذیری در اجازه یا رد دسترسی به سرور هارا بر اساس آدرس IP یا نام دامنه بدهد.
کشف حفره های موجود در شبکه : اگر اسکن پورت شبکه ی داخلی خود را انجام دهید متوجه میشوید تعداد پورت های بیش از حد مورد نیاز باز است، به صورت دوره ای سیستم خود را بررسی کنید تا نقاط ضعف موجود را که میتوانند مورد سوء استفاده قرار گیرند را پیدا کنید.

تا کنون نظری برای این مطلب ثبت نشده است. شما اولین نفر باشید
جهت ارسال نظر وارد اکانت خود شوید