Nmap
(سرنام Network Mapper) یک ابزار بازمتن برای نظارتبر فعالیتهای شبکه و
مقاصد امنیتی است. Nmap طراحی شده است تا با نصب روی یک سیستم، بهسرعت یک
شبکه بزرگ را مورد بررسی قرار دهد. ماهیت باز متن مجوز (GPL) و همچنین
نگارش Nmap با ++C، C، پایتون و لوا اجازه اجرای راحت و روان برنامه را روی
سیستمعاملهای مختلف از ویندوز گرفته تا لینوکس و BSD و مک میدهد. اگرچه
Nmap برنامه کم حجمی است اما قابلیتها و ویژگیهای بسیار زیادی دارد که
در این گفتار بهصورت مختصر به برخی از آنها اشاره شده و مثالهایی نیز
ارائه میشود. نخستین نسخه این برنامه در سپتامبر ۱۹۹۷ توسط گوردون لیون
بهعنوان یک پایشگر پورت محض برای لینوکس و بدون شماره نسخه منتشر شد. با
گسترش محبوبیت و افزایش کاربران، Nmap تبدیل به یک محصول شد و یک رابط
گرافیکی به نام zeNmap نیز برای آن ساخته شد. ZeNmap از umit که در سالهای
۲۰۰۵ و ۲۰۰۶ در Summer of Code به پشتیبانی گوگل ساخته شد، منشعب شد.
جدیدترین نسخه Nmap در ۲۹ نوامبر ۲۰۱۲ منتشر شده که نسخه پایدار 25.6است.
Nmap میتواند اجزای شبکه را لیست کند، فهرستی از سرویسهای در حال اجرای
شبکه را به ما بدهد، فایروال مورد استفاده در شبکه را شناسایی کند، زمان
uptime سیستم را محاسبه کرده و سیستمعامل را بهدرستی آشکار کند. Nmap و اثرانگشت سیستمعامل Nmap
یک پایگاه داده بزرگ است که میتواند اثرانگشت سیستمعامل هدف را تفسیر
کرده و بهآسانی و با قابلیت اطمینان بالایی آن را شناسایی کند. همچنین
میتوان خروجی Nmap را برای تجزیه و تحلیلهای بیشتر یا بهعنوان یک مرجع
برای مراجعات بعدی ذخیره کرد. Nmap
با استفاده از قابلیت پویش پورت میتواند کشف کند چه پورتهایی (در هر دو
پروتکل TCP و UDP) در سیستمهای هدف باز هستند. بسته به سوئیچهایی
(آپشنها) که با Nmap استفاده میکنید، میتوان یک جستوجو به روش brute
force را برای پیدا کردن نقطه ضعف شبکه انجام داد. پس از پویش میتوان
پورتهایی که مورد نیاز نیستند را بست و از این طریق سازماندهی کرد که
قربانی بعدی یک هکر باشید یا خیر! |
بهطور خلاصه میتوان تعدادی از ویژگیهای Nmap را به این صورت لیست کرد:
انعطافپذیری:
برنامه
پویشگر شبکه Nmap از یک دوجین روش برای بررسی سیستمهای شبکه،
فایروالها، روترها و دیگر اجزای شبکه استفاده میکند. این روشها شامل
مکانیزمهای زیادی برای اسکن پورتهای TCP و UDP، شناسایی سیستمعامل،
تشخیص نسخه مورد استفاده و رفت و برگشت پینگ است و برای بررسی تمامی این
موارد باید مستندات را در سایت این پروژه مطالعه کرد.
قدرت:
Nmap
میتواند با استفاده از صدها هزار تکنیک اسکن و بررسی شبکه در شبکههای
بزرگ برای آشکارکردن حفرههای امنیتی و راههای ورود مورد استفاده قرار
گیرد.
پرتابل:
سیستمعاملهای
زیادی نظر لینوکس، ویندوز، فری بی.اس.دی، اپن بیاسدی، سولاریس، IRIX،
مک، HP-UX، Net BSD، Sun OS، آمیگا و بسیاری سیستمعاملهای دیگر از این
برنامه پشتیبانی میکنند.
سهولت استفاده:
اگرچه
Nmap مجموعهای از ویژگیهای پیشرفته برای کاربران و مدیران سیستم با
تجربه و حرفهای دارد اما دیگر علاقهمندان نیز میتوانند با استفاده از
رابطهای گرافیکی که برای این برنامه نوشته شده است با محیط و دستورهای آن
آشنا شوند تا درصورت نیاز به گزینهها و سوئیچهای بیشتر از نسخه اصلی
Nmap که خط فرمانی است استفاده کنند. Nmap با توجه به کاربران زیاد خود
نسخههای باینری برای هر سیستمعاملی دارد اما خورههای Nmap میتوانند
سورس کد این برنامه را دانلود کرده و خود اقدام به کامپایل آن کنند تا باز
هم امکان سفارشیسازی بیشتری برای آنها وجود داشته باشد و دستشان بیشتر
باز باشد.
رایگان:
بهعنوان
اهداف اولیه پروژه Nmap که کمک کوچکی به امنتر شدن اینترنت از طریق ایجاد
یک ابزار حرفهای برای مدیران سیستم و هکرها است، این برنامه بهصورت آزاد
و رایگان منتشر میشود.
مستندات کامل:
Nmap
با توجه به اهمیت و هدف خود در امنتر شدن شبکه دارای مستندات بهروز و
حتی کتابهای کاملی به زبانهای مختلف است که با مطالعه آنها میتوان به
دانش خود در زمینه امنتر کردن شبکه افزود.
پشتیبانی:
Nmap
در حالی بدون پشتیبانی مالی خاص و بدون گارانتی منتشر میشود که میتوان
لیستهای پستی این برنامه، کانال Nmap در freenode و بسیاری از انجمنهای
اینترنتی دیگر استفاده کرد.
محبوبیت:
روزانه
هزاران نفر Nmap را برای سیستمعاملهای مختلف دانلود میکنند. Nmap بین
۱۰ نرمافزار برتر بین ۳۰ هزار برنامه در freshmeat.net است. این میزان
محبوبیت با توجه به Nmap که توسط توسعهدهندگان داوطلب توسعه داده شده و
پشتیبانی میشود قابل توجه است.
چند مثال
سوئیچها
و گزینههای Nmap بسیار زیاد و گسترده هستند و به هیچ وجه نمیتوان در یک
یا دو مقاله این سوئیچها را بررسی کرد اما برای آشنایی با پویشهای عمومی
شبکه چند سوئیچ متداول که با Nmap استفاده میشوند بیان میشوند.
نکته!
برخی سوئیچهای این برنامه نیازمند سطح دسترسی root هستند و برخی دیگر را میتوان با سطح دسترسی کاربر عادی سیستم اجرا کرد.
1- سادهترین دستور
پس از تایپ Nmap در ترمینال میتوان از آدرس آیپی یا نام کامل دامنه سیستم استفاده کرد:
#Nmap 127.0.0.1
#Nmap localhost
#Namp google.com
اجرای این دستور با پویش ۱۰۰۰پورت متداول برای هر کدام از پروتکلهای TCP و UDP باعث نمایش پورتهای باز، نوع پروتکل انتقال و سرویسهایی که به این پورتها گوش میدهند میشود.
۲-خروجی مشروح و نمایش سیستمعامل و نسخه مورد استفاده:
#Nmap -A -v 4.2.2.4
#Nmap -A -v redhat.com
اگرچه بیشتر اوقات با اسکنکردن پورتهای
باز و از طریق شناسایی سرویسهای اختصاصی سیستمعاملهای مختلف هم میتوان
بهصورت تقریبی سیستمعامل سیستم هدف را معین کرد اما با سوئیچ A- بهصورت
کامل و دقیقتر و از طریق اثرانگشت سیستمعامل، Nmap سیستمعامل هدف را
مشخص میکند. همچنین به کمک سوئیچ v- میتوان اطلاعات مشروحتری نظیر نسخه
برنامههای مورد استفاده که به پورتهای باز گوش میدهند را نیز مشخص کرد.
سوئیچهای
فوق به اندازهای خروجی مشروح دارند که پیداکردن نام و نسخه سیستمعامل
در این آن همه خروجی خود یک کار زمانبر دیگر است! اما اگر میخواهید Nmap
نام سیستمعامل هدف را به شما بگوید بهطور خلاصه میتوانید از Nmap به
همراه این سوئیچ استفاده کنید:
#Nmap -O --osscan-guess 192.168.0.105
نمونه خروجی با اجرای دستور فوق به این صورت است:
3- پویش یک محدوده آیپی آدرس و پورتهای معین
جهت پویش چندین آیپی آدرس میتوان آنها را با یک فاصله از همدیگر جدا کرد:
#Nmap 192.168.0.3 192.168.0.5 yahoo.com server1.localdomain
اسکن سیستمهای موجود در شبکه با Host IDهای مختلف:
#Nmap 192.168.0.5,10,100.254
برای پویش یک محدوده آیپی آدرس در شبکه میتوان از دستور زیر به صورت نمونه استفاده کرد:
#Nmap 192.168.0.10-50
برای اسکن کردن کل سیستمهای موجود در زیر شبکه باید از آرگومانی مانند آنچه در دستور زیر استفاده شده است کمک گرفت:
#Nmap 192.168.0.0/24
همچنین برای اسکن کل سیستمهای موجود در شبکه میتوان از شیوه wildcard نیز استفاده کرد:
#Nmap 192.168.0.*
اگرچه سرعت اسکنکردن Nmap برای تمامی ۱۰۰۰ پورت متداول بسیار بالا است اما ممکن است در اثر وجود فایروال در شبکه سرعت اسکن این تعداد پورت پایین بیاید یا ممکن است مدیر سیستم نیازی به پویش تمامی پورتها نداشته و مایل باشد تا وضعیت پورتهای خاصی را بداند. برای این منظور میتوان از سوئیچ p- استفاده کرد و پورتهای مورد نظر برای اسکن را با کاما از یکدیگر جدا کرد:
#Nmap -p 25,80,110, 443,8080 192.168.0.1
برای جستوجوی یک محدوده پورت نیز همچنان میتوان از – استفاده کرد:
#Nmap -p 21-25,80,110, 443,8080 192.168.0.1
میتوان پویش پورتها را باز هم تخصصی کرد و برای هر کدام از پروتکلهای TCP و UDP پورتهای معینی را اسکن کرد:
#Nmap -p U:53,111,137, T:21-25,80,990 192.168.0.1
با استفاده از سوئیچهای sU- پورتهای باز برای پروتکل UDP و یکی از سوئیچهای sS- یا sF- یا sT- برای پورتهای باز TCP استفاده کرد و در پایان اگر میخواهید تمامی پورتهای موجود روی یک سیستم را اسکن کنید میتوان از سوئیچ p- به کمک * کمک گرفت:
#Nmap -p “*” 192.168.0.1
۴- اسکن پورتهای متداول
ممکن
است نیاز نباشد تا تمامی پورتها یا حتی ۱۰۰۰ پورت متداول سیستمهای موجود
در شبکه را پویش کرد. این کار باعث اتلاف زمان زیادی میشود و به احتمال
مدیر شبکه یا مدیر سیستمها میخواهد تعداد پورتهای متداول و پر استفاده
کمتری در هر سیستم را پویش کند. برای این منظور میتوان از سوئیچ
top-ports-- که یک عدد را به عنوان آرگومان میپذیرد استفاده کرد:
#Nmap --top-ports 5 10.0.0.10
دستور فوق ۵ پورت پراستفادهتر را در سیستم هدف اسکن میکند.
5- خواندن لیستی از آیپی آدرسها و میزبانهای شبکه از یک فایل:
#Nmap -iL ~ali/list.txt
میتوان در یک فایل متنی
آیپیها یا نامهای سیستم هدف را بهصورت هر نام در یک سطر وارد کرد تا
نیازی به وارد کردن هر دفعه این آیپیها یا نامها نباشد.
برخی اوقات
نیاز است تا سیستمهای شبکه را بهصورت اتفاقی از نظر بسته بودن پورتهایی
که مورد استفاده نیستند مورد پویش و بررسی قرار داد. سوئیچ iR- سیستمهای
موجود در شبکه را بهصورت اتفاقی اسکن میکند. Exclude-- هم سیستمهای
مشخصی را از اسکنکردن معاف میکند:
#Nmap -iR 10
دستور بالا ۱۰ هاست از شبکه را بهصورت اتفاقی پویش میکند. میتوان هاستهایی را که نیاز به پویش ندارند از لیست پویش استثنا کرد:
#Nmap -iR 10 --exclude 192.168.0.4, 192.168.0.50, 192.168.0.65
یا حتی لیستی از سیستمهای استثنا را در فایل استثنا وارد کرد:
#Nmap -iR 5 --excludefile /home/ali/exclude.txt
۶- پویش فایروال
تقریباً
تمامی شبکههای به وسیله فایروال محافظت میشوند بنابراین بهراحتی
نمیتوان سیستمهای موجود در آن شبکه را اسکن کرد. پس بهتر است ابتدا
فایروال شبکه را اسکن کرد:
#Nmap -sA 192.168.0.10
این اسکن متفاوت از سایر اسکن
های شبکه توسط Nmap است. این سوئیچ پورتهای باز یا بسته یک هاست را اسکن
نمیکند به کمک سوئیچ sA- در Nmap میتوان قواعد تعریف شده برای یک
فایروال، وضعیت آن و پورتهایی را که فیلتر میکند مشخص کرد.
۷- پویش سیستمهای با آیپی نسخه ۶
اگرچه
هنوز آیپیهای نسخه۴ بهطور گسترده مورد استفاده قرار میگیرند و از
آیپیهای نسخه ۶ استفاده نمیشود اما برای موارد تحقیقاتی و آزمایشی
میتوان سیستمهای با آیپی نسخه ۶ را نیز اسکن کرد:
#Nmap -6 server1.lab.localdomain
#Nmap -6 2607:f0d0:1002:51::4
#Nmap -6 -v -A 2607:f0d0:1002:51::4
۸- پویش سریع
اگرچه nmap به اندازه کافی سریع و خوب است اما با سوئیچ F- میتوان سرعت اسکن را باز هم افزایش داد:
#Nmap -F localhost
۹- مشاهده تمامی بستههای ارسال و دریافت شده
برای
یک اسکن بستههای بسیار زیادی ارسال و دریافت میشوند اما فقط نتیجه آن
توسط Nmap نمایش داده میشود. اگر مایل هستید تا بستههای ارسال شده و
دریافتشده را نیز مشاهده کنید میتوان از گزینه packet-trace-- استفاده
کرد:
#Nmap --packet-trace localhost.localdomain
10- ذخیره خروجی
Nmap همانگونه که میتواند لیستی از سیستمهای هدف را از ورودی بخواند به همان راحتی میتواند خروجی را در یک فایل متنی ذخیره کند:
#Nmap linux-server > /root/server-open-ports.txt
#Nmap -oN /root/server-open-ports 192.168.0.1
۱۱- مشتاق استفاده از خط فرمان نیستید؟
اگر
اشتیاق زیادی به استفاده از خط فرمان برای کار با Nmap ندارید میتوانید
از رابطگرافیکی آن یعنی zeNmap استفاده کنید.اگرچه zeNmap برای توزیعهای
لینوکسی فراوان و همچنین مایکروسافت ویندوز و خانواده BSD وجود دارد اما
اگر از فدورا استفاده میکنید میتوانید umit را نیز امتحان کنید.