اسکن شبکه با استفاده از ابزار nmap
برخی افراد nmap را ابزار هکرها میدانند که با استفاده از آن اطلاعاتی از هدف به دست آورده تا برای حمله به آن آماده شوند. اما برخلاف این باور، nmap ابزاری بسیار قدرتمند برای ارزیابی دستگاههای درون شبکه است. تا آن جا که کارایی مثبت آن بیشتر از کاربردهای مخرب آن است! در این بخش قصد داریم آشنایی مختصری با این ابزار داشته باشیم.
در صورتی که این ابزار بر روی سیستم شما نصب نیست، میتوانید با استفاده از دستور زیر آن را نصب کنید:
# Debian/Ubuntu sudo apt install nmap # RedHat/CentOs/Fedora sudo yum install nmap # Arch/Manjaro sudo pacman -S nmap
حال برای مثال، بدون نیاز به سطح دسترسی کاربر root میتوان یک اسکن ساده بر روی دستگاه هدف انجام داد:
nmap scanme.nmap.org
پس از اجرای این دستور خروجی زیر نمایش داده میشود:
Starting Nmap 7.12 ( https://nmap.org ) Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.33s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 777/tcp filtered multiling-http 8080/tcp open http-proxy 9929/tcp open nping-echo 31337/tcp open Elite Nmap done: 1 IP address (1 host up) scanned in 23.72 seconds
بدین ترتیب شماره و نام سرویس فعال بر روی هر پورت وضعیت آن نمایش داده میشود. open به معنای باز بودن پورت مورد نظر بر روی دستگاه بوده و برنامهای بر روی آن در حالت listen قرار دارد و منتظر دریافت بسته است. filtered به معنای این است که یک فایروال پورت را مسدود کرده و nmap قادر به تشخص باز یا بسته بودن پورت نیست.
آدرس scanme.nmap.org یک آدرس برای تست است. توجه داشته باشید که در طول روز به دفعات زیاد بر روی آن اسکن انجام ندهید!
همچنین میتوان یک بازهی آدرس را در شبکه خود اسکن نمود:
nmap 192.168.1.0-254
یا
nmap 192.168.1.0/24
در صورتی که از این ابزار با سطح دسترسی کاربر root استفاده شود، اطلاعات کامل تری در اختیار ما قرار میدهد. برای مثال با به کارگیری پارامتر -O میتوان سیستم عامل دستگاه مورد نظر را تشخیص داد. علاوه بر این، با استفاده از پارامتر -sS میتوان یک اسکن نیمه باز بر روی پورتهای TCP انجام داد. بدین صورت که nmap یک بستهی SYN را به دستگاه راه دور ارسال کرده و منتظر دریافت بستهی ACK میماند. در صورت دریافت بستهی ACK از آن دستگاه، متوجه میشود که پورت مورد نظر باز است. این روش با دست تکانی سه مرحلهای پروتکل TCP متفاوت است. چرا که در این روش دیگر بستهی ACK از سمت ما به دستگاه راه دور ارسال نشده و بدین ترتیب عمل اسکن بر روی آن دستگاه ثبت نمیشود.
sudo nmap -sS -O scanme.nmap.org
Starting Nmap 7.12 ( https://nmap.org ) Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.37s latency). Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 777/tcp filtered multiling-http 8080/tcp open http-proxy 9929/tcp open nping-echo 31337/tcp open Elite Aggressive OS guesses: Linux 3.10 - 4.1 (91%), Linux 3.13 or 4.2 (91%), Crestron XPanel control system (91%), Linux 3.16 - 3.19 (90%), Linux 3.11 (89%), Linux 3.12 (89%), Linux 3.13 (89%), Linux 3.16 (89%), Linux 3.18 (89%), Linux 3.2 - 4.4 (89%) No exact OS matches for host (test conditions non-ideal). Network Distance: 23 hops OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 63.60 seconds
با توجه به خروجی مشاهده میکنید که تخمین و حدسهایی (به همراه درصد) مبنی بر نوع سیستم عامل دستگاه مورد نظر آمده است و میتوان پی برد که سیستم عامل دستگاه لینوکس میباشد اما این که نسخهی آن را تشخیص دهیم کمی دشوار است.
یکی دیگر از ویژگیهای قدرتمند این ابزار، قابلیت دریافت فایل خروجی XML است. با استفاه از پارامتر -oX و ذکر نام فایل، میتوان خروجی دستور را درون فایل XML ذخیره نمود:
sudo nmap -sS -O -oX mynmapscan.xml scanme.nmap.org
زمانی که میخواهیم عمل اسکن را بر روی یک بازهی آدرس و یا کل شبکه خود انجام دهیم میتوانیم از این قابلیت استفاده کنیم. چرا که تمام اطلاعات بدست آمده از چندین دستگاه درون شبکه، در یک فایل XML ذخیره میشود. بخشی از این خروجی XML بصورت زیر است:
<port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="45"/><service name="ssh" method="table" conf="3"/></port> <port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="59"/><service name="http" method="table" conf="3"/></port> <port protocol="tcp" portid="777"><state state="filtered" reason="no-response" reason_ttl="0"/><service name="multiling-http" method="table" conf="3"/></port> <port protocol="tcp" portid="8080"><state state="open" reason="syn-ack" reason_ttl="59"/><service name="http-proxy" method="table" conf="3"/></port> <port protocol="tcp" portid="9929"><state state="open" reason="syn-ack" reason_ttl="45"/><service name="nping-echo" method="table" conf="3"/></port> <port protocol="tcp" portid="31337"><state state="open" reason="syn-ack" reason_ttl="46"/><service name="Elite" method="table" conf="3"/></port>
به طور کلی nmap یک ابزار بسیار قدرتمند است که با استفاده قابلیتهای آن میتوانید سرویسها و دستگاههای غیرمجاز را درون شبکهی خود به راحتی شناسایی و اشکالات احتمالی را تشخیص دهید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.