حمله CAM MAC Table OverFlow Attack در سوئیچهای سیسکو
CAM MAC Table OverFlow Attack | سوئیچهای سیسکو برای هدایت فریمهای داده به پورت مورد نظر از جدولی به نام جدول CAM که مخفف Content Addressable Memory است استفاده میکنند. وظیفه این جدول نگهداری تناظر بین آدرس مک و پورت سوئیچ است. به عنوان مثال اگر کامپیوتر A به پورت 1 سوئیچ متصل باشد، سوئیچ با دریافت اولین فریم از کامپیوتر A در جدول CAM خود سطری را مبنی بر اینکه آدرس مک کامپیوتر A از طریق پورت 1 قابل دسترس است، ایجاد میکند.
هنگامی که سوئیچ فریمی را به مقصد مک آدرسی دریافت میکند که این مک آدرس را در جدول CAM خود ندارد به ناچار فریم را به همه پورتهای خود ارسال میکند. اما به محض دریافت اولین فریم از کامپیوتری با آن مک آدرس، آن را به جدول CAM خود اضافه میکند تا دیگر نیازی به ارسال فریم به تمام پورتها، که از لحاظ امنیتی بسیار پر خطر است، نداشته باشد.
Switch#show mac address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- Switch#show mac address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 1 0050.7966.6800 DYNAMIC Gi0/0 Total Mac Addresses for this criterion: 1 Switch#show mac address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 1 0050:7966.6800 DYNAMIC Gi0/0 1 0050.7966.6801 DYNAMIC Gi0/1 Total Mac Addresses for this criterion: 2
تعداد سطرهایی که جدول CAM میتواند در خود جای دهد محدود است، اگر این جدول به طور کامل پر شود سوئیچ برای ارسال فریم به یک آدرس مک جدید با مراجعه به این جدول سطری را پیدا نمیکند و به ناچار فریم را به تمامی پورتهای سوئیچ ارسال میکند. این کار باعث میشود یک attacker در صورت امکان اتصال به یکی دیگر از پورتهای سوئیچ بتواند به دادههایی که بین دیگران رد و بدل میشود، دسترسی داشته باشد.
برای مقابله با این خطر امنیتی موثرترین راه جلوگیری از پر شدن جدول CAM است، برای این کار با استفاده از ویژگی port security در سوئیچهای سیسکو میتوان تعداد آدرسهای مکی که سوئیچ روی هر پورت میتواند یاد بگیرد و در جدول CAM خود وارد کند را محدود کرد. به عنوان مثال میتوان تنظیم کرد که سوئیچ بر روی یک پورت میتواند حداکثر 5 مک آدرس رو یاد بگیرد و در صورتی که فریمی با ششمین آدرس مک متفاوت وارد پورت شود، سوئیچ به این امر واکنش نشان دهد. این واکنش میتواند یکی از موارد زیر باشد:
- shutdown: این واکنش که رفتار پیش فرض نیز هست به این معناست که سوئیچ پورت را غیر فعال میکند. برای فعال شدن مجدد پورت نیاز است مدیر شبکه این کار را انجام دهد.
- restrict: در این حالت سوئیچ فرمهای با مک آدرس ششم را drop میکند و پیامهای syslog و SNMP برای مدیر شبکه ارسال میکند.
- protect: در این حالت سوئیچ فرمهای با مک آدرس ششم را drop میکند اما هیچ گونه پیامی ارسال نمیکند.
انجام حمله CAM MAC Table OverFlow Attack
برای انجام این حمله و تست امنیت شبکه خودتان میتوان از ابزار macof در لینوکس استفاده کرد، ما برای انجام این کار از لینوکس Kali که یک توزیع محبوب از لینوکس برای انجام تست نفوذ و تستهای امنیتی است استفاده کردهایم. برای مشاهده سوئیچهای مختلف فرمان macof میتوانید از علامت سوال استفاده کنید.
root@kali:~# macof ? Version: 2.4 Usage: macof [-s src] [-d dst] [-e tha] [-x sport] [-y dport] [-i interface] [-n times]
root@kali:~# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.88.131 netmask 255.255.255.0 broadcast 192.168.88.255 inet6 fe80::20c:29ff:fea9:2cf9 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:a9:2c:f9 txqueuelen 1000 (Ethernet) RX packets 4881 bytes 304712 (297.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 31634 bytes 4203161 (4.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
در نهایت با استفاده از سوئیچ i- به همراه نام واسط شبکه فرمان macof را اجرا میکنیم.
root@kali:~# macof -i eth0
سیسکو قابلیتی تحت عنوان Port-Security را برای مقابله با این حمله ارائه داده است
switch#:enable switch#:configure terminal switch(config):interface Ethernet/0 switch(config-if):switchport port-security maximum 2
در کانفینگ بالا به در سوییچ سیسکویی خود به interface eth0/0 رفتیم و با دستور بالا تعداد Mac address های که مجاز به وارد شوند به این interface هستند فقط دوتا می باشد
نکته: این تعداد از 1 تا 4097 قابل افزایش است