با سلام خدمت کاربران گرامی . در این مقاله در مورد اسکن سیستم های یک شبکه در لایه ی 2 می پردازیم , لازم به ذکر است که در اکثر مواقع برای پیدا کردن سیستم های فعال یک شبکه از چک کردن تمامی آدرس های آی پی شبکه استفاده می کنیم و اسکن را روی لایه ی 3 با استفاده از پروتکل های تعریف شده انجام می دهیم اما در این مقاله به اسکن بر روی لایه ی 2 خواهیم پرداخت و در ادامه تفاوت این دو را در هنگام اجرا بودن فایروال ها بررسی خواهیم کرد .
توپولوژی فرضی شبکه :
سرفصل های این مقاله :
1. اسکن از طریق پروتکل ARP
2. تاثیر فایروال ها بر روی اسکن از این طریق
1. اسکن از طریق پروتکل ARP :
ابتدا باید گفت که برای اسکن سیستم های فعال یک شبکه در لایه ی 2 , از پروتکل ARP یا Address Resolution Protocol استفاده خواهیم کرد . ابزار هایی هم که در این بخش گفته خواهد شد همگی از این پروتکل برای اسکن فعال یا فعال نبودن یک سیستم در شبکه استفاده می کنند .
ابتدا اجازه دهید نیم نگاهی به تعریف پروتکل ARP از زبان ویکی پدیا داشته باشیم :
ARP یا پروتکل تفکیک آدرس (Address Resolution protocol) پروتکلی است که مسئولیت تبدیل (نام به آدرس) را در رابطه با بستههای اطلاعاتی خروجی برعهده دارد. ARP از جدولی خاصی به منظور ذخیره سازی آدرسهایMAC و IP مربوطه استفاده مینماید .
همچنین پیشنهاد می کنم با خواندن این مقاله درک نسبی ای از این پروتکل پیدا کنید .
ابزار های زیادی برای پویش با استفاده از این پروتکل وجود دارد . شاید اولین آن ها را بتوان ابزار arping نام برد . این ابزار به طور پیش فرض بر روی کالی نصب است و می توان به شکل زیر از آن استفاده کرد :
root@kali-OSLearn:~# arping -c 4 10.159.12.52
دومین ابزار را می توان netdiscover نام برد که خروجی ای مرتب تر و خوانا نمایش می دهد . این ابزار هم به طور پیش فرض بر روی کالی نصب است و می توان به شکل زیر از آن استفاده کرد :
root@kali-OSLearn:~# netdiscover -i eth0 -r 10.159.12.0/24
نکته : از سویچ i- برای مشخص کردن interface استفاده کردیم .
نکته : از سویچ r- برای مشخص کردن رنج مورد پویش استفاده کردیم .
نکته : برای درک مفاهیم subnet و … به این جزوات مراجعه کنید .
سومین ابزار nmap نام دارد که بسیار قابل انعطاف است و نتنها در این زمینه بلکه در دیگر روش های پویش نیز از این برنامه استفاده می شود . این ابزار هم در کالی نصب است و می توان به شکل زیر از آن استفاده کرد :
root@kali-OSLearn:~# nmap -PR -sn --system-dns 10.159.12.0/24
نکته : از سویچ sn- به منظور غیر فعال کردن پورت اسکن استفاده کردیم .
شاید ابزار های دیگری نیز موجود باشد اما چیزی که در تمامی این ابزار ها مشترک است , نحوه ی کارکرد آن ها و استفاده از پروتکل arp برای حل این مسئله است . برای درک این موضوع من وایرشارک را در 3 سیستم خود اجرا می کنم و با برنامه ی arping اقدام به فرستادن پکت هایی از جنس ARP به سیستم اوبونتو می کنم . در آخر پکت ها را در تمامی سیستم ها بررسی می کنم .
کالی لینوکس :
اوبونتو دسکتاپ :
ویندوز XP :
همان طور که مشاهده می کنید یک پکت از سمت سیستم کالی در کل شبکه پخش شده است . یعنی حتی ویندوز XP هم پکت اول را دریافت کرده است . حال به قسمت info نگاه کنید :
who has 10.159.12.52? tell 10.159.12.50
همان طور که مشخص است سیستم کالی با آدرس آی پی 10.159.12.50 به دنبال آدرس فیزیکی برای آی پی 10.159.12.52 می گردد . طبق سناریو ای که فرض شده است , آی پی 10.159.12.52 بر روی سیستم اوبونتو set شده است پس اوبونتو به این پکت جواب می دهد و دیگر سیستم ها هیچ پکتی در پاسخ صادر نمی کنند . ( به پکت دوم در سیستم اوبونتو نگاه کنید )
10.159.12.52 is at 00:0c:29:2a:41:47
همین روند را می توان برای کل شبکه در نظر گرفت یعنی به جای وارد کردن یک آدرس آی پی در arping کل شبکه را زیر پویش برد و یا از برنامه ی netdiscover استفاده کرد . در این حالت روند بالا برای تمامی آی پی های موجود در شبکه تکرار می شود و هر سیستمی که پاسخی صادر کند , در لیست سیستم های فعال برای ما نمایش داده خواهند شد . به عنوان مثال :
2. تاثیر فایروال ها بر روی اسکن از این طریق :
حال اجازه دهید تاثیر set کردن رول های مختلف در فایروال IPTABLES را برای این سناریو و برنامه ها بررسی کنیم .
در حالت اول من وارد سیستم اوبونتو میشم و کل input chain را از حالت accept به drop تغییر می دهم . برای این منظور :
root@ubuntu-OSLearn:~# iptables -P INPUT DROP
حال یک بار دیگر برنامه ی arping را در کالی اجرا می کنم و همزمان نتایج را در وایرشارک هم بررسی می کنم .
همان طور که از عکس مشخص است , اوبونتو به ما جوابی صادر کرده است با این که ما کل INPUT chain را روی حالت drop قرار داده بودیم .
در حالت دوم INPUT chain را روی حالت accept قرار می دهیم اما آدرس مک سیستم کالی را drop می کنیم . برای این منظور :
root@kali-OSLearn:~# iptables -A INPUT -m mac --mac-source 00:0c:29:27:6e:12 -j DROP
باز همان روند را تکرار می کنیم و می بینیم که اوبونتو پاسخی در جواب برای کالی صادر کرده است .
برای حل این مشکل از ابزار و روشی دیگر استفاده می کنیم که در قسمت بعدی یعنی “مقابله با پویشگر در لایه ی 2″ به طور مفصل به آن خواهیم پرداخت . فقط همین قدر بگم که فرض کنید سیستم و یا سروری را در شبکه داریم که نمی خواهیم هیچ گونه ارتباطی با دیگر سیستم های شبکه داشته و دیگر سیستم ها متوجه حضور این سرور در شبکه نباشند و تنها ارتباط خود را از طریق روتر با محیط خارج برقرار کند .
موفق و موید باشید .
منبع : او اس لرن دات آی آر | http://OSLearn.ir
نویسنده : E2MA3N