Ataki na VLANy oraz STP opracowali inż. Krzysztof Szewczyk inż. Mateusz Witke inż. Damian Tykałowski inż. Mariusz Zalewski 1. Teoria 1.1 VLANy (802.1Q) VLAN (Virtual Local Area Network) to znana nam już z poprzednich zajęć wirtualna sieć lokalna, która istnieje w obrębie jednej sieci fizycznej i jest jej pojedyńczym logicznym elementem. Sieci VLAN tworzy się, aby odseparować od siebie użytkowników różnych sieci, aby Ci nie byli np. w stanie podsłuchiwać się nawzajem. Aby zapewnić zgodność ze starszymi standardami, wprowadzono mechanizm natywnego VLANu (ang. native VLAN) - polega on na tym, że gdy na port który obsługuje standard 802.1Q przyjdzie nieotagowana ramka, jest ona domyślnie przesyłana do natywnego VLANu czyli specjalnie utworzonej sieci wirtualnej, która jest skonfigurowana do pracy bez znaczników. Warto wiedzieć o tym fakcie, wykonując laboratorium. 1.2 STP (Spanning Tree protocol) Celem protokołu STP jest uniknięcie pętli sieciowych podczas łączenia segmentów sieci. Może istnieć tylko jedna unikalna ścieżka łącząca dwa urządzenia. Każdy pakiet STP nosi nazwę BPDU (Bridge Protocol Data Unit). Format pakiety BPDU: PID (2 bajty): protokół, zawsze wartość zerowa, Version (1 bajt): wersja STP, może to być 0 (STP), 1 (RSTP) lub 3 (MSTP), Message type (1 bajt): typ BPDU: Configuration (0x00) lub TCN(0x80), Flags (1 bajt): kilka ustawień portów (przydatne dla RSTP) i bit powiadamiania o zmianie topologii, Root ID (8 bajtów): ID nadrzędnego urządzenia, Root path cost (4 bajty): koszt przebycia trasy do urządzenia nadrzędnego, Bridge ID (8 bajtów): ID nadawcy BPDU, Port ID (2 bajty): numer portu (IEEE lub Cisco STP BPDU), z którego wysyłany jest pakiet BPDU, Message age (2 bajty): czas, który upłynął od wysłania obecnej konfiguracji przez urządzenie nadrzędne, Maximum age (2 bajty): kiedy aktualna wiadomość o konfiguracji powinna być skasowana, Hello time (2 bajty): czas pomiędzy wysyłaniem pakietów konfiguracyjnych BPDU, Forward delay (2 bajty): czas, który powinny odczekać mostki przed przejściem w nowy stan, po zmianie topologii.
2. Opis środowiska 2.1 Opis konfiguracji sieci w laboratorium Ćwiczenia są wykonywane w parach, każda para ma do dyspozycji jeden switch (Olicom bądź Cisco w zależności od wykonywanego ćwiczenia). Standardowo studenci nieparzyści są wpięci do portu pierwszego, parzyści do drugiego, dwa switche każdej pary są spięte na porcie trzecim (w jednym i drugim switchu) za pomocą łącza trunk. W związku z tym, całe laboratorium jest podzielone na dwie fizyczne podsieci, adresacja całej sieci prywatnej stworzonej na potrzeby laboratorium to 10.0.0.0/24, gdzie ostatni oktet to numer komputera uczestnika laboratorium. 2.2 Opis konfiguracji VLANów Każdy switch jest wyposażony w dwa VLANy, VLAN 1 gumisie - domyślny VLAN dla studentów wpiętych do portu pierwszego każdego switcha oraz VLAN 2 smerfy - VLAN dla studentów wpiętych do portu drugiego urządzenia, nie występują żadne dodatkowe podziały na tzw. VLANy w VLANach. 2.3 Opis framework a yersinia Yersinia jest programem umożliwiający wysyłanie ramek różnego typu protokołów tj. STP, CDP, DTP, DHCP, HSRP, 802.1Q, VTP. W laboratorium wykorzystywać będziemy ramki STP i DTP. Umożliwia również analizę, edycję oraz obserwacje pakietów sieciowych Yersinia działa w jednym z trzech głównych trybów: linia poleceń (CLI) może być używana do doraźnych ataków ten tryb dodano, by ułatwić testerom stosowanie narzędzia w skryptach, demon sieciowy pozwala używać Yersinii zdalnie CLI jest bardzo podobne do stosowanego w produktach Cisco, graficzny interfejs (GUI) napisany w ncurses. Nazwa narzędzia pochodzi od bakterii, która wywołała epidemię Czarnej Śmierci w średniowiecznej Europie Yersinia pestis.
3. Ataki na STP Największą słabością STP jest brak uwierzytelniania i nadzoru. Każde urządzenie i każda osoba, w tym atakujący, może wysłać BPDU i uczestniczyć w transmisji protokołowej. 3.1 Wymuszenie ciągłej rekonfiguracji sieci Atak polega na ciągłym wysyłaniu do switcha pakietów BPDU (ang. Bridge Protocol Data Unit) przez co zmusza się urządzenie do ciągłego przeliczania tras (każdy taki pakiet wiąże się z wprowadzeniem zmiany w topologii sieci). Wyróżniamy dwa typy pakietów BPDU: configuration - wysyłany co jakiś czas pokazuje konfigurację sieci topology change notification - wysyłany przy przy wykryciu zmiany w sieci (np. przyłączenie się nowego urządzenia) Atak możemy przeprowadzić używając jednego z tych rodzaju pakietów. Oba z nich wymuszają na wszystkich urządzeniach uczestniczących w STP ciągłe przeliczanie tras, co prowadzi do niestabilności sieci, gdyż podczas tego procesu pamięć i procesor są przeciążone i nie wyrabiają się z obsługą kolejnych pakietów. Efektem są pętle sieciowe, zduplikowane pakiety krążące po całej sieci, które z upływem czasu mogą prowadzić do całkowitego zaprzestania działania sieci - tutaj może nastąpić restart urządzenia. Oba ataki polegają na zwyczajnym zalewaniu sieci tysiącami pakietów (atak DoS - Denial of Service), w pierwszym wypadku configuration z losowo wygenerowanymi adresami źródłowymi MAC oraz w przypadku pakietów topology change notification - losowe Bridge ID. Sam atak przypomina symulację tysięcy nowych urządzeń, które przyłączają się do sieci, co niestety dla wielu urządzeń (i ich parametrów) okazuje się zbyt dużym wyzwaniem. 3.2 Podszywanie się pod roota Oprócz wyżej opisanych istnieje jeszcze jeden atak - claiming root role - polega on na podszyciu się pod urządzenie sieciowe o niższym root id w sieci. Najpierw przechwytywany jest pakiet zawierający aktualny root id (czyli ID switcha), a następnie zmniejszamy to ID i wysyłamy pakiety ze zmienioną informacją do sieci, tak aby inne urządzenia myślały, że jesteśmy rootem.
4. Ataki na VLAN Atak typu wstrzykiwanie pakietów do VANu może zostać przeprowadzony na dwa różne sposoby: Switch spoofing Podszywanie się pod switch Double Tagging Podwójne tagowanie 4.1 Switch spoofing podszywanie się pod switcha Łącza typu trunk w VLANach przenoszą w ogólności cały ruch należący do różnych VLANów. Jeżeli atakujący potrafi wymusić aby switch przełączył przełączył port do którego podłączony jest atakujący w tryb trunk mode wtedy atakujacy może podsłuchiwać ruch przechodzący przez sieć. Atakujący nasłuchując pakiety moze wejść w posiadanie danych przesyłanych przez sieć w tym wrażliwych danych do uwierzytelnienia. Switche firmy Cisco są wyposażone w mechanizm, który standardowo pozwala na automatyczną konfigurację trybu portu. Standardowo porty w VLANie mogą znajdować się w jednym z dwóch trybów: access (dostępowy) trunk (tranzyt łącza tranzytowe przenoszą ruch pochodzący z różnych VLANów). Autokonfiguracja trybu portu oznacza, że port może dynamicznie przełączyć się na przykład w tryb trunk jeżeli otrzyma ramke DTP (Dynamic Trunking Protocol). Atakujący może przełączyć port switcha w tryb trunk na dwa sposoby: Pierwszym z nich jest wysłanie sfałszowanej ramki DTP z komputera do switcha.
Drugim sposobem jest podłączenie dodatkowego złośliwego przełącznika do przełącznika co prezentuje poniższy rysynek. Atakujący mając dostęp do złośliwego przełącznika konfiguruje port do którego jest podłączony komputer w tryb trunk. Tak samo robi z portem do którego podłączony jest dobry switch. W ten sposób ma dostęp do informacji przepływających w sieci, a także ma możliwość wstrzyknięcia złośliwych ramek do sieci. 4.2 Double Tagging - podwójne tagowanie Atak typu "podwójne otagowanie" występuje wtedy kiedy atakujący podłączony do switcha wysyła mu ramkę otagowaną dwoma (a może być ich więcej, dwa to minimum do przeprowadzenia ataku, ogranicza nas wielkość ramki ethernetowej) VLANami. Pozwala na przesłanie ramki mnięszy dwoma vlanami, co jest niemożliwe bez użycia routera. Atak można przeprowadzić w sieci spełniającej warunki: Atakujący jest połączony z dostępowym portem (access port) switcha. Switch musi mieć połączenie typu tranzytowego - 802.1q trunk Atakujący jest podłączony do vlanu, który w łączu tranzytowym (trunk) jest natywnym vlanem. Przykład ataku: Atakujący podłączony do VLANu 1 (natywnwego vlanu) na przełączniku i wysyła podwójnie otagowaną ramkę. Pierwszy tag 802.1q dotyczy VLANu do którego ma trafić ramka. W tym przypadku jest to VLAN 2. Drugim tagiem 802.1q jest tag VLANu do którego należy atakujący i jest to VLAN natywny dla łącza trunk. Kiedy lokalny switch - do którego podłączony jest atakujący otrzyma tak podwójnie otagowaną ramkę zdecyduje, że ma trafić do łącza trunk. Tag który dotyczy VLANu 1 zostanie ściągnięty, ponieważ dla łącza trunk jest to natywny VLAN i switch wyśle ramkę do drugiego switcha już z jednym tagiem, który dotyczy VLANu 2. Switch który odbierze ramkę stwierdzi że jest ona otagowana VLANem 2. Tag dotyczący VLANu 2 zostanie usunięty i ramka trafi do VLANu 2. W ten sposób atakujący przesłał ramkę z VLANu 1 do VLANu 2 nie używając routera.
5. Obrona 5.1 Jak się bronić przed STP STP - Wyłączyć STP, tam gdzie to jest niepotrzebne, używać Spanning Tree Portfast BPDU Guard Enhancement i STP Root Guard Enhancement. 5.2 Jak się bronić przed atakiem Switch spoofing Zapewnić aby nie można było na portach negocjować przejścia w tryb trunk za pomocą protokołu DTP. Switch(config-if)# switchport nonegotiate Ręcznie skonfigurować port aby pracował w trybie access. Switch(config-if)# switchport mode access 5.3 Jak bronić się przed atakiem double hopping? Double tagging może być wykorzystane jedynie wtedy kiedy sieć używa natywnego VLANu. Porty dostępowe (access) pochodzące z natywnego VLANu odrzucają otagowane ramki pozwalając atakującemu na wykonanie ataku double hopping. Zabezpieczyć przed tego typu atakiem można się za pomocą wykonania kilku prostych kroków: przełączyć każdy port w trybie access aby należał do innego VLANu niż natywny Switch(config-if)# switchport access vlan Zmienić na łączach trunk natywny VLAN (inny niż standardowo VLAN1) Switch(config-if)# switchport trunk native vlan 999 Włączyć tagowanie na portach trunk dla natywnego VLANu Switch(config-if)# switchport trunk native vlan tag