یکی از پرکاربردترین سرویس استفاده شده در شبکه های مختلف سرویس DHCP میباشد. این سرویس به صورت پویا به همه کلاینت های موجود در شبکه آدرس IP میدهد؛ مثلاً اگر در مجموعه ی شبکه ی خود ۲۰۰ کامپیوتر داشته باشید، دیگر لازم نیست که پشت تک تک کامپیوترها بنشینید و IP وارد کنید؛ فقط کافی است سرویس DHCP را روی سرور اصلی فعال کنید و کامپیوترها را در حالت دریافت IP به صورت اتوماتیک قرار دهید. به همه ی کامپیوترها IP در رنج مشخصشده تخصیص داده خواهد شد.
در این قسمت میخواهیم روشهایی را ارائه دهیم تا مهاجمان با استفاده از ابزارهای موجود نتوانند از طریق این سرویس به منابع شبکه دسترسی داشته باشد، برای ایجاد امنیت نیاز به دستگاههای سیسکو مانند سوئیچ دارید تا بتوانید این قابلیت امنیتی را در آن فعال کنید.
عملکرد DHCP به چهار قسمت پایه تقسیم میگردد
- اکتشاف (DHCP Discovery)
- پیشنهاد (DHCP Offer)
- درخواست (DHCP Request)
- تصدیق (DHCP Acknowledgement)
این چهار مرحله به صورت خلاصه با عنوان DORA شناخته میشوند.
DHCP Discovery (اکتشاف DHCP)
هر سرویس گیرنده (کاربر) برای شناسایی سرورهای DHCP موجود اقدام به فرستادن پیامی در زیر شبکه خود میکند. مدیرهای شبکه میتوانند مسیریاب محلی را به گونه IPکربندی کنند که بتواند بسته دادهای DHCP را به یک سرور DHCP دیگر که در زیر شبکه متفاوتی وجود دارد، بفرستد. این مهم باعث ایجاد بسته داده با پروتکل UDP میشود که آدرس مقصد ارسالی آن ۲۵۵.۲۵۵.۲۵۵.۲۵۵ یا آدرس مشخص ارسال زیر شبکه میباشد. کاربر (سرویس گیرنده) DHCP همچنین میتواند آخرین IP آدرس شناخته شده خود را درخواست بدهد. اگر سرویس گیرنده همچنان به شبکه متصل باشد در این صورت IP آدرس معتبر میباشد و سرور ممکن است که درخواست را بپذیرد. در غیر اینصورت، این امر بستگی به این دارد که سرور به عنوان یک مرجع معتبر باشد. یک سرور به عنوان یک مرجع معتبر درخواست فوق را نمیپذیرد و سرویس گیرنده را مجبور میکند تا برای درخواست IP جدید عمل کند.
DHCP Offer (پیشنهاد DHCP)
زمانی که یک سرور DHCP یک درخواست را از سرویس گیرنده (کاربر) دریافت میکند، یک IP آدرس را برای سرویس گیرنده رزرو میکند و آن را با نام DHCP Offer برای کاربر میفرستد. این پیام شامل: MAC آدرس (آدرس فیزیکی دستگاه) کاربر؛ IP آدرسی پیشنهادی توسط سرور؛ Subnet Mask IP؛ زمان تخصیص IP (lease Duration) و IP آدرس سروری میباشد که پیشنهاد را داده است.
DHCP Request (درخواست DHCP)
سرویس گیرنده با یک درخواست به مرحله پیشین پاسخ میگوید. یک کاربر میتواند پیشنهادهای مختلفی از سرورهای متفاوت دریافت کند. اما فقط میتواند یکی از پیشنهادها را بپذیرد. بر اساس تنظیمات شناسایی سرور در درخواست و فرستادن پیامها (identification option)، سرورها مطلع میشوند که پیشنهاد کدام یک پذیرفته شدهاست. هنگامی که سرورهای DHCP دیگر این پیام را دریافت میکنند، آنها پیشنهادهای دیگر را، که ممکن است به کاربر فرستاده باشند، باز پس میگیرند و آنها را در مجموعه IPهای در دسترس قرار میدهند.
DHCP Acknowledgement (تصدیق DHCP)
هنگامی که سرور DHCP، پیام درخواست DHCP را دریافت میکند، مراحل پیکربندی به فاز پایانی میرسد. مرحله تصدیق شامل فرستادن یک بسته دادهای (DHCP Pack) به کاربر میباشد. این داده بستهای شامل: زمان تخصیص IP یا هرگونه اطلاعات پیکربندی که ممکن بودهاست که سرویس گیرنده درخواست کرده باشد، میباشد. در این مرحله فرایند پیکربندی IP کامل شدهاست.
پیغامهای DHCP در دیتا گرامهای UDP حمل میشوند و در سمت سرویس دهنده از شماره پورت ۶۷ و در سمت سرویس گیرنده از پورت ۶۸ استفاده میکند. پروتکلهایی که در ارتباط با DHCP کار میکنند شامل IP, BOOTP , UDP, TCP, RARP میباشند.
مشکلات امنیتی پروتکل DHCP
همانطور که گفته شد پیغام DHCP Discovery یک پیغام Broadcast است، از این رو در صورتی که بیش از یک سرور DHCP در شبکه موجود باشند، هرکدام از آن سرورها به صورت مجزا به سیستم درخواست کننده پاسخ میدهند، در این حالت، سیستمی که پیغام DHCP Discovery را فرستاده است با آن سروری عملیات را ادامه میدهد که پیغام DHCP Offer آن زودتر به دستش رسیده باشد. از این رو در صورتی که یک سرور DHCP تقلبی یا به اصطلاح Rogue DHCP در شبکه وجود داشته باشد درخواست DHCP Discovery به آن میرسد و شروع به ادامه دادن مراحل سرویس DHCP میکند.
در صورتی که DHCP Offer پیشنهاد شده از سمت سرور تقلبی، زودتر از پیغام DHCP Offer پیشنهاد شده از سمت سرور اصلی DHCP برسد، سیستمی که در ابتدا درخواست IP کرده بوده است از یک سرور DHCP مخرب IP را دریافت کرده است.
دریافت IP از سمت سرور تقلبی به خودی خود مشکلی را ایجاد نمیکند، اما حالتی را در نظر بگیریم که حمله کننده تغییراتی را در رنج IP که میخواهد به کاربران پیشنهاد بدهد ایجاد کند. تغییرات می تواند به یکی از حالت های زیر به وجود آید:
پیشنهاد کردن رنج شبکه اشتباه
در این نوع حمله، رنج شبکه تغییر کرده و کاربر یک رنج اشتباه را دریافت خواهد کرد. به طور مثال در صورتی که رنج شبکه ما ۱۰.۱۰.۱۰.۰ با subnet 24 است، حمله کننده یک IP از رنج ۱۹۲.۱۶۸.۱.۰ با Subnet 26 به آن میدهد، با به وجود آوردن این تغییر این سیستم خاص امکان برقراری ارتباط با شبکه داخلی خود را ندارد و کار کردن با آن مختل میشود.
تغییر در تنظیمات default gateway
این حمله یکی از انواع حمله های ترکیبی به حساب میآید. نحوه کار شخص حمله کننده در این روش به این گونه است که در IP پیشنهاد شده به کاربر، IP خودش را به عنوان Default Gateway قرار میدهد. در مرحله بعدی حمله کننده با نصب کردن نرم افزارهای جاسوسی شبکه مانند Wireshark می تواند تمامی ارتباطات آن سیستم را مانیتور کند و از اطلاعات مورد نظر در راستای اهداف غیر قانونی خود استفاده کند.
تغییر در DNS سرور
این روش حمله کردن را میتوان خطرناک ترین نوع حمله در بین این دسته از حملات به شمار آورد. ماهیت حمله به این صورت است که حمله کننده در مرحله اول حمله یک Website تقلبی مالی، اجتماعی، ایمیل و … همانند وب سایت های دیگر را طراحی کرده است. مرحله بعد راه اندازی یک DNS سرور تقلبی است بدین صورت که به جای برگرداندن IP واقعی سایت مورد نظر کاربر(مثل Gmail.com، bank.com و …) IP وبسایت خود را به کاربر انتقال میدهد. در این صورت تمامی اطلاعات اکانت کاربر به دست حمله کننده میرسد.
روش دیگر مورد استفاده حمله کننده برای تخریب سرویس DHCP
در روشهای حملهای که در مرحله قبل صحبت شد، فرض بر وجود داشتن همزمان هر دو سرور مخرب و اصلی در شبکه داخلی بود. در این حالت با توجه به زودتر رسیدن یا نرسیدن پیغام DHCP Offer سرور مخرب به کاربران، اطلاعات آن کاربران خاص توسط حمله کننده جاسوسی (Sniff) میشود، آیا از دید حمله کننده این روش یک روش بهینه است؟ آیا راه حلی برای sniff تمامی سیستم ها وجود دارد؟ پاسخ این جاست که در صورتی که سرور اصلی DHCP به گونهای مورد حمله قرار گیرد که قادر به سرویس دهی نباشد، تمامی سیستم های درون شبکه را میتوان تحت کنترل خود داشت.
از این رو از روشی به نام Flooding برای از کار انداختن سرویس DHCP استفاده میشود. روش کار به این گونه است که حمله کننده با فرستادن درخواستهای DHCP Discovery متوالی با MAC Address های تولید شده به صورت تصادفی پایگاه داده IPهای سرور DHCP را خالی میکند. حالا هنگامی که یک کاربر عادی DHCP Discovery را Broadcast میکند، دیگر سرور DHCP اصلی به دلیل موجود نداشتن IP پیغام DHCP Offer را نمیفرستد و تنها جواب از سمت سرویس DHCP راه اندازی شده توسط حمله کننده به دست کاربر می رسد.
نحوه دفاع در برابر حملات به سرور DHCP
حال که از دید حمله کننده با نحوه حمله به سرور DHCP آشنا شدیم، نوبت به بررسی راه حل های دفع حمله است. بدین منظور از دو روش Port-security و DHCP Snooping استفاده میشود.
تحلیل و بررسی Spoofing MAC Addresses
همانطور که میدانید آدرس MAC یک آدرس منحصر به فرد میباشد و برای هر دستگاه یک آدرس در نظر گرفته خواهد شد، نوع دیگری از حمله جعل کردن آدرس Mac است که در زیر این روش را بررسی خواهیم کرد.
در شکل زیر سه سیستم را مشاهده میکنید که به سوئیچ متصل شدهاند و آدرس MAC آنها در جدول سوئیچ ثبت شده است.
در شکل زیر سیستم ” Attacker’s Pc” با ارسال یک Frame در شبکه آدرس مک جعلی خود یعنی DDDD.DDDD.DDDD که مربوط به PC2 است را به سوئیچ اعلام میکند، سوئیچ هم در زمان مشخص شده جدول خود را آپدیت میکند و با این کار ترافیکی که قبل از آن به سیستم PC2 ارسال میشد به سمت سیستم Attacker’s ارسال میشود و با این روش اطلاعات به خطر خواهد افتاد.
همانطور که در شکل زیر مشاهده میکنید، در قسمت اول در جدول سوئیچ آدرس MAC در پورت Gig0/2 که قبلاً به PC2 متصل شده بود خالی شده است و به جای آن در قسمت دوم پورت Gig0/3 دارای دو آدرس MAC است که یکی از آنها آدرس MAC جعلی مربوط به PC2 است و در قسمت شمارهی سه تمام ترافیک به روتر مهاجم ارسال خواهد شد، در قسمت بعد با استفاده از PortSecurity در سوئیچ امنیت ایجاد خواهیم کرد.
تحلیل و بررسی DHCP Snooping
حتماً در شبکهی خود از سرویس پرکاربرد DHCP استفاده میکنید، یکی از بزرگترین مشکلاتی که این سرویس میتواند ایجاد کند، این است که یک سرویس دهندهی DHCP دیگری به اشتباه یا به صورت عمدی وارد شبکه شود و کلاینتهای شبکه به اشتباه با سرویس دهندهی جدید ارتباط برقرار میکنند و آدرس IP و اطلاعات در این زمینه را از سرور غیر واقعی دریافت میکنند، این مورد میتواند یکی از انواع حملات به شبکه باشد که برای حل آن باید از ویژگی DHCP Snooping استفاده کرد که در ادامه آن را بررسی خواهیم کرد.
برای شروع شکل زیر را پیاده سازی کنید:
در شکل صفحه قبل دو روتر به عنوان سرویس دهنده DHCP ایفای نقش میکنند و PC برای دریافت اطلاعات از DHCP درخواست IP میکند، روتری که با نام DHCP در شکل قرار دارد همان DHCP اصلی است که کلاینت PC باید اطلاعات IP را از آن دریافت کند، ولی اگر یک مهاجم یک سرویس DHCP دیگر که در شکل با نام DHCP Attack معرفی شده را در شبکه فعال کند میتواند PC را وادار کند تا از اطلاعات آن استفاده کند، برای حل این مشکل باید سرویس DHCP Snooping را فعال کنیم.
برای شروع روی هر دو روتر سرویس DHCP را با دستورات زیر فعال میکنیم:
تنظیمات روتر DHCP
در مورد سرویس DHCP در کتاب CCNA++ آموزش کامل را دادم که میتوانید آن را مطالعه کنید.
در این دستور یک Pool با نام P1 ایجاد میکنیم. | Switch(config-if)#ip dhcp pool p1 |
آدرس زیر شبکه مربوط به شبکه DHCP را وارد میکنیم. | Switch(config-if)#network 192.168.1.0 255.255.255.0 |
این قسمت مربوط به تعریف Gateway است. | Switch(config-if)#default-router 192.168.1.1 |
تعریف سرور DNS که خود سرور DHCP است. | Switch(config-if)#dns-server 192.168.1.1 |
بعد از اینکه سرویس DHCP فعال شد اگر وارد کلاینت شوید و کارت شبکه را بر روی حالت اتوماتیک قرار دهید به مانند شکل روبرو IP را از روتر DHCP دریافت خواهد کرد و روتر DHCP را میتوان Ping کرد.
تنظیمات روتر DHCP – Attack
بعد از اینکه روتر DHCP را فعال کردید و کلاینت Pc هم از آن IP دریافت کرد، حالا میخواهیم روتر دوم را برای DHCP فعال کنیم، برای این کار از دستورات زیر استفاده کنید.
در این دستور یک Pool با نام P1 ایجاد میکنیم. | Switch(config-if)#ip dhcp pool p2 |
آدرس زیر شبکه مربوط به شبکه DHCP را وارد میکنیم. | Switch(config-if)#network 192.168.2.0 255.255.255.0 |
این قسمت مربوط به تعریف Gateway است. | Switch(config-if)#default-router 192.168.2.1 |
تعریف سرور DNS که خود سرور DHCP است. | Switch(config-if)#dns-server 192.168.2.1 |
بعد از فعال کردن روتر دوم اگر کارت شبکه مربوط به Pc را غیرفعال و دوباره فعال کنید، آدرسی که از شبکه خواهد گرفت یک آدرس جدید در رنج روتر DHCP-Attack است که این همان مشکی است که در قسمتهای قبلی بیان کردیم.
برای حل چنین مشکلی باید یک سری دستورات را در سوئیچ وارد کنیم تا مشخص کنیم که سرور اصلی DHCP کدام است.
همانطور که همهی شما در جریان هستید تمام پورتهای سوئیچها به صورت پیشفرض در Vlan 1 قرار دارند و البته میتوانید Vlanهای مختلفی تعریف و پورتها را به آن اضافه کنید، برای اینکه سرویس DHCP Snooping را فعال کنیم باید اول این سرویس را روی Vlan اجرا کنیم.
برای شروع کار بر روی Switch دو بار کلیک کنید تا وارد صفحه Command آن شوید.
با دستور Show Vlan brief میتوانید شماره VLan را مشاهده کنید که در این قسمت شماره یک است و همه پورتها در آن قرار دارند.
با این دستور سرویس DHCP Snooping فعال خواهد شد. | Switch(config)#ip dhcp snooping |
با این دستور سرویس Snooping بر روی Vlan1 فعال خواهد شد. | Switch(config)#ip dhcp snooping vlan 1 |
بعد از فعال کردن دو دستور بالا دیگر هیچ سرویس دهندهی DHCP نمیتواند به کلاینتها IP ارائه دهد.
بعد از اینکه دو دستور را در سوئیچ اجرا کردید اگر Pc درخواست IP دهد دیگر سوئیچ به هیچ سرویس دهندهی DHCP این اجازه را نخواهد داد و کلاینت IP اشتباه خواهد گرفت.
برای اینکه روتر DHCP را به سوئیچ معرفی کنیم و بگوییم که این روتر همان روتر DHCP اصلی ما است باید از دستور زیر در پورتی که به روتر DHCP متصل است استفاده کنیم:
Switch(config)#interface Ethernet 0/2
با این دستور وارد Interface Ethernet 0/2 که به روتر DHCP متصل شده است.
Switch(config-if)#ip dhcp snooping trust
با این دستور به سوئیچ اعلام میکنیم که این پورت که به روتر DHCP متصل است جزو پورتهایی باشد که اجازه دارد سرویس DHCP روی آن فعال باشد.
بعد از اینکه پورت مورد نظر را Trust کردید، باید بقیه پورتهای سوئیچ را Untrust یا غیر قابل اعتماد کنید، برای این کار کافی است وارد پورت مورد نظر شوید و دستو زیر را اجرا کنید:
Switch(config)#int range e0/3-24
با این دستور وارد رنجی از پورت که از شمارهی ۳ تا ۲۴ است شدیم، البته میتوانید فقط وارد یک پورت شوید.
Switch(config-if-range)#no ip dhcp snooping trust
با این دستور همه پورتها Untrust میشوند.
با دستور show ip dhcp snooping میتوانید مشاهده کنید که چه پورتهایی فعال و چه پورتهایی غیرفعال هستند، اگر به دستور زیر توجه کنید در ستون Trusted گزینهی Yes و No قرار داده شده است.
Switch#show ip dhcp snooping
Interface Trusted Rate limit (pps)
———————– ——- —————-
Ethernet0/2 yes unlimited
Ethernet0/1 no unlimited