چگونه حملات ARP Poisoning را شناسایی کرده و از آن مصون بمانیم؟

حمله ARP Poisoning، حمله ای از نوع Man in the Middle می باشد و در سطح شبکه داخلی(LAN) است که در آن هکر با فرستادن پیغام های جعلی ARP در شبکه داخلی، قادر به شنود تمامی بسته های کاربر هک شده، می شود.پروتکل Address Resolution Protocolپروتکل ARP) Address resolution protocol) عمل تبدیل IP به MAC را برای ما انجام می دهد. نحوه کارکرد آن بدین صورت است که درخواست هایی در شبکه پخش می شود که آیا IP شما ***.***.***.*** است؟ اگر درست است مک خود را ارسال کنید.در همین حین تمامی کلاینت های شبکه IP خود را چک می کنند که در صورت درست بودن یک پاسخ همراه مک به فرستنده ارسال می کنند. برای این که این درخواست پیوسته در شبکه ارسال نشود و ترافیک بیهوده ایجاد نشود.هر کلاینت یکبار این درخواست را ارسال کرده و سپس جواب‌های ارسالی را بصورت یک جدول در ARP Cache نگه داری می کند. این جدول شامل Mapping بین IP و MAC می باشد. هر زمان که بسته ای به یک کلاینت در یک شبکه داخلی ارسال می شود، باید از Gateway عبور کند سپس Gateway با استفاده از ARP، آدرس MAC کلاینتی که بسته به آن مربوط می شود را با استفاده از IP موجود در بسته پیدا کرده و آن بسته را به کلاینت مورد نظر ارسال می کند.حمله ARP Poisoning چیست؟طراحان پروتکل ARP، آن را بر اساس کارایی ساختند که باعث شد حفره های امنیتی زیادی در آن به وجود آید. حفره های امنیتی آن باعث شد که هکرها تا زمانی که در شبکه داخلی به کلاینت هدف خود دسترسی داشته باشند، بتوانند به آسانی به وی حمله کنند.حمله ARP Poisoning به عمل ارسال بسته های جعلی ARP Reply به یک Gateway در یک شبکه داخلی می گویند. هکرها با داشتن آدرس IP کلاینت هدف، می توانند بسته های جعلی ARP را به سایر کلاینت های داخل شبکه ارسال کنند. پیام های جعلی به کلاینت ها این مفهوم را می رسانند که آدرس MAC هکر باید به آدرس IP کلاینت هدف در جدول ARP آن ها نگاشت شود. این عمل باعث می شود کلاینت های موجود در شبکه، جدول ARP Cache خود را با آدرس Mac هکر Update کنند. هر موقع که کلاینت ها بخواهند بسته ای به کلاینت هدف ارسال کنند، این بسته به هکر ارسال خواهد شد. هکر می تواند به طور مخفیانه داده ها را دزدیده یا آن ها را دستکاری و به مقصد برساند یا حتی به طور کامل ارتباط کلاینت ها با کلاینت هدف را قطع کند.چگونه حملات ARP Poisoning را شناسایی کنیم؟روش های مختلفی برای شناسایی حمله ARP Poisoning وجود دارد. Command Prompt ویندوز، برنامه هایی مانند Snort ، ArpWatch ، ArpAlert ،XArp و ... قابلیت شناسایی این نوع حملات را دارند. در ادامه با نحوه شناسایی هکر با استفاده از برخی از روش های ذکر شده آشنا می شویماستفاده از ابزار Command Prompt ویندوزاگر به اینکه کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته یا خیر مشکوک هستید، یک راه ساده استفاده از Command Prompt است. با استفاده از دستور "arp -a" می توانید ARP Table خود را مشاهده کنید.بخشی از آدرس MAC دستگاه ها به دلایل امنیتی سیاه شده استدر این جدول اگر دو دستگاه با آدرس IP های مختلف دارای آدرس MAC یکسانی باشند آنگاه احتمالا کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته است. البته این موضوع را نمی توان با قطعیت بیان کرد زیرا در بعضی مواقع در برخی روترها آدرس IP ابتدا و انتهای آن با یک آدرس MAC در ARP Table ذخیره می شود. این مورد یکی از استثناها می باشد.مشابه این سناریو در دستگاه های لینوکسی و مک نیز قابل اجراست اما برای دستگاه های اندرویدی نیاز به دسترسی روت خواهید داشت.ابزار قدرتمند XArpاین ابزار پیشرفته برای لینوکس و ویندوز منتشر شده است که در Background اجرا شده و حملات را به طور آنی شناسایی می کند.با تنظیم Security Level به minimal یا basic یا high و یا aggressive می توانید حساسیت برنامه را تنظیم کنید.چگونه از حملات ARP Poisioning در امان بمانیم؟حال که با نحوه شناسایی حمله ARP Poisoning آشنا شدیم، بهتر است از روش هایی برای حفاظت دستگاه و داده های خود در برابر این نوع حملات استفاده کنید. استفاده از VPNیک روش برای جلوگیری از مورد تهاجم گرفتن توسط حمله هکرها استفاده از VPN است. در حالت عادی، وقتی که به اینترنت متصل می شوید در ابتدا به یک ISP وصل می شوید تا با شبکه جهانی اینترنت ارتباط برقرار کنید اما با استفاده از VPN، یک تونل Encrypted بین شما و سرور VPN برقرار می شود که فعالیت شما را از هکرها مخفی نگاه میدارد. البته VPN ها به دلیل بودن زمان بر بودن عملیات Encryption و Decryption ممکن است سرعت دسترسی آنلاین شما را کم کنند.استفاده از Static ARPدرج رکوردهای ARP به صورت Static می تواند ریسک مورد تهاجم قرار گرفتن را کاهش دهد. اگر در شبکه داخلی شما دو کلاینت اغلب اوقات باهم در ارتباط اند، تنظیم جدول ARP به طور Static برای این دو کلاینت می تواند یک لایه حفاظتی برای در امان ماندن از حملات اضافه کند.روتر های CISCO می توانند تشخیص دهند عمل ARP Poisoning رخ می دهد یا خیر و در صورت رخداد آن، فعالیت آن را از سر گیرند.اعتبارسنجی IP هادر حالت معمول، کلاینت ها تنها از آدرس IP برای تشخیص هویت کلاینت دیگر استفاده می کنند که این عامل باعث می شود کار هکرها برای Spoofing راحت شد. یک راه حل دیگر برای در امان ماندن از حملات ARP Poisoning استفاده از نام کاربری و رمز عبور برای اعتبارسنجی کلاینت ها است. برای ساخت یک سیستم اعتبارسنجی باید آن را در سطح سازمان خود تعریف کنید و به کلاینت های معتبر، نام کاربری و رمز عبور مخصوص بدهید. این تکنیک ساده می تواند یک لایه حفاظتی دیگر به شبکه شما اضافه کند و هکرهایی که میخواهند به شبکه دسترسی غیرمجاز داشته باشند را شناسایی کند.فیلتر کردن بسته ها (Packet Filtering)این فیلترها بسته هایی که در شبکه ارسال می شوند را آنالیز می کنند و بسته های جعلی و کلاینت هایی که بسته جعلی می فرستند را فیلتر می کنند. علاوه بر این فیلترها می توانند بسته هایی که در واقع از بیرون آمده است ولی ادعا می کند منشاء داخلی دارند را تشخیص دهند. این امر شانس هکرها برای یک حمله موفقیت آمیز را کاهش می دهد.استفاده از امکانات Switch ها و مودم هامودم هایی مانند مودم های شرکت 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 رخ میدهد ترافیک شبکه بالا میرود و باعث DELAY یا تاخیر می شود. فرض کنید تمام ترافیکی که بین کلاینت ها رد و بدل می شود باید اول از اسنیفر عبور کند یعنی اسنیفر واسط بین کلاینت ها و GATEWAY می شود که باعث پایین آمدن سرعت می شود.از طرفی دیگر باید ARP Cache Entryوجود داشته باشد یعنی اسنیفر برای تولید بسته ARP جعلی به سراغ ARP Cache Table میرود و آن را Update می کند ولی خود اسنیفر نمی تواند یک نسخه Entry در جدول مک ادرس تولید کند یعنی باید از قبل وجود داشته باشد و اسنیفر، آدرس MAC کلاینت هدف را داشته باشد تا اسنیفر بتواند آن را اصلاح کند.از طرف دیگر این حمله با استفاده از ARP کار میکند که این پروتکل درون لایه 2 قرار دارد یعنی برای این کار شما باید درون LAN باشید و بیرون از این Network شما نمی توانید اسنیف کنید.نتیجهحمله ARP Poisoning یکی از حملات رایج در شبکه می باشد که روش های متنوعی برای شناسایی و حتی جلوگیری از رخداد آن وجود دارد. هر روش مزایا و معایبی در شرایط مخصوص خود دارد و روش برتری وجود ندارد. بهترین راه حل استفاده از ترکیبی از روش های موجود برای شناسایی و جلوگیری است. اگر از ابزار های شناسایی این نوع حملات استفاده کنید هر زمان که حمله رخ داد، می توانید از وجود آن باخبر شوید و حمله را قبل از اینکه آسیب زیادی برساند قطع کنید.