حمله ARP Poisoning، حمله ای از نوع Man in the Middle می باشد و در سطح شبکه داخلی(LAN) است که در آن هکر با فرستادن پیغام های جعلی ARP در شبکه داخلی، قادر به شنود تمامی بسته های کاربر هک شده، می شود.
پروتکل ARP) Address resolution protocol) عمل تبدیل IP به MAC را برای ما انجام می دهد. نحوه کارکرد آن بدین صورت است که درخواست هایی در شبکه پخش می شود که آیا IP شما ***.***.***.*** است؟ اگر درست است مک خود را ارسال کنید.در همین حین تمامی کلاینت های شبکه IP خود را چک می کنند که در صورت درست بودن یک پاسخ همراه مک به فرستنده ارسال می کنند.
برای این که این درخواست پیوسته در شبکه ارسال نشود و ترافیک بیهوده ایجاد نشود.هر کلاینت یکبار این درخواست را ارسال کرده و سپس جوابهای ارسالی را بصورت یک جدول در ARP Cache نگه داری می کند. این جدول شامل Mapping بین IP و MAC می باشد. هر زمان که بسته ای به یک کلاینت در یک شبکه داخلی ارسال می شود، باید از Gateway عبور کند سپس Gateway با استفاده از ARP، آدرس MAC کلاینتی که بسته به آن مربوط می شود را با استفاده از IP موجود در بسته پیدا کرده و آن بسته را به کلاینت مورد نظر ارسال می کند.
طراحان پروتکل ARP، آن را بر اساس کارایی ساختند که باعث شد حفره های امنیتی زیادی در آن به وجود آید. حفره های امنیتی آن باعث شد که هکرها تا زمانی که در شبکه داخلی به کلاینت هدف خود دسترسی داشته باشند، بتوانند به آسانی به وی حمله کنند.
حمله ARP Poisoning به عمل ارسال بسته های جعلی ARP Reply به یک Gateway در یک شبکه داخلی می گویند. هکرها با داشتن آدرس IP کلاینت هدف، می توانند بسته های جعلی ARP را به سایر کلاینت های داخل شبکه ارسال کنند. پیام های جعلی به کلاینت ها این مفهوم را می رسانند که آدرس MAC هکر باید به آدرس IP کلاینت هدف در جدول ARP آن ها نگاشت شود. این عمل باعث می شود کلاینت های موجود در شبکه، جدول ARP Cache خود را با آدرس Mac هکر Update کنند. هر موقع که کلاینت ها بخواهند بسته ای به کلاینت هدف ارسال کنند، این بسته به هکر ارسال خواهد شد. هکر می تواند به طور مخفیانه داده ها را دزدیده یا آن ها را دستکاری و به مقصد برساند یا حتی به طور کامل ارتباط کلاینت ها با کلاینت هدف را قطع کند.
روش های مختلفی برای شناسایی حمله ARP Poisoning وجود دارد. Command Prompt ویندوز، برنامه هایی مانند Snort ، ArpWatch ، ArpAlert ،XArp و ... قابلیت شناسایی این نوع حملات را دارند. در ادامه با نحوه شناسایی هکر با استفاده از برخی از روش های ذکر شده آشنا می شویم
اگر به اینکه کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته یا خیر مشکوک هستید، یک راه ساده استفاده از Command Prompt است. با استفاده از دستور "arp -a" می توانید ARP Table خود را مشاهده کنید.
در این جدول اگر دو دستگاه با آدرس IP های مختلف دارای آدرس MAC یکسانی باشند آنگاه احتمالا کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته است. البته این موضوع را نمی توان با قطعیت بیان کرد زیرا در بعضی مواقع در برخی روترها آدرس IP ابتدا و انتهای آن با یک آدرس MAC در ARP Table ذخیره می شود. این مورد یکی از استثناها می باشد.
مشابه این سناریو در دستگاه های لینوکسی و مک نیز قابل اجراست اما برای دستگاه های اندرویدی نیاز به دسترسی روت خواهید داشت.
این ابزار پیشرفته برای لینوکس و ویندوز منتشر شده است که در Background اجرا شده و حملات را به طور آنی شناسایی می کند.
با تنظیم Security Level به minimal یا basic یا high و یا aggressive می توانید حساسیت برنامه را تنظیم کنید.
حال که با نحوه شناسایی حمله ARP Poisoning آشنا شدیم، بهتر است از روش هایی برای حفاظت دستگاه و داده های خود در برابر این نوع حملات استفاده کنید.
یک روش برای جلوگیری از مورد تهاجم گرفتن توسط حمله هکرها استفاده از VPN است. در حالت عادی، وقتی که به اینترنت متصل می شوید در ابتدا به یک ISP وصل می شوید تا با شبکه جهانی اینترنت ارتباط برقرار کنید اما با استفاده از VPN، یک تونل Encrypted بین شما و سرور VPN برقرار می شود که فعالیت شما را از هکرها مخفی نگاه میدارد. البته VPN ها به دلیل بودن زمان بر بودن عملیات Encryption و Decryption ممکن است سرعت دسترسی آنلاین شما را کم کنند.
درج رکوردهای ARP به صورت Static می تواند ریسک مورد تهاجم قرار گرفتن را کاهش دهد. اگر در شبکه داخلی شما دو کلاینت اغلب اوقات باهم در ارتباط اند، تنظیم جدول ARP به طور Static برای این دو کلاینت می تواند یک لایه حفاظتی برای در امان ماندن از حملات اضافه کند.
روتر های CISCO می توانند تشخیص دهند عمل ARP Poisoning رخ می دهد یا خیر و در صورت رخداد آن، فعالیت آن را از سر گیرند.
در حالت معمول، کلاینت ها تنها از آدرس IP برای تشخیص هویت کلاینت دیگر استفاده می کنند که این عامل باعث می شود کار هکرها برای Spoofing راحت شد. یک راه حل دیگر برای در امان ماندن از حملات ARP Poisoning استفاده از نام کاربری و رمز عبور برای اعتبارسنجی کلاینت ها است. برای ساخت یک سیستم اعتبارسنجی باید آن را در سطح سازمان خود تعریف کنید و به کلاینت های معتبر، نام کاربری و رمز عبور مخصوص بدهید. این تکنیک ساده می تواند یک لایه حفاظتی دیگر به شبکه شما اضافه کند و هکرهایی که میخواهند به شبکه دسترسی غیرمجاز داشته باشند را شناسایی کند.
این فیلترها بسته هایی که در شبکه ارسال می شوند را آنالیز می کنند و بسته های جعلی و کلاینت هایی که بسته جعلی می فرستند را فیلتر می کنند. علاوه بر این فیلترها می توانند بسته هایی که در واقع از بیرون آمده است ولی ادعا می کند منشاء داخلی دارند را تشخیص دهند. این امر شانس هکرها برای یک حمله موفقیت آمیز را کاهش می دهد.
مودم هایی مانند مودم های شرکت DLink قابلیتی برای جلوگیری از حملات ARP Poisoning دارند
با وارد کردن آدرس IP روتر، gateway یا firewall و مک آدرس آن و همچنین پورتی که به آن متصل است، مودم از حملات ARP Poisoning جلوگیری می کند.
در Switch ها نیز با استفاده از Dynamic ARP inspection که با DHCP Snooping کار می کند می توان جلوی این حملات را گرفت. در Dynamic ARP inspection پورت های trusted و untrusted مشخص می شوند و آدرس IP و MAC بسته های دریافتی ARP با استفاده از دیتابیس DHCP Snooping بررسی می شوند. پورت های Access باید به عنوان untrusted و پورت های متصل به روتر و دستگاه هایی که نمی خواهید بسته های ARP آنها چک شوند را در حالت trusted قرار می دهید. از دستورات زیر برای فعال سازی این قابلیت استفاده می شود:
Switch(config)# ip arp inspection vlan 1
با استفاده از دستور زیر پورت را در حالت trusted می توانید قرار دهید:
Switch(config-if)# ip arp inspection trust
حمله ARP Poisoning یکی از حملات رایج در شبکه می باشد که روش های متنوعی برای شناسایی و حتی جلوگیری از رخداد آن وجود دارد. هر روش مزایا و معایبی در شرایط مخصوص خود دارد و روش برتری وجود ندارد. بهترین راه حل استفاده از ترکیبی از روش های موجود برای شناسایی و جلوگیری است. اگر از ابزار های شناسایی این نوع حملات استفاده کنید هر زمان که حمله رخ داد، می توانید از وجود آن باخبر شوید و حمله را قبل از اینکه آسیب زیادی برساند قطع کنید.