Ataki na VLANy oraz STP opracowali

Transkrypt

Ataki na VLANy oraz STP opracowali
Ataki na VLANy oraz STP
opracowali
inż. Krzysztof Szewczyk
inż. Mateusz Witke
inż. Damian Tykałowski
inż. Mariusz Zalewski
INSTRUKCJA DLA NAUCZYCIELA
Ataki na VLANy - instrukcja dla nauczyciela
Przygotowując laboratorium trzeba mieć przede wszystkim na względzie to, że nie na
wszystkich przełącznikach można przeprowadzić dane ataki na machanizmy VLAN. To, że
przełączniki muszą być zarządzalne wydaje się oczywiste, ponieważ mamy tu doczynienia z
VLANami - musimy wprowadzić dane do przełącznika. Nie tak oczywistą kwestią jest rodzaj
użytego oprogramowania na przełącznikach. W zależności od producenta i od wersji
oprogramowania na przełączniku przeprowadzenie ataku może się udać lub nie. Aby
przeprowadzić laboratorium trzeba wybrać odpowiednie przełączniki, które mają właśnie te
luki/feature-y. Do przeprowadzenia ataku typu double tagging najlepiej wybrać starsze
przełączniki (np. Crossfire 8711 Fast Ethernet Switch) ponieważ użyty w nich system pozwala
na przeprowadzenie ataku. Niestety atak ten prawdopodobnie nie powiedzie się na nowszych
urządzeniach firmy CISCO i innych producentów, ponieważ ich inżynierowie zabezpieczyli
system przed tego typu atakiem. W przypadku przełączników Olicom wykorzystana jest tutaj
luka w systemie operacyjnym, który pozwala na przyjmowanie podwójnie otagowanych ramek.
Niektóre ataki natomiast uda się wykonanać tylko na sprzęcie typu CISCO, ponieważ tylko
urządzenia firmy CISCO wykorzystują protokół DTP (Dynamic Trunk Protocol) - jest to ich
własnościowy protokół stosowany tylko na ich urządzeniach. Także dobór sprzętu i
oprogramowania sprzątu pełni kluczową rolę w przygotowaniu laboratorium.
Gdy już dokonamy wyboru odpowiedniego sprzętu pozostaje nam odpowiednio
skonfigurować sprzęt zgodnie z poniższym rysunkiem. W zależności przełącznika i
znajdującego się na nim oprogramowania konfiguracja może się różnić, więc przedstawiony
zostanie jedynie schemat ideowy i konfiguracja na konkretnym sprzęcie. Jeżeli prowadzący
będzie miał trudności w skonfigurowaniu VLANów powinien zapoznać się z dokumentacją
sprzętu.
Konfiguracja środowiska pracy - schemat ideowy:
W celu konfiguracji przełączników musimy zainstalować terminal dzięki któremy będzimy mogli
dostać się na przełącznik. Najpopularniejszym terminalem jest minicom. Aby zainstalowac
minicoma wydajemy polecenie:
sudo apt-get update (w celu uaktualnienia źródeł)
sudo apt-get install minicom
UWAGA : W używanej przez nas dystrybucji Kali Linux, jest już on zainstalowany,
dotyczy to jedynie starszej wersji BackTrack. Jeszcze jedna ważna uwaga (dotyczy
Kali Linux), należy podlinkować urządzenie /dev/ttyX do /dev/modem poleceniem:
ln ­s /dev/modem /dev/ttySX (X to numer portu szeregowego, znajdziemy go za pomocą komendy: dmesg | grep tty) Uruchamiamy minicoma wydając polecenie
minicom &
Wywołujemy menu kombinacją klawiszy Ctrl-A-Z
Przechodzimy do okna konfiguracji naciskając kombinację klawiszy Ctrl-A-O.
Ustawiamy opcję A - Serial Device na /dev/modem (w BackTracku 5 jest to wartość ttyS4
lub ttyS5, w zależności gdzie do komputera podłączona jest przedłużka RS232) i opcję
E - Bps/Par/Bits na 9600 8N1.
Konfiguracja przełączników
a) Olicom
---------------------------------------------------------aby wyświetlić dostępne polecenia należy wpisać “?” pokazą nam się dostępne polecenia na
danym poziomie np:
>?
Possible:
system
System commands
snmp
SNMP parameters
console
Console commands
port
Port commands
crosslink
Crosslink commands
mirror
Mirror commands
vlan
VLAN commands
spanning tree
Spanning Tree commands
ip
IP commands
close
Quit current CLI session
-------------------advanced
Set advanced mode
Można wchodzić po kolei w każdy poziom oraz sprawdzać poprzez “?” jakie komendy są
możliwe w kolejnym poziomie, ale jak zna sie już poddrzewo danej komendy to dużo łatwiej z
poziomu top od razu wpisywać całe polecenia w dodatku moża używać w tracie wpisywania
TAB który podpowiada możliwe komendy bez przerywania wpisywanej komnedy i bez
wchodzenia w drzewo.
> vlan all show configuration
pokaż konfiguracje wszystkich vlanów
zamiast
> vlan
vlan> all
vlan all> show
vlan all show> configuration
VLAN ID 1
Vlan name : VLAN-0001
MAC address : 00-00-24-34-32-00
IGMP snooping : disabled
Ports : 1..24
>
>
>
>
vlan
vlan
vlan
vlan
1
1
2
2
create
(może wyskoczyć błąd ponieważ vlan 1 jest już domyślnie stworzony)
set name smerfy
create
set name gumisie
Konfigurujemy interface’y w switchach: używamy + aby dodać, - aby odjąć natomiast bez
znaku nadpisujemy porty jeżeli jakieś wcześniej były ustawione
vlan 1 set port 1,3
nadpisanie
vlan 2 set port +2,+3
dodanie
na wszystkich portach należy wyłączyć tagowanie oprócz portu 3 w vlan-ie 2
vlan 1 port 3 set 802.1q tagging off
vlan 1 port 1 set 802.1q tagging off
vlan 2 port 2 set 802.1q tagging off
vlan 2 port 3 set 802.1q tagging on
----------------------------------------------------------
b) Cisco
Konfigurujemy switche w następujący sposób (obydwa tak samo):
Konfigurujemy VLANy w switchach:
switch> enable - wchodzimy do trybu uprzywilejowanego
switch# configure terminal - przechodzimy do trybu konfiguracji
switch(config)# vlan 1
switch(config-vlan)# name smerfy
switch(config-vlan)# exit
switch(config)# vlan 2
switch(config-vlan)# name gumisie
switch(config-vlan)# exit
Konfigurujemy interface’y w switchach:
switch(config)#interface fastEthernet 0/1
switch(config-if)#switchport mode access
switch(config-if)#switchport access vlan 1
switch(config-if)#exit
switch(config)#interface fastEthernet 0/2
switch(config-if)#switchport mode access
switch(config-if)#switchport access vlan 3
switch(config-if)#exit
switch(config)#interface fastEthernet 0/3
switch(config-if)#switchport trunk encapsulation dot1q
switch(config-if)#switchport mode trunk
switch(config-if)#exit
Aby wyjść z trybów konfiguracyjnych należy wpisać exit. Zawsze cofamy się o jeden poziom
wyżej. Więc, żeby wrócić do początkowego znaku zachęty switch> należy kilkukrotnie wpisać
exit. Gdy przeszliśmy do trybu normalnego “switch>” możemy podglądnąć wyniki naszych prac
komendą:
switch>show vlan
Konfiguracja powinna wyglądać tak:
Port Fa0/1 powinien znajdować się w VLANie 1
Port Fa0/2 powinien znajdować się w VLANie 2
Port Fa0/3 nie powinien znajdować się w żadnym VLANie ponieważ jest on portem typu trunk
- tranzytuje ruch wszystkich VLANów
Konfiguracja stacji roboczych zgodnie ze schematem ideowym.
Na początku trzeba zorientować się, któremu interfejsowi przypisujemy adres IP. Listujemy
wszystkie interfejsy sieciowe poleceniem: root@bt #: ip a eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 4a:e1:4e:31:e4:4a brd ff:ff:ff:ff:ff:ff inet 0.0.0.0/0 brd 0.0.0.0 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::48e1:4eff:fe31:e44a/64 scope link valid_lft forever preferred_lft forever … W zależności ile interfejsów podepniemy, tyle będzie aktywnych, w laboratorium do
komputerów zazwyczaj są wpięte czarne kable, które pozwalają na wyjście na świat z sieci
laboratoryjnej, drugi kabel wpięliśmy do switcha. Po wylistowaniu interfejsów pojawi się nam
jedna pozycja z adresem przypisanym z DHCP (czyli czarny kabel z wyjściem na świat) oraz
interfejs który jest <BROADCAST,MULTICAST,UP,LOWER_UP>(pozostałe nie będą posiadać
połączenia <BROADCAST,MULTICAST,NO­CARRIER,LOWER_UP>). To właśnie ten interfejs
konfigurujemy.
KALI LINUX
Klikamy prawym przyciskiem na ikonę Network Manager’a w prawym górnym rogu, stamtąd
przechodzimy do konfiguracji (Configuration), następnie na liście wybieramy interesujący nas
interfejs, ustawiamy tryb na Manual, nadajemy odpowiedni adres IP (10.0.0.X) oraz maskę
24, zaznaczamy “Connect automatically” i klikamy OK.
DOTYCZY BACKTRACK 5
Konfigurujemy interfejs na stacji roboczej lokalnie wydając komende:
ip addr add 10.0.0.(numer_komputera)/24 dev nazwa_interfejsu
przykładowo dla komputera piątego wydajemy polecenie: ip addr add 10.0.0.5/24 dev eth0
Sprawdzamy czy aby napewno przypisaliśmy właściwy adres IP dla interfejsu:
root@bt #: ip a eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 4a:e1:4e:31:e4:4a brd ff:ff:ff:ff:ff:ff inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::48e1:4eff:fe31:e44a/64 scope link valid_lft forever preferred_lft forever Konfiguracja sprzętu dobiegła końca. Pora na instrukcję w której są opisane odpowiedzi na
pytania, które prowadzący może zadać studentom.
ROZSZERZONA INSTRUKCJA LABORATORYJNA - INSTRUKCJA DLA NAUCZYCIELA
Wprowadzanie VLANnów do przełacznika
1. Sprawdź konfigurację swojej stacji roboczej - powinna ona mieć przypisany następujący
adres IP: 10.0.0.X na jednym z interfejsów eth (najczęściej eth0), gdzie X to numer komputera
przy którym siedzisz, przykład:
root@bt #: ip a eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 4a:e1:4e:31:e4:4a brd ff:ff:ff:ff:ff:ff inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::48e1:4eff:fe31:e44a/64 scope link valid_lft forever preferred_lft forever 2. Każdy z komputerów znajduje się w pewnym VLANie:
●
stacje 1, 3, 5, 7 - VLAN 1 “smerfy”
●
stacje 2, 4, 6, 8 - VLAN 2 “gumisie”
Spróbuj spingować swoją sąsiadkę/swojego sąsiada po jej/jego adresie IP, a następnie
spróbuj spingować kogoś kto znajduje się w tym samym VLANie, pokaż wyniki prowadzącemu.
3. Otwórz okno frameworka “yersinia” za pomocą komendy
root@bt #: yersinia ­G & Przełącznik -G oznacza pracę w trybie GUI, następnie kliknij “Edit interfaces” z menu u góry
i wybierz odpowiedni interfejs (czyli ten, który został ustalony w punkcie pierwszym), nie
zaznaczaj innych interfejsów i kliknij OK.
4. Ataki na STP
4.1 Rozsyłanie pakietów BPDU - configuration
(Student/ka przy stanowisku parzystym)
●
Uruchom Wireshark’a na odpowiednim interfejsie
●
Kliknij “Launch attack” w menu u góry (obok “Edit interfaces”) a następnie wybierz
zakładkę STP i opcję “sending conf BPDUs” a następnie OK:
●
Atak się rozpocznie a w oknie Wiresharka powinniśmy zobaczyć pakiety conf:
●
Po zakończeniu demonstracji należy przerwać atak, należy kliknąć opcję “List attacks”
u góry w menu i kliknąć “Cancel all attacks”
(Student/ka przy stanowisku nieparzystym)
●
Upewnij się, że posiadasz połączenie szeregowe do switcha (czy przejściówka RS232
jest wpięta do wtyczki z numerem Twojego komputera np. K5)
●
Zaloguj się do switcha, przy użyciu programu minicom (brak hasła, poprostu należy
naciskać Enter)
●
root@bt #: minicom ● Obserwuj zachowanie switcha, czy dzieje się z nim coś niedobrego? Przedstaw swoje
odkrycia prowadzącemu
Switch powinien się po czasie nie mniejszym niż 15s zresetować, ponieważ taki jest ustawiony
doyślny czas co który switch może zmieniać konfiguracje. Ciągła rekonfiguracja sieci sprawia
wzmożoną pracę switcha, przepełnieni tablic i następuje restart.
4.2 Rozsyłanie pakietów BPDU - topology change
●
zmiana ról, tym razem numery parzyste logują się do switcha, a numery nieparzyste
uruchamiają yersinię oraz Wiresharka
(Student/ka przy stanowisku nieparzystym)
●
analogicznie jak w poprzednim ćwiczeniu, klikamy w menu “Launch attack” a następnie
zakładka STP oraz opcja “sending tcn BPDUs”, klikamy “OK”
●
obserwujemy pakiety w Wireshark’u
●
po zakończeniu demonstracji prowadzącemu, nie zapomnij wyłączyć ataku! - ikona
“List attacks” oraz nastepnie “Cancel all attacks”
(Student/ka przy stanowisku parzystym)
●
przełączamy połączenie szeregowe do naszego komputera
●
podobnie jak wcześniej, logujemy się do switcha przy użyciu komendy “minicom”,
obserwujemy zachowanie switcha przy ataku i demonstrujemy wyniki prowadzącemu
Switch powinien się po czasie nie mniejszym niż 15s zresetować, ponieważ taki jest ustawiony
doyślny czas co który switch może zmieniać konfiguracje. Ciągła rekonfiguracja sieci sprawia
wzmożoną pracę switcha, przepełnieni tablic i następuje restart.
4.3 Claiming Root Role
●
Tym razem numery nieparzyste uruchamiają Wiresharka i obserwują ruch
●
Numery parzyste przechodzą do zakładki STP, gdzie zobaczymy obecny ruch w Sieci
●
można stąd odczytać obecny RootId który panuje w Sieci, należy go wskazać
prowadzącemu
●
wybieramy opcję “Launch attack” a następnie zakładka STP, “Claiming Root Role” i
naciskamy OK
●
zobaczymy w oknie pakiety z nowym RootId (niższym) w Sieci
●
zadaniem naszego kolegi/koleżanki jest pokazanie różnicy między starym a nowym
RootId w WireSharku, trzeba znaleźć odpowiednie pakiety które pokażą stan przed
atakiem jak i po ataku jak poniżej. Po demonstracji, zastopuj atak: “List attacks” ->
“Cancel all attacks”
przed
●
●
po
Najpoważniejszą konsekwencją takiego ataku jest niestabilność sieci. Trzeba pamiętać, że
wszyscy uczestnicy sieci wysyłają pakiety TCN do nadrzędnego urządzenia po wykryciu
zmiany. Tylko wtedy nadrzędne urządzenie wysyła pakiet Confguration BPDU z bitem zmiany
ustawionym na 1 (pole Flags), aby nakazać wszystkim uczestnikom przeliczenie tras. Jeśli atak
się powiedzie, nowe, fałszywe urządzenie nadrzędne unieważnia pakiety TCN wysyłane przez
switche, toteż żaden z nich nie przelicza swoich tras. W efekcie niszczona jest struktura sieci.
5. Ataki na VLANy
5.1 Double Tagging
UWAGA: Ćwiczenie jest wykonywane w czwórkach, dlatego należy zaczekać na sąsiadów, jeżeli
nie ukończyli jeszcze poprzednich ćwiczeń.
(Student/ka przy stanowisku nieparzystym)
●
w yersinii w głównym oknie, otwieramy zakładkę 802.1Q
●
wchodzimy w “Edit mode” klikając odpowiednią ikonę w menu
●
ustawiamy odpowiednie parametry
○
VLAN: 1
○
VLAN2: 2
○
Src IP: nasze IP
○
Dst IP: 255.255.255.255
○
payload: naszę imię
●
●
●
●
wychodzimy z “Edit mode” klikając ponownie na ikonę “notatnika” (UWAGA: pojawi się
kilka komunikatów o brakujących parametrach, należy poprostu kilkać OK na kolejnych
komunikatach)
klikamy “Lauch attack” a następnie przechodzimy do zakładki 802.1Q, wybieramy opcję
“sending 802.1Q packet”
klikamy OK
sprawdzamy czy nasz sąsiad/ka z drugiej grupy przy komputerze parzystym był/a w
stanie coś zauważyć
Nasz sąsiad/sąsiadka z drugiej grupy nie powinien nic zauważyć. Ten krok ma na celu
uświadomienie jak działa atak typu double tagging.
●
w yersinii uruchamiamy tym razem atak “sending 802.1Q double enc. packet”
●
●
ponownie konsultujemy się z sąsiadem/sąsiadką
przedstaw efekty prowadzącemu, jesteś w stanie wyjaśnić różnicę między pierwszym a
drugim atakiem? Dlaczego osoba przy stanowisku parzystym w drugiej podgrupie
otrzymała takie pakiety a nie inne? (pytanie na aktywność - WARTO prześledzić
dokładnie nagłówki pakietów w Wiresharku)
Aby wytłumaczyć zainstniałą sytuację posłużmy się obrazkiem:
Atak może zostać przeprowadzony tylko z natywnego VLANu - najczęścieniej switcha
domyślnie mają skonfigurowany VLAN 1 jako natywny. Czyli atak przeprowadzić mogą tylko
komputery PC1 i PC3. Gdy komputer PC1 wyśle podwójnie otagowaną ramkę
VLAN1|VLAN2|Payload wtedy switch do którego trafiła ramka zorientuje się, że on nie widzi
odbiorcy - tag VLAN1 wskazuje ze ramkę powinien odebrać komputer należący do VLANu1.
Switch nie jest połączony z żadnym komputerem z VLANu1 oprócz źródłowego więc wyśle
ramkę na port 3 - łącze tranzytowe. VLANem natywnym w sieci jest VLAN1 i na łaczach
trunkowych otagowanie natywnej sieci jest sciągne - robione jest to przez switch który wysyła
ramkę. Ramkę, którą odbierze switch po drugiej stronie będzie ramka VLAN2|Payload (bez
otagowania VLAN1). Switch drugi będzie sądził, że ramka ta pochodzi z VLANu 2 i przekarze ją
użytkownikowi, który znajduje się w VLANie2, czyli PC4. Mamy tutaj doczynienia z atakiem,
dzięki któremy ramka z jednego VLANu trafiła do innego VLANu, co w normalnej pracy sieci
jest niemożliwe. Podobnie sytuacja będzie wyglądać jeżeli podwójnie otagowaną ramkę
wyślemy z komputera z PC3. Taka ramka trafi do komputera PC2.
●
A co z naszym sąsiadem/sąsiadką, czy byli oni w stanie zauważyć nasze pakiety,
dlaczego?
Nie ponieważ switch zanim wyśle ramkę łączem tranzytowym sprawdza czy odbiorca nie jest
podłączony do switcha. Żaden komputer z VLANu1 oprócz komputera źródłowego nie jest
podłączony, więc podejmie decyzję że ramka zostasnie przesłana na łącze tranzytowe. I tam
dopiero sciągane jest otagowanie. Dopiero wtedy ramka bez tagu VLAN1 zostanie wysłana
łączem tranzytowym.
(Student/ka przy stanowisku parzystym)
●
uruchamiamy Wireshark’a
●
obserwujemy przychodzące pakiety
5.2 Atak przy użyciu ramki DTP
Atak jest wykonywany na switchach Cisco, a więc należy najpierw przełączyć swoje kable do
switcha Cisco, który stoi przy każdym stanowisku, należy zachować taką samą kolejność
portów czyli komputer nieparzysty do portu pierwszego, parzysty do drugiego i łącze trunk w
porcie trzecim
(Student/ka przy stanowisku parzystym)
●
w yersinii wybieramy “Launch attack” a następnie w zakładce DTP, wybieramy “sending
DTP packet” i klikamy “OK”
●
●
●
●
●
●
●
●
przechodzimy do zakładki 802.1Q w głównym oknie
wchodzimy w “Edit mode” tak jak poprzednio
ustawiamy VLAN (nie VLAN2!) na wartośc 1 (czyli docelowy VLAN) oraz resztę
parametrów podobnie jak poprzednio, czyli
○
Src IP = nasze IP
○
Dst IP = 255.255.255.255
○
payload = nasze imię
wychodzimy z “Edit mode” (klikamy ikonę “notatnika”)
następnie ponownie wybieramy “Launch attack”, zakładka 802.1Q oraz “sending 802.1Q
packet”
skonsultuj się z osobą obok w sprawie uzyskanych rezultatów
a teraz przepnij swój kabel do innego dowolnego portu np. 16
wykonaj jeszcze raz wykonane powyżej czynności czyli wysłanie pakietu DTP oraz
ramki 802.1Q
(Student/ka przy stanowisku nieparzystym)
●
uruchamiamy Wireshark’a i obserwujemy przychodzące pakiety
Czy potraficie wyjaśnić uzyskany rezultat?
Oczekiwana odpowiedź: Przed przepięciem portu ramka u sąsiada/sąsiadki nie pojawiła się,
ponieważ port skonfigurowany był manualnie. Takiego portu nie da rady skonfigurować za
pomocą protokołu DTP i przełączyć w tryb trunk. Jeżeli przepiliśmy kabel i wysłaliśmy ramkę
DTP port dało radę przełączyć w tryb trunk i wysłać ramkę z jednego VLANu do drugiego
VLANu.
6. Ataki na GVRP i RSTP
Tutaj miałaby się znajdować treść ćwiczeń dotyczących ataków na te dwa protokoły, jednak
nie udało nam się znaleźć odpowiednich materiałów, na podstawie których moglibyśmy
dokładniej przygotować owe ćwiczenia (zwłaszcza RSTP), prawdopodobnie wymagałoby to
kolejnych spędzonych godzin w laboratorium, jest to jedynie zarys:
6.1 Atak na GVRP z wykorzystaniem spreparowanej ramki PDU
Protokół GVRP (Generic VLAN Registration Protocol) opiera się na formacie protokołu GARP
(Generic Attribute Registration Protocol) i polega na wykorzystaniu tychże ramek (PDU Protocol Data Unit) w celu autokonfiguracji VLANów w Sieci. Osoba która jest wpięta do
nieskonfigurowanego portu mogłaby sama sobie nadać VLAN przez co miałaby dostęp do
pakietów, które nie powinny do niej trafić.
●
należałoby skorzystać z narzędzia, które potrafiłoby wygenerować taki pakiet
●
można wypróbować takie narzędzia jak scapy, packETH, nemsis
●
przestudiowując ramkę, należałoby ustalić jakie pole należałoby zmodyfikować w celu
wykonania ataku - ramka GVRP w tym przypadku składa się z Attribute Length (1 bajt)
/ Attribute Event (2 bajty) - to pole nas interesuje najbardziej, jest to typ wiadomości
jaka jest rozsyłana po Sieci, nasz atak opierałby się na typie JoinIn (wartość 2) /
Attribute Value - w naszym wypadku jest to VLAN ID, do którego chcemy dołączyć,
załóżmy że to VLAN sąsiada
●
na podstawie powyższych informacji, student preparuje ramkę, którą następnie wysyła
na interfejs którym jest podłączony do switcha do nieskonfigurowanego portu
●
następnie próbuje skomunikować się z sąsiadem - powinien mieć z nim łączność
6.2 Atak na RSTP - niestety brak
7. Koniec laboratarium - dziękujemy za obecność ;-)