تو این پست از ابزار nmap زیاد استفاده میشه. اگه با nmap آشنایی نداری روی این متن کلیک کن.
تو فرایند Scanning اطلاعات بیشتری راجب ساختار شبکه و سیستمهای موجود بدست می آوریم.
Scanning سه نوع اصلی داره که به ترتیب باید اجرا کنیم و عبارتند از :
Network Scanning : هدف از این نوع اسکن پیدا کردن سیستمهای فعال در شبکست.
Port Scanning : تو این نوع اسکن اطلاعاتی راجب پورت های فعال و سرویس هایی که روی اونها اجرا میشوند بدست می آوریم.
Vulnerability Scanning : در این مرحله از ابزارهایی برای شناسایی آسیبپذیری های احتمالی روی سیستمها و سرویس های شناسایی شده استفاده میشود.
با Network Scanning شروع کنیم…
مفهوم Host Discovery به معنای شناسایی دستگاههای فعال و زنده در شبکه است. اینکار توسط تکنیک های مختلفی انجام میشه که عبارتند از :
شروع کنیم...
ARP Ping Scan : در این روش هکر درخواست ARP به IP مقصد ارسال میکنه، اون IP اگر وجود داشته باشه جواب درخواست رو میده و اینجا هکر میفهمه که IP برای یک سیستم زنده هست. این روش دقت بالایی داره و چون ARP رو بلاک نمیکنن میتونیم ازش در شبکههای محلی به خوبی استفاده کنیم. نحوه استفاده :
nmap-sn -PR ! البته از ابزار netdiscover هم برای این روش میشه استفاده کرد. (کلید کنید)
UDP Ping Scan : پروتکل UDP برخلاف TCP بدون نیاز به اتصال مستقیم کار میکنه (connection less) یعنی دادهها رو میفرسته بدون اینکه از گیرنده تاییدیه بگیره (acknowledgment). در این روش، اول یک آدرس IP یا محدودهای از آدرسهای IP رو مشخص میکنیم. سپس با استفاده از ابزارهایی مثل nmap بستههای UDP رو به یک یا چند پورت هر آدرس IP در محدوده مورد نظر ارسال میکنیم. وقتی بسته UDP به پورت هدف ارسال میشه چند حالت ممکنه رخ بده :
در اکثر موارد اگه پورت باز باشه پاسخی از سمت سیستم دریافت نمیشه، به عبارت دیگه بسیاری از سرویس های UDP در پاسخ به یک بسته معمولی UDP پاسخی نمیدهند مگر اینکه درخواست خاصی ارسال بشه. درنهایت نبود پاسخ همیشه به معنی غیرفعال بودن سرویس نیست.
اگه پورت بسته باشه، معمولا سیستم هدف یک بسته ICMP Type 3 Code 3 (Destination Unreachable) برمیگردونه که این پیام نشون میده پورت مورد نظر بسته است اما دستگاه فعال و زندست.
اگه هیچ جوابی دریافت نشه چند دلیل براش وجود داره که دلیل اول رو بالاتر گفتم ! دلیل دیگش میتونه این باشه که دستگاه فعال و زنده نیست. دلیل دیگش میتونه این باشه که Firewall یا تجهیزات امنیتی بسته های UDP را مسدود کرده باشند.
درکل UDP Ping Scan روش دقیقی نیست که از طریقش تشخیص بدیم یک دستگاه فعال هست یا نه. نحوه استفاده : nmap -sn -PU
ICMP Ping Scan : این تکنیک هم یکی از روش های Host discovery هست که از پروتکل ICMP یا همان Internet Control Message Protocol استفاده میکنه. در ادامه هرکدام از زیرمجموعه های این تکنیک رو کار میکنیم.
ICMP Echo Ping : این روش رایج ترین نوع ICMP Ping Scan هست که یک پیام Echo Request به هدف ارسال میکنه و باید منتظر پاسخ Echo Reply باشه. اگه هدف به درخواست پاسخ بده یعنی سیستم فعال هست. دستور ping بر پایه این مکانیزم کار میکنه. این روش معمولا برای شبکه های داخلی مناسبه چون ادمین های شبکه دستورات Ping رو برای تست شبکه مسدود نمیکنن. نحوه استفاده از این روش : nmap -sn -PE
خود ICMP Echo Ping یک زیرمجموعه داره که ICMP Echo Ping Sweep هست. تو روش ICMP Echo Ping Sweep بجای ارسال یک ICMP Echo به یک هدف خاص، به یک رنج IP بسته هارو ارسال میکنیم. مثال : nmap -sn -PE 192.168.50.10-50
ICMP Timestamp Ping : در این روش یک درخواست Timestamp به مقصد ارسال میشه که شامل زمان فعلی است. مقصد با ارسال Timestamp Reply زمان دریافتی را باز میگرداند. این روش معمولا برای بررسی مشکلات مربوط به اختلاف ساعت بین دستگاهها استفاده میشه و در برخی از کامپیوتر ها که به Echo Reply پاسخ نمیدهند از این روش استفاده میشه. نحوه استفاده : nmap -sn -PP
ICMP Address Mask Ping : در این روش یک Address Mask Request به هدف ارسال میشه و داخل پیام درخواست به مقصد گفته شده که Subnet Mask خودش رو ارسال کنه. نحوه استفاده : nmap -sn -PM
TCP Ping Scan : در این تکنیک از TCP برای عمل Host discovery استفاده میشه.
(قبل از ادامه، با TCP آشناییت بیشتری پیدا کنیم ! داخل Header پروتکل TCP اطلاعات مختلفی از جمله Flag ها قرار گرفته. Flag در هدر پروتکل TCP تعیین میکند که بسته برای چه هدفی ارسال شده و نوع عمل مورد نظر چیست. به طور کلی، Flag ها شامل چندین نوع مختلف هستند، از جمله :
SYN (Synchronize) : وقتی SYN داخل Flag قرار بگیرد، یعنی اون بسته برای آغاز ارتباط جدید است.
ACK (Acknowledge) : برای تأیید دریافت بسته های قبلی استفاده میشود.
FIN (Finish) : برای پایان دادن به یک ارتباط استفاده میشود.
RST (Reset) : برای ریست کردن یک ارتباط و بستن پورت استفاده میشود.
و…
پروتکل TCP از استاندارد Three-Way Handshake برای ایجاد ارتباط استفاده میکنه ! تو این استاندارد سیستم فرستنده یک بسته TCP با فلگ SYN ایجاد میکنه و میفرسته سمت سیستم گیرنده. سیستم گیرنده بسته رو دریافت میکنه و یک بسته جدید با فلگ SYN/ACK میفرسته که به معنای تأیید دریافت بسته و درخواست برقراری ارتباط است. درنهایت، تو قدم سوم سیستم فرستنده بسته ایی با فلگ ACK ارسال میکنه و ارتباط شکل میگیره)
بریم با زیرمجموعه های تکنیک TCP Ping Scan آشنا بشیم...
TCP SYN Ping : در این روش به پورت های TCP بسته هایی با فلگ SYN ارسال میکنیم. این بسته ها شروع کننده Three-Way Handshake هستند. پاسخی که از مقصد دریافت میشه چند حالت داره :
اگه هاست زنده باشه و پورت هم روی سیستم باز باشه، بسته SYN/ACK دریافت میکنیم. وقتی این بسته رو دریافت میکنیم باید یک بسته RST ارسال کنیم.
اگه هاست زنده باشه اما پورت بسته باشه، بسته RST دریافت میکنیم.
اگه هیچ پاسخی دریافت نشه احتمالا هاست زنده نیست یا اینکه Firewall ترافیک رو مسدود کرده.
نحوه استفاده : nmap -sn -PS
TCP ACK Ping : تفاوت این روش با روش قبلی این هست که از بسته هایی با فلگ ACK استفاده میکنیم. این روش برای مواقعی استفاده میشه که ممکنه Firewall بسته هایی با فلگ SYN رو فیلتر کرده باشه اما بسته های ACK رو عبور بده. (این روش برای شناسایی سیستم های پشت Firewall مفید تره) پاسخی که از مقصد دریافت میکنیم چند حالت داره :
اگه هاست زنده باشه معمولا یک بسته RST برمیگرده (حتی اگه پورت بسته باشه)
اگه هاست زنده نباشه یا Firewall ترافیک رو فیلتر کرده باشه هیچ پاسخی دریافت نمیشه.
نحوه استفاده : nmap -sn -PA
عکس رو مجدد قرار میدم.
آخرین روش یا تکینک تو بحث Host discovery روش IP Protocol Ping Scan هست. این تکنیک زمانی استفاده میشه که Firewall یا Router ترافیک TCP و UDP رو فیلتر کرده باشن، بسته های ICMP رو فیلتر کرده باشن و تنها باید با پروتکل های خاص IP ارتباط برقرار کنیم. نحوه استفاده : nmap -sn -PO
تو این مثال nmap تلاش میکنه که با پروتکل های مختلف IP هاست های زنده رو شناسایی کنه.
بحث Network Scanning رو همینجا به اتمام میرسونیم. اما لازمه که با یک مفهوم دیگه یعنی مفهوم OS discovery هم آشنا بشیم.
OS discovery فرایندی است که طی آن نوع سیستم عامل یک دستگاه شبکه ایی مشخص میشود. این مورد بیشتر در دسته Network Scanning قرار میگیره زیرا کمک میکنه یک نمای کلی از دستگاههای موجود در شبکه و سیستم عامل های آنها بدست آوریم اما گاهی اوقات به عنوان بخشی از Port Scanning هم در نظر گرفته میشه.
OS Discovery تو دو حالت انجام میشه :
Active : در این روش اسکنر مستقیماً بسته های خاصی به دستگاه هدف میفرسته و براساس پاسخها سعی میکنه نوع سیستم عامل رو تشخیص بده. هر سیستم عامل رفتار خاصی در لایههای شبکه داره که به عنوان امضا شناخته میشه، این امضاها nmap رو قادر میسازن که تشخیص بده سیستم عامل چیه. نحوه استفاده : nmap -O
Passive : این روش کمی پیچیده تره و از Packet Sniffing استفاده میکنه. در این روش اسکنر بسته های شبکه ایی که در اطرافش رد و بدل میشه رو بررسی میکنه و براساس ساختار این بسته ها، سعی میکنه بفهمه سیستم عامل دستگاهها در شبکه چیه.
روش Passvie کمتر جلب توجه میکنه اما ممکنه به اندازه روش Active دقیق نباشه.
جدا از سوئیچ O میتونیم از smb-os-discovery هم استفاده کنیم که یک روش تخخصی تره و بطور خاص روی سیستمهایی کار میکنه که از پروتکل SMB پشتیبانی میکنند، این روش به دلیل استفاده از SMB میتواند اطلاعات دقیقتری از سیستم عامل ویندوزی بدهد ولی درصورتی که SMB روی سیستم هدف غیرفعال باشد، نتیجه ایی نداره. نحوه استفاده :
nmap –script smb-os-discovery.nse [Target IP]
درنتیجه این اسکریپت با استفاده از اطلاعاتی که در پروتکل SMB (پروتکل به اشتراک گذاری فایل و پرینتر در شبکههای ویندوزی) یافت میشود، اطلاعات سیستم عامل هدف را بررسی و شناسایی میکند.