Nmap مخفف Network Mapper میباشد و یك نرم افزار كاربردی برای جستوجوی شبكه یا ممیزی امنیتی شبكه به شمار میآید. این نرمافزار به گونهای طراحی شده كه بتواند شبكههای بزرگ را پویش كند. Nmap از ip packetهای خام به صورت منحصربه فرد استفاده میكند تا تعیین كند چه سیستمهایی (hosts) بر روی شبكه در دسترس میباشند، چه سرویسهایی ports ارائه میكنند، چه سیستم عاملهایی (به همراه نسخه سیستم عامل) بر روی آنها در حال اجرا میباشد، چه نوع packet filterها یا فایروالهایی مورد استفاده قرار گرفتهاند. Nmap بر روی اكثر رایانهها، هم گرافیكی و هم كنسولها قابل استفاده است. Nmap یك نرمافزار مجانی است كه به همراه كدهای آن تحت مجوز زیبای GNU GPL در دسترس میباشد.
شاید nmap بهترین و در عین حال پركاربردترین نرمافزار پویشگر پورت باشد. در صورتی كه یك مدیر شبكه یا یك ممیز امنیت میباشید، بدون شك با این نرمافزار آشنا هستید و از آن استفاده میكنید. این نرمافزار هر چیز كه شما از یك پویشگر پورت میخواهید را با خود به همراه دارد. در صورت استفاده درست و رعایت نكات ظریف، میتوان نتایج بسیار بهتری گرفت. در اینجا به معرفی نكات و برخی از اشتباهات در به كار گیری Nmap اشاره میكنم كه دانستن آن فرآیند پویش را بهبود میبخشد.
1 – سیستم عامل مناسب
Nmap قابلیت شناسایی و پویش اكثر سیستمها را داراست. این پویشگر بر روی انواع سیستم عاملها نصب میشود، اما در برخی شرایط ایجاد شده از سوی سیستم عامل، فرآیند پویش كند یا با خطای بالا انجام میشود. این نكته در برخی موارد منجر به مختل شدن پارهای از قابلیتهای این پویشگر میگردد. در این حال استفاده از محیط ویندوز به علت محدودیتهای موجود در سطح درایورها و ساختار تولید پكتها توصیه نمیشود. این مشكل علیرغم تولید وصلههای متعدد بر روی ویندوز همچنان وجود دارد و این پویشگر تحت ویندوز هرگز به خوبی و دقت نسخههای لینوكسی آن كار نكرده است.
2 – لینك ارتباطی مناسب
Nmapبا ارتباطات مبتنی بر PPPoE و در برخی موارد Dial up مشكل دارد و این مشكل در سیستم عامل ویندوز جدیتر میباشد. در این نوع از ارتباطات، انواع قابلیتها مانند انواع Ping Scan و تولید بستههای سفارشی شده ICMP,IGMP,TCP,..) تحت ویندوز) مختل میشود. راهكاری كه میتوان برای جلوگیری از این مشكل پیشنهاد داد، استفاده از پارامترهای “–sT –P0 “میباشد. عدم تولید مناسب بستهها توسط Nmap ادامه فرآیند پویش در كشف سیستمهای جدید را با مشكل روبرو میكند.
3 – فایروال
در خیلی از موارد شما با شبكههایی مواجه میشوید كه توسط یك فایروال محافظت میشود. در این صورت POLICY فایروالها نتایج پویش شما را كاهش و یا در خیلی از موارد پویش را غیر ممكن میسازند. در این صورت رعایت نكات زیر در برخی از موارد به شما كمك خواهد كرد. · استفاده از پارامتر “sW-“؛ این اسكن مانند ACK است با این تفاوت كه از TCP window size برای تشخیص پورتهای باز، فیلتر شده یا نشده، استفاده میكند. البته لینوكس و اكثر فایروالهای جدید در مقابل این نوع اسكن مشكلی ندارند ولی در برخی از موارد در مواجه با فایروالهای قدیمی كارگشا میباشد.
· استفاده از یك Source-port پورت مورد اعتماد فایروال، استفاده از پارامتر–source-port با مقدار 53در بسیاری از موارد مؤثر میباشد.
· عدم استفاده از پورت اسكن به صورت سریال. ( استفاده نكردن از پارامتر –r )
· استفاده از روش قابل اطمینانتر TCP Connect با استفاده از پارامتر –sT به جای روش پیش فرض اسكن -sS یا همان .(Syn Scan)
· استفاده از سرعت پایین (or 2 -T 1) در انجام اسكن میتواند باعث عدم شناسایی توسط فایروال شود.
4 – انتخاب روش مناسب
Nmapبه تمام روشهای ممكن میتواند سیستمهای زنده (Alive) را شناسایی كند. شما سه راه برای شناسایی سیستمها دارید ICMP Scan , Protocol Scan Syn/Ack Scan) ). انتخاب روش درست در اكثر موارد دقت و سرعت اسكن را تا حد زیادی افزایش میدهد. بسته به شبكهای كه میخواهید شناسایی كنید، هر یك از این روشها میتوانند به شما كمك كنند. در صورتی كه شبكه شما به برخی از بستههای ICMP پاسخ میدهد، استفاده از روش ICMP Discovery در ابتدا به شما توصیه میشود. همچنین با پارامترهای “–PE –PP –PM ” میتوان هر سه حالت Echo , Time Stamp و NetMask Request برای درخواستهای ICMP را بررسی نمود.
روش دوم یا Syn/Ack Scan؛ در صورتی كه شبكه هدف توسط یك فایروال Stateful حفاظت میشود، استفاده از پارامتر”-PS” و اگر نوع فایروال Stateless میباشد، استفاده از پارامتر “-PA” انتخاب مناسبی میباشد. این دو پارامتر نیاز به یك شماره پورت برای ارسال بسته Syn/Ack دارند. رایجترین پورتها برای این منظور 21,25,53,80,443,3389 هستند. همچنین میتوان یك یا چند پورت مختلف همراه با چند مدل مختلف اسكن را در یك پویش استفاده كرد.
“nmap –sP –PE –PE –PM –PS 80,22,23,53 –PA 80,22,25,3389 {hosts}”
به صورت پیش فرض و در صورت امكان، استفاده از ARP Scanning بهترین گزینه است. نكتهای دیگر در این مبحث، استفاده از پارامتر “-P0″میباشد. در صورت اطمینان از زنده بودن سیستم مورد نظر بهتر است اصلاً وارد فاز شناسایی نشوید و همین جا به این فرآیند پایان داده و نرمافزار را با فرض زنده بودن سیستم روانه پویش پورتها كنید!
5 – سرعت اسكن
سرعت nmap موردی است كه در خیلی از موارد بد تعبیر شده و جدی گرفته نمیشود. این موضوع اگر جدی گرفته نشود موجب از دست دادن سیستمها و پورتهای زیادی میگردد. همچنین در صورت وجود مكانیزمهای امنیتی حساس، بالا بردن سرعت اسكن میتواند موجب سلب دسترسی آدرس شما به شبكه هدف گردد.
سرعت در كندترین حالت “-T 1” و در تندترین حالت “-T 5” میباشد. مسلماً سرعت بالای اسكن زمان كمتری برای انتظار دریافت پاسخ از سیستمهای كند یا شبكههای پر ترافیك صرف میكند و شما برخی از سیستمها و پورتهای باز را از دست خواهید داد.
اگر قصد پویش شبكههای بزرگ در زمان نسبتاً كمی را دارید به جای افزایش سرعت و كم كردن دقت نرمافزار، بهتر است از اسكن موازی سیستمها استفاده كنید. این كار با افزایش تعداد پویشهای موازی (–min-parallelism و –max-parallelism ) میتواند نتیجهای بهتر و شاید سریعتر از اسكن با سرعتهای بالا (-T 5) را برای شما داشته باشد!
6 – پورتهای مورد نظر
بر خلاف تصور nmap به صورت پیش فرض در حدود 1400 پورت مهم را بررسی میكند! در صورتی كه قصد شناسایی سرویسهای معمول را دارید، لیست اولیه مناسب میباشد. در غیر این صورت بررسی تمامی پورتهای یك سیستم با پارامتر –p برای اسكن 65535 پورت امكانپذیر میباشد كه البته زمانگیر و در خیلی از موارد بیثمر خواهد بود.
7 – استفاده از قابلیتهای OS Detection و Version Detection
قابلیتهای جانبی nmap آن را به یكی از قویترین اسكنرها تبدیل كرده است؛ با این حال فعالسازی بدون نیاز به این قابلیتها، تأثیر چشمگیری در سرعت كار این نرمافزار و ایجاد شبهاتی در مورد سرعت كند این نرمافزار دارد. اگر نیازی به شناسایی این بخشها ندارید توصیه میكنم از به كارگیری این قابلیتها در جهت افزایش سرعت و ساكت ماندن پویش خودداری كنید.
به منظور شناسایی نوع سیستم عامل از پارامتر”-O” و به منظور شناسایی نسخه سرویسها در اسكن از پارامتر “-sV” استفاده كنید. در صورتی كه قصد دارید از تمام قابلیتهای nmap استفاده كنید، پارامتر “-A” را به كار ببرید (فعالسازی Service Detection , Script-based Detection , OS Detection و Traceroute ).
8 – سطح دسترسی كاربر استفاده كننده
تلاشهای زیادی انجام شده تا كارایی Nmap برای تمام كاربران سیستم یكسان باشد و بسته به سطح دسترسی كاربر به سیستم، قابلیتهای آن كاهش نیابد. متأسفانه بسیاری از واسطههای kernelهای حساس (مثل سوكتهای خام [raw sockets]) نیاز به مجوز root دارند. لذا توصیه میكنم هر زمان كه ممكن است، Nmap را تحت مجوز root راهاندازی كنید (البته نه به عنوان setuid root).