VLAN Hopping یکی از تکنیکهای حمله و تست نفوذ در شبکه است که به مهاجم اجازه میدهد تقسیمبندیهای شبکه را دور بزند. پیش از آن که درباره این حمله صحبت کنیم، ابتدا لازم است درباره چند مفهوم پایه اندکی بیاموزیم.
شبکهی محلی مجازی یا VLAN برای اشتراکگذاری منابع فیزیکی شبکه، ضمن ایجاد تقسیمبندی یا سگمنتیشن برای جداکردن گروههای مختلف از یکدیگر استفاده میشود. برای مثال، یک هاست روی VLAN شماره 1، از هر هاستی که روی VLAN شماره 2 باشد جدا شده است. هر پکتی که بین VLANها ارسال شد، باید از یک روتر یا دستگاه لایه 3 دیگری عبور کند. امنیت تنها یکی از چندین دلیلی است که ادمینهای شبکه VLANها را پیکربندی و ایجاد میکنند. با این وجود، یک مهاجم با اکسپلویتی که با نام «VLAN Hopping» شناخته میشود، میتواند این سدهای امنیتی را دور بزند.
این نوع اکسپلویت به مهاجمان اجازه میدهد هرگونه محدودیت لایه 2 را که برای جداکردن هاستها ساخته شده، دور بزنند. اگر پورتهای سوییچها به درستی پیکربندی شده باشند، مهاجم مجبور میشود از یک روتر یا دستگاه لایه 3 دیگری عبور کند تا بتواند به هدف خود دسترسی داشته باشد. با این وجود، بسیاری از شبکهها یا VLAN را ضعیف یا اشتباه پیکربندی کردهاند که باعث میشود مهاجم بتواند این اکسپلویت را اجرا کند. در این مقاله، دو روش اصلی VLAN Hopping، یعنی Switch Spoofing (جعل سوییچ) و Double Tagging (تگگذاری دوگانه) را با هم بررسی میکنیم و سپس درباره تکنیکهای مقابله با این حملات میآموزیم.
اگر بخواهیم آسیبپذیریهای سوییچها را بیابیم و آنها را اکسپلویت کنیم، ابتدا باید بدانیم سوییچها چگونه کار میکنند. در واقع الزاما خود دستگاه را اکسپلویت نمیکنیم، بلکه پروتکلها و پیکربندیهایی را اکسپلویت میکنیم که نحوهی کارکردن آن را تعیین میکنند.
روی یک سوییچ، هر پورت یا به عنوان پورت دسترسی یا پورت ترانک (trunk) پیکربندی میشود. پورتهای دسترسی معمولا برای اتصال هاستها به سوییچ استفاده میشوند. وقتی VLAN پیادهسازی شده باشد، هر پورت به فقط یک VLAN اختصاص داده میشود. پورت ترانک زمانی استفاده میشود که قرار است دو سوییچ یا یک سوییچ و یک روتر به هم متصل شوند. پورتهای Trunk اجازهی عبور ترافیک متعلق به چندین VLAN متفاوت را میدهند. پورت ترانک را هم میتوان به صورت دستی پیکربندی کرد، هم میتوان آن را به صورت دینامیک و با استفاده از پروتکل Dynamic Trunking (DTP) ایجاد کرد.
DTP یک پروتکل متعلق به سیسکو است که یکی از استفادههای آن ایجاد یک لینک ترانک بین دو سوییچ به صورت دینامیک است.
با شرکت در دورههای تست نفوذ به جامعه کارشناسان امنیت بپیوندید:
در این حمله، مهاجم به عنوان یک سوییچ عمل میکند تا یک سوییچ واقعی را فریب دهد و یک لینک ترانک بین خود و آن سوییچ ایجاد کند. همانطور که پیش از این نیز اشاره شد، پکتهای تمام VLANها اجازهی عبور از لینک ترانک را دارند. به همین خاطر وقتی یک لینک ترانک ایجاد شد، مهاجم میتواند به ترافیک تمام VLANها دسترسی داشته باشد. این اکسپلویت فقط زمانی میتواند موفق شود که یک سوییچ واقعی بهگونهای پیکربندی شده باشد که اجازه برقراری اتصال trunk را بدهد. این اتفاق زمانی میافتد که یکی از اینترفیسهای سوییچ روی حالت «Dynamic Desirable»، «Dynamic Auto» یا «Trunk» تنظیم شده باشد. اگر سوییچ هدف روی یکی از این حالتها پیکربندی شده باشد، مهاجم میتواند از کامپیوتر خودش یک پیام DTP تولید کند و یک لینک ترانک ایجاد کند.
تگگذاری دوگانه زمانی اتفاق میافتد که مهاجم تگهای روی یک فریم اترنت را تغییر میدهد یا به آن تگ اضافه میکند تا امکان ارسال پکتها از طریق تمام VLANها را به وجود آورد. این حمله، به تعداد سوییچهایی که تگها را پردازش میکنند وابسته است. اکثر سوییچها فقط تگ بیرونی را حذف میکنند و سپس فریم را به تمام پورتهای native VLAN فوروارد میکنند. حالا با در نظر داشتن این مساله، این اکسپلویت فقط زمانی موفق میشود که هکر عضوی از native VLAN لینک ترانک باشد. یک نکتهی مهم دیگر که باید در نظر داشته باشید این است که این حمله کاملا یکطرفه است، چون تغییر و اضافهکردن تگها در پکت برگشتی غیرممکن است. .
سناریوی اول: حمله Switch Spoofing
در این سناریو یک مهاجم، یک سوییچ و یک سرور هدف داریم. مهاجم از طریق اینترفیس FastEthernet 0/12 به سوییچ متصل شده است و سرور هدف هم از طریق اینترفیس FastEthernet 0/11 به سوییچ متصل شده و بخشی از VLAN2 است. توپولوژی این سناریو را میتوانید در تصویر زیر ببینید:
حالا که با توپولوژی کاملا آشنا شدید، بیایید نگاهی به چند دستور پیکربندی سوییچ بیندازیم:
interface FastEthernet0/11
switchport mode access
switchport mode nonegotiate
switchport access vlan 2
!
interface FastEthernet0/12
switchport mode dynamic auto
احتمالا متوجه مشکل موجود در پیکربندی اینترفیس fa0/12 شدید. این پورت به گونهای تنظیم شده که negotiationهای ورودی باز باشند تا بتوان تعیین کرد پورت از نوع دسترسی یا از نوع ترانک است. این یعنی مهاجم میتواند یک حملهی جعل سوییچ انجام دهد. وقتی مهاجم به پورت متصل شد، میتواند یک پیام DTP ارسال کند و اینگونه یک لینک ترانک ایجاد میشود.
مهاجم میتواند از برنامهای مانند Yersinia برای تولید و ارسال پیام DTP استفاده کند. Yersinia یک چارچوب تست نفوذ است که برای حمله به بسیاری از پروتکلهای لایه 2 طراحی شده است. این ابزار به صورت پیشساخته در کالی لینوکس قرار دارد و به یک رابط کاربری گرافیکی (GUI)با استفادهی آسان هم مجهز است. برای دانلود این ابزار هم میتوانید به این صفحه مراجعه کنید. برای اجراکردن این ابزار به صورت گرافیکی، دستور زیر را در ترمینال اجرا کنید:
yersinia –G
در تصویر زیر میتوانید تصویری از رابط کاربری گرافیکی این ابزار را ببینید:
حالا برای ارسال یک پیام DTP کافیست 4 مرحله زیر را انجام دهید:
1. روی «Launch Attack» کلیک کنید.
2. روی تب «DTP» کلیک کنید.
3. روی «enable trunking» کلیک کنید.
4. روی «ok» کلیک کنید.
پس از طیکردن این مراحل، Yersinia پیام DTP را ارسال میکند و ظرف چند ثانیه، لینک ترانک ایجاد میشود. در سناریوی ما، مهاجم پس از انجام این کار به تمام ترافیک VLAN2 دسترسی پیدا میکند و میتواند مستقیما و بدون عبور از هیچ دستگاه لایه 2 حمله را انجام دهد.
سناریوی دوم: حمله دابل تگینگ
در این سناریو یک مهاجم، 2 سوییچ و یک سرور هدف داریم. مهاجم به سوییچ 1 متصل شده است. سوییچ 1 به سوییچ 2 متصل شده و در نهایت، سرور هدف به سوییچ 2 متصل شده است. میتوانید توپولوژی این سناریو را در تصویر زیر ببینید:
حالا که با توپولوژی آشنا شدید، بیایید نگاهی به بخشی از دستورات پیکربندی سوییچ 1 بیندازیم:
interface FastEthernet0/12
switchport mode access
switchport nonegotiate
switchport access vlan 1
!
interface FastEthernet0/11
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
switchport trunk native vlan 1
از روی این پیکربندیها میبینیم که مهاجم قادر به اجرای حملهی جعل سوییچ نیست. با این وجود، همانطور که میبینید، مهاجم عضوی از native VLAN پورت ترانک است. یعنی این توپولوژی نسبت به حمله تگگذاری دوگانه آسیبپذیر است.
sudo ./scapy
سپس از تباع sendp() برای تولید پکت استفاده کنید:
sendp(Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=2)/IP(dst='” )=”” icmp())
این دستور یک پکت 802.1q با دو تگ تودرتو تولید میکند که هدف آن VLAN2 است. برای این که متوجه شوید سوییچها چگونه این فریم را مدیریت میکنند، نگاهی به توپولوژی زیر بیندازید:
در این تصویر میبینیم که سوییچ 1 فقط تگ خارجی را میخواند و حذف میکند. سپس قسمت هاست را در VLAN ذکرشده در تگ بررسی میکند و پکت را به تمام پورتهای native VLAN فوروارد میکند. سپس سوییچ 2 پکت را دریافت میکند که اکنون فقط یک هدر دارد. این سوییچ فرض میکند که فریم به VLAN ذکرشده در این تگ (یعنی VLAN2) تعلق دارد و آن را به تمام پورتهای تنظیمشده برای VLAN2 فوروارد میکند. سپس هدف پکت ارسالشده توسط مهاجم را دریافت میکند و VLAN Hopping کامل میشود. به خاطر ویژگیهای ذاتی این حمله، ارتباط ایجادشده کاملا یکطرفه است. در ضمن به این نکته هم توجه داشته باشید که این حمله ممکن است روی سوییچهای جدیدتر کار نکند.
برای هر کدام از دو نوع حملات، یعنی جعل سوییچ و تگگذاری دوگانه، روش جداگانهای برای جلوگیری از حمله داریم:
برای جلوگیری از حمله جعل سوییچ، باید چند مرحله را انجام دهید:
1. هیچ پورت دسترسی را روی هیچکدام از حالتهای «dynamic desirable»، «dynamic auto» یا «trunk» تنظیم نکنید.
2. پورتهای دسترسی را دستی پیکربندی کنید و DTP را روی تمام پورتهای دسترسی غیرفعال کنید:
switchport mode trunk
switchport mode nonegotiate
4. تمام اینترفیسهایی را که در حال حاضر به آنها نیاز ندارید غیرفعال کنید.
برای جلوگیری از حمله تگگذاری دوگانه، native VLAN مربوط به پورتهای ترانک را از VLANهای کاربری جدا کنید.
سوییچها با هدف ایجاد امنیت در شبکه ساخته نشدهاند، ولی باید در هر سطحی که ممکن است، تمهیدات امنیتی را تا جای امکان پیادهسازی کنیم. اگر میخواهید برای سگمنتبندی شبکه خود وقت بگذارید، مطمئن شوید که این کار را درست و ایمن انجام دادهاید. در پیکربندی شبکه حوصله به خرج دهید و محتاطانه عمل کنید.