در این پست به حمله DHCP starvation میپردازیم و خواهیم دید که چگونه مهاجم با کمک حمله مذکور، DHCP Server موجود در شبکه را از دسترس خارج می نماید و در نهایت کاربران امکان گرفتن IP را نخواهند داشت.
اگر بخواهیم تعریف مختصری از DHCP داشته باشیم، می توانیم بگوییم که DHCP به دستگاه هایی که دارای کارت شبکه فعال می باشند، اجازه می دهد تا تنظیمات شبکه، اعم از آدرس های IP، Default gateway، DNS Server و ... را به صورت خودکار دریافت نمایند.
به ارسال تعداد زیادی از بسته های DHCP Discovery (به صورت Broadcast) برای DHCP server شبکه حمله DHCP Starvation میگویند. به این صورت که مهاجم به ازای هر درخواست، یک آدرس MAC جعلی تولید می نماید و به عنوان آدرس MAC مبدا بسته قرار می دهد. از آن جایی که وظیفه DHCP Server، پاسخ به بسته های DHCP Discovery است، شروع به پاسخ بسته های جعلی ارسال شده می کند که هر کدام منجر به تخصیص IP توسط DHCP Server می شود. در نتیجه به دلیل تعداد بالای این بسته ها، DHCP Pool خالی میشود و هیچ IP تخصیص نیافته ای در DHCP Pool یافت نمیشود. در این زمان اگر دستگاه جدیدی وارد شبکه شود، DHCP Server قادر به تخصیص IP و دیگر تنظیمات شبکه به آن، نمی باشد.
برای پیاده سازی چنین حمله ای میتوانیم از ابزار DHCPig استفاده نماییم که از لینک زیر قابل دسترس می باشد.
https://github.com/kamorin/DHCPig
بنا بر توضیحاتی که در مستند ابزار DHCPig آمده است، با اجرای آن، به صورت خودکار تمامی IPهای قابل تخصیص در DHCP Pool با ارسال بسته های جعلی DHCP Discovery خالی می شود تا کاربران جدید، امکان دریافت IP از Server DHCP را نداشته باشند. همچنین IP های درحال استفاده (تخصیص یافته شده به سیستم ها) را آزاد می نماید.
سناریو حمله DHCP Starvation:
در این سناریو مطابق تصویر زیر، فرض شده است که روتر با آدرس 192.168.2.1، DHCP Server می باشد و از آدرس IP 192.168.2.10 تا 192.168.2.25 به سیستم های شبکه، IP اختصاص می دهد. همچنین فرض شده است که یک سیستم عضو شبکه شده است و از DHCP Server آدرس 192.168.2.20 را گرفته است. یک سیستم دیگر به عنوان Client در نظر گرفته شده است که قبل از درخواست IP، مهاجم اقدام به حمله DHCP Starvation کرده است.
وضعیت DHCP Pool قبل از اجرا حمله توسط Attacker، به صورت زیر می باشد.
اجرا حمله:
مرحله اول: اجرا ابزار DHCPig
Attacker قصد ایجاد اختلال در سرویس دهی DHCP Server را دارد. به همین منظور، با کمک دستور زیر، ابزار DHCPig را اجرا می نماید.
./pig.py -c --verbosity=99 eth0
با اجرا دستور فوق، DHCPig شروع به ارسال بسته های DHCP Discovery مینماید و لیست تمامی IPهای اختصاص داده نشده DHCP Pool را با آدرس های MAC جعلی (به صورت تصادفی تولید می شود) خالی می نماید. همانطور که در تصویر زیر قابل مشاهده می باشد، DHCP Pool از آدرس 192.168.2.10 تا 192.168.2.25 مورد استفاده قرار گرفته اند.
مرحله دوم: درخواست IP توسط کاربر جدید در شبکه
در این زمان، Client ای که قصد ورود به شبکه را دارد، پیام DHCP Discovery ارسال می نماید ولی به دلیل خالی بودن DHCP Pool امکان تخصیص IP برای Client فراهم نمی باشد. در نتیجه، Client نمی تواند با سایر سیستم های موجود در شبکه ارتباط برقرار کند.
همانطور که در تصویر زیر قابل مشاهده می باشد، client آدرس APIPA گرفته است.