
همانطور که همواره شنیده اید، امنیت مقوله ای نسبی است. و هیچگاه به طور مطلق حاصل نمی شود. از این رو شناخت و بررسی متوالی پدیده و یا هدف مد نظر که شامل بررسی مجموعه رفتار ها و واکنش های آن در طی یک دوره معین از زمان می شود، آن را آسیب پذیر می سازد. در تمام اعمال، شناخت یکی از مهم ترین ارکان شمرده می شود. زیرا که شناخت می تواند اعمال را در جهت درست سوق دهد.
در تست نفوذ نیز پنج مرحله اساسی وجود دارد. که مهم ترین های آن شامل، شناخت(Reconnasissance) و اسکن کردن می شود. اطلاعاتی که از این دو مرحله کسب خواهد شد، موجب سوق دادن مسیر تست نفوذ خواهد شد.
این ابزار، یکی از پرکاربرد ترین ابزار های متن-باز در زمینه ی جمع آوری اطلاعات است. به طوری که حتی مسئولان شبکه نیز از آن برای شناسایی پورت های باز، دستگاه های متصل و حتی آسیب پذیری های احتمالی استفاده می کنند. Nmap می تواند با اسکن کردن پورت های متفاوت یک سرور، اطلاعات زیادی را به دست آورد.
نکته : این ابزار نباید در هیچ یک از فعالیت های غیر قانونی استفاده شود. در عوض، می توانید با عضویت در پلتفرم هایی همانند Hack The Box و یا استفاده از سرور تست Nmap، این ابزار را آزمایش کنید.
هر پورتی در سیستم عامل، به یک سرویس مشخص اختصاص داده شده است، که در پس زمینه سیستم عامل در حال فعالیت می باشد. در این صورت سرویس ها از شبکه خارجی و یا داخل شبکه (بسته به تنظیمات شبکه) با استفاده از آن پورت قابل دسترسی هستند. در نتیجه می توان با دسترسی مناسب و در دسترس داشتن آن پورت، اطلاعات زیادی را اعم از :" نام سرویس در حال اجرا، نسخه ی آن، آسیب پذیری های ممکن آن و ..." به دست آورد.
از این رو دانستن این اطلاعات به عنوان یک متخصص امنیت یا تست نفوذ گر، مهم ترین قدم برای شناسایی آسیب های احتمالی و بررسی وضعیت نفوذ پذیری آن ها است.
به دست آوردن اطلاعات در مورد سرویس های در حال اجرا، تنها یکی از بی شمار قابلیت های این ابزار است. علاوه بر این، Nmap قابلیت های زیر را نیز برای کاربران فراهم می کند.
برای نصب Nmap می توانید به صورت زیر عمل کنید. همچنین می توانید با مراجعه به صفحه دانلود رسمی Nmap، نسخه مناسب سیستم عامل خود را پیدا کنید.
$ sudo apt install namp # Debian, Ubuntu $ sudo pacman -S nmap # Arch Linux $ sudo snap install nmap # Fedora $ sudo brew install nmap # MacOS
قبل از ادامه، ساختار کلی دستورات Nmap به صورت زیر است:
$ nmap [Scan-type] [Options] [Target]
اسکن کردن سیستم های مشخص:
برای اسکن کردن یک و یا یک محدوده از سیستم های مشخص، میتوانید از دستورات زیر استفاده کنید. این دستورات ۱۰۰۰ پورت معمول را اسکن می کند.
$ nmap [IP] or [Hostname] $ nmap [IP 1] [IP 2] [IP n] $ nmap 192.168.1.104 #Example
همچنین علامت ستاره (*) برای اسکن تمام ساب نت های یک ایپی استفاده می شود.
$ nmap 192.168.1.*
از علامت خط تیره (-) نیز می توان برای برای اسکن کردن یک محدوده از ایپی ادرس ها استفاده کرد.
$ nmap 192.168.0.0–255
شیوه Stealth Scan:

همانطور که می دانید تمام ارتباط ها در پروتکل TCP، از فرایند معروف three‐way handshake استفاده می کنند. علیرغم این که این شیوه از اسکن همانند این فرایند با ارسال یک پکت SYN آغاز می شود، یک تفاوت بزرگ در آن وجود دارد.
این شیوه از اسکن هیچ گاه مانند فرآیند بالا با ارسال پکت ACK به اتمام نمی رسد. در نتیجه، این شیوه، باعث تضعیف قدرت تشخیص اسکنر می شود.
$ nmap -sS [Target]
$ nmap -sS 192.168.1.5
اسکن تمام دستگاه های متصل در یک شبکه:
دستور زیر تمام دستگاه های متصل به یک شبکه را با ارائه ساب نت و استفاده از شیوه Stealth Scan، اسکن می کند.
$ nmap -sS [The_Subnet] $ nmap -sS 192.168.1.0/24 #Example
اسکن نسخه ی سرویس ها:
$ nmap -sV [Target] $ nmap -sV scanme.nmap.org #Example
تشخیص سیستم عامل:
$ nmap -O [Target] $ nmap -O scanme.nmap.org #Example
شیوه Aggressive Scanning:
این شیوه از اسکن، قابلیت های تشخیص سیستم عامل(-O)، تشخیص نسخه سرویس های در حال اجرا(-sV)، اسکن به واسطه اسکریپت ها، و traceroute(–traceroute) را فعال میکند.
$ nmap -A [Target] $ nmap -A scanme.nmap.org #Example
اسکن پورت ها:
با استفاده از پارامتر -p میتوانید، این نحو از اسکن را انجام دهید.
$ nmap -p [Port] [Target] $ nmap -p 22 192.168.1.5 #Example
همچنین میتوانید نوع پورت را مشخص کنید:
$ nmap -p T:80
و یا محدوده ای از پورت ها را اسکن کنید:
$ nmap -p 80-443 192.168.1.5
اسکن کردن آسیب پذیری ها:
اسکریپت های زیادی به منظور اسکن آسیب پذیری ها، توسعه داده شده است. یکی از شناخته شده ترین این اسکریپت ها، nmap-vulners نام دارد.
میتوانید از دستورات زیر برای نصب و آزمایش این اسکریپت استفاده کنید.
# Navigating to the Nmap scripts directory $ cd /usr/share/nmap/scripts/ # Cloning the git repository $ git clone https://github.com/vulnersCom/nmap-vulners.git # NSE scripts usage $ nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target> # Example $ nmap -sV --script nmap-vulners/ 192.168.1.5
اسکن کردن از طریق یک فایل:
این شیوه از اسکن در فرایند اتوماسیون، بسیار کاربردی است. برای مثال شما می توانید، اسکریپتی بنویسید که تمام سرور های درج شده در یک سایت مشخص را جمع آوری کرده و در یک فایل ذخیره کند.
اینک با دادن این فایل به Nmap ،Nmap قادر خواهد بود تمام سرور های درون آن فایل را به طور مجزا و خودکار اسکن کند و با یک مقدار ترفند ساده لینوکسی میتوانیم نتیجه اسکن را در یک فایل دیگر برای مشاهده در زمانی دیگر ذخیره کنیم.
$ nmap -iL [Path_To_File] $ nmap -iL ./servers.txt > result.txt #Example
این مقاله به صورت رسمی در سایت من به آدرس https://mazdak.dev منتشر شده است.
همچنین می توانید این مقاله را در پلتفرم Medium نیز مطالعه کنید.