• Home
  • Server 2003/2008
  • Windows 7
  • Office
  • Linux
  • Sieci komputerowe
  • Wujek dobra rada
  • Mapa strony
  • Napisz
  • czcionka Zmniejsz czcionkę Zmniejsz czcionkę Powiększ czcionkę Powiększ czcionkę
  • Wydrukuj
  • Email
  • Komentarze (2)
pikolo pikolo

Atak na WLAN. Metodologia, narzędzia i praktyka.

06 lipiec 2014
Dział: Sieci komputerowe
Czytany 30467 razy
Oceń ten artykuł
  • 1
  • 2
  • 3
  • 4
  • 5
(13 głosów)

 

Z artykułu WiFi bez tajemnic dowiedziałeś się czytelniku, że istnieją dwa główne typy sieci bezprzewodowych a mianowicie sieci stacjonarne i sieci typu ad hoc. Sieci stacjonarne to te w których karta sieciowa działa w trybie infrastruktury i do nawiązania połączenia niezbędne jest użycie access pointa, który pośredniczy w przekazywaniu pakietów pomiędzy podłączanymi do niego klientami a dodatkowo stanowi most pomiędzy tradycyjnymi sieciami kablowymi a technologią bezprzewodową. Sieci ad hoc to mianowicie sieci bezprzewodowe, których działanie opiera się na modelu peer-to-peer i odwrotnie jak to jest w przypadku sieci stacjonarnych do działania tego typu sieci, punkt dostępu jest zbędny.

Nieważne z którym typem sieci będziemy mieli do czynienia rozpoczęcie komunikacji rozpoczyna się od nawiązania sesji z punktem dostępu (pomimo istnienia, co zostało przypomniane dwóch typów sieci celem uproszczenia, moje rozważania oprę o sieci stacjonarne, lecz żebyś nie odniósł czytelniku błędnego wrażenia, informacje opisywane w tym wpisie odnoszą się również do sieci bezprzewodowych typu ad hoc). By sesja mogła być nawiązana klient musi wykryć w pierwszej kolejności czy sieć jest w ogóle dostępna, dlatego zostają przez niego wysłane komunikaty rozgłoszeniowe (ramki probe request) z prośbą o identyfikacje. Gdy sieć jest osiągalna w odpowiedzi na prośbę punkt dostępu wysyła odpowiedź w postaci ramki probe response. Po wymianie tych danych przychodzi pora na uwierzytelnienie, (szczegółowo o tym etapie za chwile), które może być realizowane w trybie otwartym (brak hasła, zostaje uwierzytelniony każdy) lub za pomocą znanego obu stronom klucza. Ostatnim krokiem nawiązywania sesji jest kojarzenie czyli proces w którym zostaje ustanowione łącze transmisji pomiędzy urządzeniami tworzącymi kanał komunikacyjny. Urządzenia mogą przesyłać dane pomiędzy sobą.

I to by było na tyle w kwestii przypomnienia przejdźmy dalej i omówmy podstawowe mechanizmy zabezpieczeń na które możemy się natknąć w procesie ataku na sieć WLAN, wszak by zacząć przełamywać zabezpieczenia najpierw musimy poznać z czym będziemy mieli do czynienia.

Wszystkie nasze rozważania są oparte o system Linux a to z jednej prostej przyczyny a mianowicie w systemie Windows brak jest odpowiednich narzędzi (czytaj darmowych rozwiązań).

I tu jeszcze jedno słowo uwagi (taki to przywilej autora), ktoś mógł by zapytać – Po co taka tematyka? I jak wykorzystać tą wiedzę? Nie ma co ukrywać, że informacje zawarte w tym wpisie mogą, nazwijmy to delikatnie, zostać spożytkowane w dość niewłaściwy sposób, co jest scenariuszem dość prawdopodobnym. Więc po co w ogóle tą tematykę omawiać? Pozwól czytelniku, że posłużę się taką analogią. Każdy wie jak wygląda nóż, każdy używa go codziennie czy to do krojenia chleba czy smarowania masłem właśnie przygotowywanej kanapki. Ten sam nóż w codziennym użytkowaniu jest narzędziem zupełnie nieszkodliwym lecz są sytuację w których nóż może zostać użyty do zranienia innej osoby. Tak samo jest z wiedzą, wiedza może nam posłużyć jako źródło twórczych i pomysłowych rozwiązań lecz tak jak w przypadku noża może zostać użyta by ranić i szkodzić. To co z nią zrobimy jest naszym wyborem lecz wybór wiąże się z konsekwencjami. Co zrobić z zdobytą wiedzą? Takim aktywnym obszarem użycia metod i narzędzi opisanych przeze mnie są testy sieci bezprzewodowej pod kątem podatności na atak oraz testy penetracyjne. Administrator zarządzający infrastrukturą sieciową może sam przeprowadzić symulowany atak by uzyskać dane o zachowaniu się sieci. Uzyskane informacje pomogą mu w przypadku wystąpienia prawdziwego ataku. Testy te mogą posłużyć również do wykrycia potencjalnych luk bezpieczeństwa czy poprawy konfiguracji urządzeń.

Sprawy dotyczące etyki, pozostawiam Tobie czytelniku do rozważenia i by kontynuować temat przejdźmy do omówienia podstawowych mechanizmów, które zwiększają bezpieczeństwo naszej sieci. Tak więc do mechanizmów tych (obecnych w każdym routerze, AP) możemy zaliczyć:

„Ukrycie” SSID-u sieci bezprzewodowej. Z wspomnianego już wcześniej artykułu, czytelniku wiesz również, że punkt dostępu w określonym, ustalonym czasie celem rozgłoszenia obsługiwanej sieci WiFi wysyła tzw. ramki nawigacyjne (ramka beacon). W domyślnej konfiguracji urządzenia, włączone jest rozgłaszanie sieci, oznacza to nic innego, że rozgłaszane ramki beacon zawierają informację o SSID-dzie sieci bezprzewodowej. Tak więc by ukryć sieć WiFi należy wyłączyć domyślny mechanizm rozgłaszania sieci. Wyłączenie rozgłaszania spowoduje, że ramki beacon nie będą zawierać informacji o identyfikatorze sieci. Brak tej informacji utrudnia atak (lecz tylko nieznacznie o czym czytelniku przekonasz się za chwilę).

Poniżej przykład zlokalizowania opcji związanej z włączeniem/wyłączeniem rozgłaszania sieci WiFi (router Cisco).

 

 

Filtrowanie klientów na podstawie adresu MAC. Access point podczas prowadzenia procesu przekazywania danych musi znać adresy MAC urządzeń pomiędzy którymi prowadzona jest komunikacja, dlatego też można tak skonfigurować punkt dostępu aby sprawdzał źródłowe adresy MAC. Podczas procesu rejestracji adresów MAC, AP porównuje uzyskane adresy z adresami MAC wprowadzonymi podczas konfiguracji urządzenia i na podstawie tak zdefiniowanej puli następuje proces zezwolenia bądź zabronienia na nawiązanie połączenia.

Cała procedura skorzystania z filtrowania MAC sprowadza się do:

1. włączenia funkcji,

2. określeniu akcji czyli decyzja o zezwoleniu bądź zabronieniu ustanowienia połączenia z routerem/AP,

3. wpisania adresów MAC co do których będzie zastosowana akcja ustalona w pkt. 2

 

 

Te dwa mechanizmy (wraz z szyfrowaniem) powszechnie uważane są jako wystarczające by zapewnić ochronę naszej sieci WiFi, lecz jak się przekonasz niestety można je obejść (również szyfrowanie). Nie oznacza to że nie należy ich stosować wręcz przeciwnie, pomimo pewnych słabości zawsze lepsze takie zabezpieczenie niż żadne. Chociaż mechanizmy te dla jednych będą tylko trywialnym problem by osiągnąć cel to dla innych będą stanowić przeszkodę nie do pokonania.

Podczas naszych rozważań trzeba jeszcze dopowiedzieć sobie jedną rzecz a mianowicie kwestie dotyczącą uwierzytelnienia i szyfrowania. Podczas wertowania wielu publikacji związanych z tematyką sieci bezprzewodowych napotykałem się z tym iż te dwa mechanizmy często były mylone bądź były „wrzucone do jednego worka” i rozważane jako tożsame. Bardzo często będę się odnosił to tych pojęć więc bardzo ważne jest ich odróżnianie. Tak więc skończmy z niedomówieniami i wyjaśnijmy sobie te dwa pojęcia.

Podstawowym celem zastosowania uwierzytelnienia jest sprawdzenie tożsamości klienta, lecz nie jest to jedyne zadanie ponieważ podczas procesu uwierzytelnienia również jest generowany klucza sesji, który następnie jest wykorzystywany w procesie szyfrowania. Oba te procesy odbywają się w warstwie łącza danych modelu OSI czyli przed uzyskaniem przez klienta adresu IP.

Powszechnie używanym standardem uwierzytelnienia jest na pewno znany Ci standard WPA (ang. Wi-Fi Protected Access), który został opracowany przez organizację Wi-Fi Alliance. Standard ten doczekał się dwóch wersji WPA (obsługa protokołu TKIP) i WPA2 (obsługa zarówno TKIP jak i AES).

W ramach tego standardu możemy rozróżnić dwa rozwiązania:

WPA Pre-Shared Key (WPA-PSK) – wykorzystanie tego rozwiązania sprowadza się do wykorzystania wspólnego klucza znanego punktowi dostępu jak i wszystkim klientom budującym sieć. Klucz wykorzystywany jest do wygenerowania klucza szyfrowania, który zabezpiecza dane przesyłane pomiędzy hostem a punktem dostępu. Klucz wspólny może być złożony od 8 do 63 znaków ASCII.

WPA Enterprise – w ramach działania tego mechanizmu wykorzystano standard IEEE 802.11x, który tak naprawdę swój początek miał w tradycyjnych sieciach przewodowych. Mechanizm działania sprowadza się do przekazania komunikatu uwierzytelniającego wysłanego przez hosta do zewnętrznego serwera RADIUS. Serwer w następnym kroku poprzez sprawdzenie swojej bazy danych podejmuje decyzję o zezwoleniu bądź odrzuceniu połączenia. Tego typu rozwiązanie najczęściej jest zaimplementowane w dużych sieciach korporacyjnych, ponieważ zastosowanie serwera, który centralnie zarządza uwierzytelnieniem zwalnia nas z konfiguracji każdego urządzenia z osobna. Standard 802.11x opisuje wykorzystanie protokołu EAP (ang. Extensible Authentication Protocol), który jest bazą dla innych mechanizmów uwierzytelniania, takich jak np. EAP-TTLS, PEAP czy EAP-FAST.

Nieważne z którego rozwiązania WPA skorzystamy to w celu ustalenia klucza szyfrowania klient i punkt dostępu przeprowadzają czteroetapową wymianę komunikatów (o tym za chwilę).

Co zaś się tyczy szyfrowania to proces ten realizowany jest w warstwie drugiej i dotyczy komunikacji wymienianej pomiędzy hostem a punktem dostępu. Szyfrowanie nie obejmuje źródłowego i docelowego adresu MAC oraz nie obejmuje ramek administracyjnych. Odszyfrowaniem danych zajmuje się Access Point, który następnie rozkodowane dane przesyła dalej połączeniem kablowym. Jeżeli mamy do czynienia z szyfrowaniem w warstwach wyższych np. używamy SSH ramki tego typu nie są modyfikowane.

W sieciach WiFi możemy wyróżnić trzy metody szyfrowania.

WEP (ang. Wired Equivalent Privacy) jest młodszym bratem standardu WPA i jako pierwszy mechanizm szyfrowania nie ustrzegł się błędów. Implementacja tego mechanizmu występuje w każdym urządzeniu bezprzewodowym celem zachowania kompatybilności z starszymi urządzeniami. Stosowanie tego typu zabezpieczenia jest MOCNO nie zalecane ze względu na prostotę i łatwość jego obejścia.

TKIP (ang. Temporal Key Integrity Protocol). Protokół ten został zdefiniowany w poprawce standardu 802.11i i jego głównym zadaniem było szybkie i bezbolesne zastąpienie standardu WEP. TKIP, zresztą podobnie jak WEP, swoje działanie opiera o algorytm Rivest Cipher 4 (RC4), jednak wprowadzone poprawki naprawiają zaobserwowane błędy standardu WEP. Równolegle z TKIP rozwijany był standard AES-CCMP (opis za chwilkę) lecz w porównaniu z AES, TKIP nie potrzebuje dużego narzutu sprzętowego w postaci lepszych układów oferujących większą moc obliczeniową. Dziś każde nowe urządzenie obsługuje standard AES lecz z powodu braku istotnych luk w protokole TKIP jest on nadal powszechnie używany w wielu środowiskach.

AES-CCMP (ang. Advanced Encryption Standard — Counter Mode with Cipher Block Chaining Message Authentication Code Protocol). AES korzysta z odrębnej metody szyfrowania i jest pozbawiony wielu potencjalnych problemów związanych z protokołem TKIP. Algorytm AES na potrzeby protokołu CCMP wykorzystuje 128 bitowe klucze. Jeżeli czytelniku masz możliwość wybrania tej metody to wybór taki będzie gwarantował Ci najwyższy poziom bezpieczeństwa. AES-CCMP jest zalecaną metodą szyfrowania.

Przyjrzyjmy się teraz narzędziom a tak naprawdę urządzeniom potrzebnym do rozpoczęcia ataków na sieci bezprzewodowe. Niestety by móc prowadzić nasłuch (sniffing) sieci bezprzewodowej jak już zostało nadmienione w wcześniejszym wpisie Sniffing w sieciach bezprzewodowych trzeba zaopatrzyć się w odpowiednie oprzyrządowanie czyli mówiąc prościej trza zadbać o swój warsztat pracy. W wymienionym wpisie zostało to zasygnalizowane a teraz spróbujmy tą myśl rozszerzyć. A więc do całej zabawy będzie potrzebna karta bezprzewodowa, która ma możliwość prowadzenia nasłuchiwania i przechwytywania pakietów (ang. packet sniffing) oraz dodatkowo karta ta musi mieć możliwość wstrzykiwania pakietów (ang. packet injection). Karta ta również musi być obsługiwana z poziomu systemu Linux Backtrack bądź Linux Kali. Czemu te dwa systemy? Odpowiedź jest prosta ponieważ systemy te są przygotowane (po instalacji systemu wszystkie narzędzia są gotowe do użycia) do zadań, które będziemy przeprowadzać. Tu muszę zmartwić wszystkich, którzy mieli nadzieję że do wykonania symulowanych ataków wykorzystamy system Windows, otóż nie. Dlaczego? Bo niestety w systemie Windows przeprowadzenie tego typu działań jest mocno utrudnione, co nie znaczy że nie niemożliwe. Po prostu wiąże się to z zakupem potrzebnych programów/narzędzi, czytaj dużo dolarów taka zabawa kosztuje. Drugą kwestią oprócz zagadnień czysto hardwarowych jest dostępność oprogramowania. Decydując się na system Linux kwestia softwarowa nam odpada gdyż wszystko mamy za free, musimy tylko zadbać o kompatybilną kartę sieciową.

Bezprzewodowa karta sieciowa i jej wybór jest zagadnieniem kluczowym, stanowi dla nas najważniejsze ogniwo i jak już zostało wyżej zaznaczone karta musi spełniać odpowiednie wymogi. Najczęściej nieodzowne stanie się zakupienie takowej karty, gdyż te posiadane np. w laptopach nie spełniają kryteriów stawianym im do przeprowadzenia tego typu działań. Tak naprawdę nie ważny jest producent karty lecz typ chipsetu, który zarządza działaniem samej karty WiFi. Dziej się tak ponieważ by móc przełączyć kartę np. w tryb monitora RFMON (nasłuchiwanie) trzeba skorzystać z niestandardowych sterowników. Zaś by napisać taki sterownik trzeba znać dokładnie sposób działania urządzenia, mówiąc na skróty nie każdy producent chipsetu takie dane udostępnia. Ci producenci, którzy zdecydowali się na upublicznienie informacji o swoim produkcie umożliwili programistom stworzenie sterowników rozszerzających możliwości działanie karty bezprzewodowej o dodatkowe niestandardowe funkcje właśnie takie jak: tryb monitora czy możliwość wstrzyknięcia pakietów. Skąd zdobyć informację o kompatybilnych z systemem Linux chipsetach? Polecam skorzystać z tej strony - http://aircrack-ng.org/doku.php?id=compatibility_drivers Na stronie znajdziesz listę wszystkich wspieranych urządzeń wraz z ich oceną przydatności.

Kierując się doborem danej karty musimy zwrócić uwagę na następujące kwestie:

interfejs – musimy dopasować typ karty do interfejsów posiadanych przez nasz komputer. Po zapoznaniu się z linkiem, który wyżej umieściłem, okaże się że wiele kart dostępnych jest na rzadko już spotykany w nowych laptopach interfejs PCMCIA. Nowy laptop jak ma możliwość rozszerzenia swoich funkcji to najczęściej korzysta z kart rozszerzeń opartych o rozwiązanie ExpressCard. I tu natrafiamy na problem gdyż większość producentów nie produkuje kart bezprzewodowych z odpowiednim chipsetem w oparciu właśnie o standard ExpressCard. Tak więc pozostaje nam albo zakup odpowiedniego adaptera za pomocą którego będziemy mogli wykorzystać kartę bezprzewodową z interfejsem PCMCIA (przykłady adapterów PCMCIA na rysunku poniżej) bądź zdecydowanie się na standard USB. Wybór standardu USB nasuwa nam się jako wybór oczywisty lecz i tu napotkamy na pewien problem, który jest związany z drugą kwestią a mianowicie obsługą pasma i docelowego standardu.

 

Źródło:

http://www.shinly.com.tw/enu/pcmcia%20pc%20card%20to%20pci-e%20express%20card%20adaptor.htm
http://www.pcmciatousb.com/
http://polotek.en.alibaba.com/product/675362400-0/High_quality_PCIe_PCI_e_PCI_express_to_PCMCIA_Cardbus_3_3V_5V_16bit_32bit_Converter_Card.html#

 

obsługa pasma, standard – kartę bezprzewodową dobrać musimy również pod kątem obsługiwanego standardu sieci WiFi. Oznacza to, że chcąc np. przechwytywać pakiety sieci 802.11n karta musi mieć możliwość obsługi tego standardu, drugi przykład - gdy docelowa sieć działa w paśmie 5 GHz, karta również musi mieć możliwość prowadzenia komunikacji w zadanym paśmie. Wracając do kwestii wyboru karty ze względu na interfejs a w szczególności gdy rozważamy standard USB, przeglądając ofertę okaże się że jeśli chodzi o dobór standardu (802.11b, 802.11g, 802.11n) to nie ma problemu lecz gdy o doborze sprzętu decyduje obsługa pasma 5 GHz to nasze pole działania zawęża się do kilku pozycji.

możliwość obsługi zewnętrznej anteny – jeżeli chcemy przeprowadzić atak z znacznej odległości okazać się może (a raczej na pewno tak się stanie), że by atak doszedł do skutku trzeba skorzystać z zewnętrznej anteny kierunkowej bądź panelowej. By można było takie anteny podłączyć do karty (zamieniając jej fabryczną wersję), karta musi mieć możliwość jej odłączenia. Część kart bezprzewodowych ma anteny wbudowane i niemożliwe jest zastąpienie jej inną ale są konstrukcje gdzie taka operacja jest możliwa. By wymiana anteny doszła do skutku karta WiFi musi być zaopatrzona w złącze RP-SMA (są inne złącza lecz te jest najczęściej spotykane).

No i doszliśmy do poruszonego już tematu anten. Wbrew pozorom jest to jeden z ważniejszych elementów, który decyduje o skuteczności ataku choć kwestia ta jest często pomijana. Anteny możemy podzielić m.in. na kierunkowość anteny. Stosując te kryterium podziału, anteny dzielimy na anteny: kierunkowe, panelowe oraz dookólne.

Anteny kierunkowe – wybór tej anteny ściśle związany jest z odległością od docelowej sieci. Gdy zależy nam na tym by zostać niezauważonym musimy atak przeprowadzić z dużej odległości. Moc anteny jej kierunkowość oraz koncentracja powodują zachować warunek odległości. Lecz jak to bywa nie ma nic za darmo, ponieważ odległość została okupiona polem odziaływania anteny. Oznacza to nic innego, że antena musi być dokładnie skierowana w punkt rozgłaszający atakowaną sieć. Musi być znana dokładna lokalizacja umiejscowienia punktu dostępowego.

Anteny panelowe – zapewniają nam zachowanie odległości choć nie tak dużej jak w przypadku anten kierunkowych i jednocześnie oferują nam zwiększenie pola odziaływania anteny (szeroki kąt promieniowania).

Anteny dookólne – najczęściej stosowane, zasięg tych anten jest najmniejszy lecz ich wielokierunkowość zapewnia największy obszar pokrycia siecią bezprzewodową a co za tym idzie umiejscowienie anteny schodzi na plan drugi, ważne jest by antena była w zasięgu atakowanej sieci. Anteny tego typu mają największy zasięg kątowy.

 

Źródło:

http://www.inter-comp.pl
http://www.tp-link.com.pl/

 

Po tym słowie wstępu teoretycznego przechodzimy do zagadnień praktycznych czyli postaram się pokazać konkretne rozwiązania programowe wraz z odpowiednią konfiguracją użytych narzędzi tak aby osiągnąć zamierzony cel. Cel, którym jest ominięcie zastosowanych sposobów zabezpieczeń. Oprócz zrzutów ekranów wykonywanych operacji, jako podsumowanie podjętych działań będą dostępne również filmy.

Parę wersów wyżej napomknąłem, że jednym z sposobów zwiększenia bezpieczeństwa sieci WiFi jest ukrycie jego SSID-u. A więc sprawdźmy czy takie zabezpieczenie ma rację bytu.

By sprawdzić tę tezę, w pierwszym kroku uruchamiamy AP i tworzymy nową sieć bezprzewodową. Dla ułatwienia prowadzonych rozważań w całym artykule będą się odnosił do tej sieci. Tak więc nasza testowa sieć, będzie nazywać się TempWiFi, a działać będzie w paśmie b i g na kanale 11 (w przypadku innej konfiguracji, fakt ten będzie zasygnalizowany).

 

 

Zanim ukryjemy sieć sprawdźmy jakie informacje uzyskamy pozostawiając włączoną opcję rozgłaszania sieci.

 

 

Sieć działa możemy zacząć przechwytywanie pakietów. Jak to zrobić? - pominę ponieważ całą procedurę opisałem w wcześniejszym wpisie Sniffing w sieciach bezprzewodowych.

Jak widać poniżej przechwycone ramki beacon zdradzają nam istnienie sieci, jej parametry jak i jej nazwę.

 

 

Informacje te również zdobędziemy po wydaniu polecenia: iwlist scan. Jak widać poniżej, nazwa sieci oraz jej podstawowe parametry, dzięki użyciu narzędzia są znane.

 

 

Tak więc naszym kolejnym krokiem będzie ukrycie sieci. Sprawdźmy co dzięki wyłączeniu opcji rozgłaszania sieci uzyskamy. Zmieńmy ustawienia punktu dostępowego tak aby wyłączyć rozsyłanie identyfikatora SSID. Opcja włączenia/wyłączenia dostępności sieci bezprzewodowej w zależności od modelu posiadanego urządzenia może mieć różną nazwę. W moimi przypadku opcja ta nazywa się: Broadcast Essid. Ustawienie przestawiamy na disable.

 

 

Po ponownym przechwyceniu ramek wysyłanych poprzez punk dostępowy w polu SSID zamiast nazwy sieci uzyskujemy informację Broadcast, informacja ta oznacza, że została uaktywniona opcja ukrycia nazwy SSID rozgłaszanej sieci.

 

 

Wydanie polecenia iwlist scan uwidoczni nam fakt istnienia sieci bezprzewodowej lecz poprzez ten sposób nie poznamy jej nazwy.

 

 

Warto też nadmienić, że system Windows jest w stanie wykryć istnienie sieci o ukrytym SSID-zie, po włączeniu skanowania dostępnych sieci jesteśmy poinformowani o fakcie istnienia takiej sieci. Poniżej zrzut obrazujący ten fakt.

 

 

Istnienie sieci z ukrytym identyfikatorem jest sygnalizowane wpisem Inna sieć. Wybranie tej sieci poprzez kliknięcie na Połącz wywołuje okno z prośbą o wprowadzenie nazwy sieci.

 

 

Dodatkowo jesteśmy informowani o użytym typie zabezpieczeń.

By poznać identyfikator rozgłaszanej sieci możemy użyć techniki pasywnej, która polega na oczekiwaniu aż klient, który zna identyfikator podłączy się do punktu dostępowego. Nazwa sieci zostanie zdradzona ponieważ nastąpi wymiana pakietów Probe Request oraz Probe Response a w pakietach tych zawarta jest informacja o nazwie sieci.

Poniżej zrzut z podsłuchanej sesji w której klient znający identyfikator sieci uzyskał połączenie. By przefiltrować ruch pod kątem ramek Probe Request został użyty filtr wlan.fc.type_subtype eq 0x04

 

 

Użyte rozwiązanie ma swoje zalety oraz wady. Zaletą metody jest to, że prowadzony nasłuch jest całkowicie pasywny (minimalne ryzyko wykrycia), prowadzony jest sniffing w którym to żaden pakiet w kierunku atakowanej sieci nie zostaje wysłany. Do wad zaś zaliczymy, czas oczekiwania na uprawnionego klienta, który ma prawo by połączyć się z monitorowaną siecią. Więc atak prowadzony jest tak długo aż klient znający identyfikator sieci dokona połączenia z siecią.

Nasuwa się pytanie - Czy proces ten możemy przyśpieszyć? Odpowiedź – Możemy. Będziemy mieli do czynienia z odwróceniem sytuacji. Skrócimy czas poznawania identyfikatora lecz będziemy musieli wysłać pakiety w kierunku atakowanej sieci bezprzewodowej. Ale wszystko po kolei.

Skorzystamy z narzędzia aireplay-ng.

W pierwszej kolejności za pomocą polecenia airmon-ng start <interfejs_bezprzewodowy> utworzymy nowy interfejs, który będzie odpowiedzialny za prowadzenie nasłuchu (przestawienie karty w tryb RFMON) oraz za wysłanie potrzebnych pakietów.

W moim przypadku wydałem polecenie: airmon-ng start wlan0 Skutkiem wydania polecenia jest powiązanie interfejsu fizycznego wlan0 z interfejsem mon0 i przestawienie tego interfejsu w tryb nasłuchu.

 

 

Kolejnym krokiem jest poznanie informacji dotyczących punktu dostępowego a konkretnie musimy znać adres MAC punktu (informacja ta będzie potrzebna nam do wydania kolejnych poleceń) oraz kanał pracy podsłuchiwanej sieci. By poznać adres wydajemy polecenie iwlist scan

 

 

Jak widać powyżej adres punktu dostępowego to: 00:1F:1F:0E:70:68 a kanał pracy ustawiony jest na 11.

Gdy już posiadamy potrzebne dane zobaczmy, kto i ilu klientów jest podłączonych do „naszej” sieci. By uzyskać tą informację trzeba skorzystać z polecenia: airodump-ng --bssid <adres_AP> <interfejs> Czyli w tym konkretnym przypadku polecenie przybierze następującą składnię: airodump-ng --bssid 00:1F:1F:0E:70:68 mon0

Aby przestawić interfejs do nasłuchu częstotliwości na której pracuje sieć WiFi, czyli aby wybrać kanał 11 – wydaj polecenie: iwconfig mon0 channel 11

Drugim i chyba wygodniejszym sposobem, jest uwzględnienie kanału bezpośrednio w poleceniu airodump-ng, tak więc by od razu uwzględnić kanał pracy nasze polecenie przyjmie postać: airodump-ng -c 11 --bssid 00:1F:1F:0E:70:68 mon0

Nieważne, którego sposobu użyjesz efekt będzie taki sam.

Po wydaniu polecenia powinieneś uzyskać okno jak poniżej.

 

 

Jak widać pole ESSID jest nieznane, drugą informacją jest lista klientów skojarzonych z punktem dostępu. W naszym przypadku jest to jeden klient o adresie MAC: 00:25:9C:08:73:39

By uzyskać informację o nazwie sieci bezprzewodowej wymusimy na kliencie aby wykonał ponownie proces skojarzenia z AP. Dzięki temu ponownie zostaną wygenerowane ramki Probe Request oraz Probe Response, które przechwycone zdradzą nam nazwę sieci.

By wymusić na kliencie rozłączenie i ponowne połączenie z punktem dostępu wydaj polecenie: aireplay-ng -0 <liczba_pakietów> -a <adres_MAC_AP> <interfejs> tak więc polecenie przyjmie postać: aireplay-ng -0 15 -a 00:1F:1F:0E:70:68 mon0 Po wydaniu polecenia zostanie wygenerowane 15 pakietów Deauthentication (anulowanie uwierzytelnienia), które w imieniu punktu dostępowego (broadcast) zostaną wysłane do wszystkich klientów. Pakiety Deauthentication wymuszają na wszystkich klientach wykonanie rozłączenia z punktem dostępu i wykonanie ponownego przyłączenia.

Gdyby z jakiś powodów przeprowadzenie packet injection nie doszło do skutku spróbuj do polecenia dodać parametr --ignore-negative-one np. aireplay-ng -0 15 -a 00:1F:1F:0E:70:68 --ignore-negative-one mon0

 

 

Bardzo dobre rezultaty daje też spersonalizowanie ataku czyli atak przeprowadzamy na jednego konkretnego klienta a nie na wszystkich. By w naszym przykładzie atak skierować do klienta o adresie 00:25:9C:08:73:39 należy zmodyfikować polecenie: aireplay-ng -0 15 -a 00:1F:1F:0E:70:68 -c 00:25:9C:08:73:39 --ignore-negative-one mon0

Poniżej przykład ataku w którym pakiet Deauthentication został wysłanyna broadcast czyli do wszystkich klientów skojarzonych z siecią.

 

 

i przykład ataku skierowanego do jednego klienta - 00:25:9C:08:73:39

 

 

wraz z przechwyconym ruchem

 

 

Analiza pakietów Probe Response (filtr: wlan.fc.type_subtype eq 0x05), ujawni nam identyfikator SSID sieci.

 

 

Wysyłanie pakietów Deauthentication jest jednym z najprostszych ataków typu DoS (ang. Denial of Service, odmowa usługi). Dzięki ciągłemu wysyłaniu w kierunku sieci pakietów nakazującym podłączonym klientom wykonanie rozłączenia w skuteczny sposób jesteśmy w stanie sparaliżować działającą sieć bezprzewodową a co najgorsze nie ma dobrej obrony przed tego typu zagrożeniem.

Innym sposobem poznania identyfikatora sieci jest użycie programu Kismet. Po pierwszym uruchomieniu narzędzia opcją, którą będziemy musieli określić jest podanie nazwy interfejsu monitorującego (w moim przypadku mon0)

 

 

Następuje skanowanie dostępnych sieci, skanowanie uwidacznia istnienie ukrytej sieci.

 

 

W momencie w którym klient podłączy się do ukrytej sieci jesteśmy w stanie poznać jej identyfikator. Oczywiście by przyśpieszyć proces możemy użyć wyżej opisany atak Deauthentication.

 

 

Drugim wspomnianym przeze mnie sposobem ochrony sieci WiFi jest włączenie filtrowania adresów MAC. Przy czym metoda ta jest realizowana na dwa sposoby, opierając się na liście zdefiniowanych adresów MAC:

      • lista używana jest do określenia użytkowników, którzy mają prawo połączyć się z AP czyli odrzucamy wszystkie próby nawiązania połączenia za wyjątkiem tych użytkowników, których adresy MAC kart zostały zdefiniowane na liście,
      • lista używana jest do określenia użytkowników, którym zabraniamy na dostęp do AP czyli mamy sytuację odwrotną do tej opisanej powyżej, każdy ma prawo nawiązać połączenie z punktem dostępu za wyjątkiem tych użytkowników, których adresy MAC kart sieciowych znajdują się na liście.

My zajmiemy się tą pierwszą sytuacją. Spróbujemy uzyskać połączenie z siecią w której została zdefiniowana lista uprawnionych użytkowników mających prawo nawiązania połączenia.

W pierwszej kolejności zmieniamy ustawienia AP tak aby urządzenie filtrowało adresy MAC.

 

 

Co można zauważyć na zrzucie powyżej do połączenia z siecią ma prawo tylko jeden klient o adresie MAC: 00:25:9C:08:73:39

Klient o adresie MAC: 00:25:9C:08:73:39 może podłączyć się do AP co zostało ukazane na zrzucie poniżej (przechwycona sesja pomiędzy podłączającym się klientem a AP)

 

 

Natomiast każdy inny host nie ma dostępu do sieci. Poniżej klient o adresie MAC: 00:13:02:70:0c:84 próbuje uzyskać dostęp do sieci. Adres ten nie znajduje się na liście dozwolonych adresów, więc próba podłączenia kończy się niepowodzeniem.

 

 

Udało nam się włączyć filtrowanie adresów MAC, od tej pory nawiązać połączenie z AP może klient, którego adres MAC znajduje się na zdefiniowanej liście. Próba nawiązania połączenia przez innego klienta kończy się niepowodzeniem.

Aby skutecznie udało nam się ominąć ten mechanizm zabezpieczeń musimy poznać adresy MAC użytkowników sieci bezprzewodowej, którzy mają prawo połączyć się z AP. Aby poznać te adresy skorzystamy z znanego nam już polecenia: airodump-ng -c 11 --bssid 00:1F:1F:0E:70:68 mon0 (monitorujemy punkt dostępu o adresie 00:1F:1F:0E:70:68, pracujący na kanale 11 z wykorzystaniem interfejsu mon0). Jak w wcześniejszym scenariuszu po wydaniu polecenia uzyskamy informację o klientach skojarzonych już z punktem dostępu a co najważniejsze będziemy znali ich adresy MAC.

 

 

Gdy już posiadamy najważniejszą informację, czyli adres MAC klienta, który ma prawo korzystać z monitorowanej przez nas sieci bezprzewodowej, nic nie stoi na przeszkodzie by podszyć się pod tego klienta, wykorzystując jego adres MAC. By dokonać zmiany adresu karty bezprzewodowej należy użyć polecenia macchanger Program ten umożliwia na zmianę adresu MAC interfejsu sieciowego. Składnia polecenia jest następująca: macchanger –m <nowy_adres_MAC> <interfejs>. Po wydaniu polecenia bieżący adres MAC zostaje zastąpiony „sfałszowanym”. W naszym przypadku składnia polecenia przyjmie następującą postać: macchanger –m 00:25:9C:08:73:39 wlan0.

 

 

Aby sprawdzić czy faktycznie nastąpiła zmiana przeanalizujmy powyższy listening.

1 – w pierwszym kroku zostaje sprawdzony interfejs karty wlan0, celem zebrania informacji o adresie MAC. Jak widać adres karty jest następujący: 00:13:02:70:0c:84 i jest to ten sam interfejs, który został odrzucony przez AP ponieważ adres tego interfejsu nie znalazł się na liście hostów mających prawo uzyskać połączenie,

2- w drugim kroku następuje próba zmiany adresu MAC za pomocą polecenia: macchanger –m 00:25:9C:08:73:39 wlan0 na adres MAC karty mającej prawo podłączenia się do AP a uzyskany dzięki poleceniu airodump-ng,

3 – jak widać próba ta kończy się niepowodzeniem, interfejs jest włączony i zajęty, komunikat o błędzie może być również spowodowany brakiem uprawnień, upewnij się że masz prawa administratora, root,

4 – wyłączenie interfejsu wlan0,

5 – ponowna próba zmiany adresu MAC, zakończona sukcesem,

6 – włączenie interfejsu wlan0,

7 – weryfikacja wprowadzonego adresu MAC, adres MAC dzięki komendzie macchanger został zastąpiony.

Tak więc udało nam się zmienić adres MAC karty sieciowej, po zmianie adresu możemy bez problemu podłączyć się do punktu dostępowego.

Możliwość zmiany adresu MAC możemy wykorzystać do przeprowadzenia ataku DoS. Wykonując tą operację wielokrotnie, AP jeżeli to on jest odpowiedzialny za dostarczanie klientom poprawnych danych związanych z konfiguracją sieci bądź osobny serwer DHCP umieszczony w innym segmencie sieci za każdym razem nowemu klientowi musi przydzielić poprawny adres IP. Tak więc każdy nowy klient zmniejsza pule dostępnych wolnych adresów. Jeżeli nasza sieć np. ma przydzielone adresowanie 192.168.2.0/24 (maska 255.255.255.0), to w tak utworzonej sieci możemy poprawnie zaadresować 254 hosty. Jeżeli serwer DHCP ma prawo przydzielić wszystkie dostępne do wykorzystania adresy to po zaadresowaniu 254 hosta jego pula wolnych adresów IP wyniesie 0. Tak więc 255 host nie otrzyma już adresu IP. Oczywiście pula ta zgodnie z ustawieniami serwera DHCP po pewnym ustalonym czasie (czas dzierżawy adresu) znów będzie możliwa do zaadresowania. Nie mniej jednak stałe i ciągłe wykonywanie podłączenia do sieci z co rusz to nowym adresem MAC skutecznie może zablokować możliwość prowadzenia komunikacji z nowo przybyłymi klientami.

Poniżej trzykrotna zmiana adresu MAC po której nastąpiło połączenie z AP.

 

 

Po zalogowaniu się do panelu routera i po wyświetleniu tablicy aktywnych klientów DHCP można zauważyć, że kolejnym adresom MAC został przyporządkowany adres IP.

 

 

Proces podłączania kolejnych klientów również możemy śledzić dzięki poleceniu airodump-ng

 

 

Całą procedurę oczywiście możemy trochę zautomatyzować pisząc skrypt powłoki, który wszystkie czynności wykona za nas. Zamykając temat, przeprowadzenie tego typu ataku w którym zostanie wyczerpana pula wszystkich adresów IP wymaga od nas najczęściej wygenerowanie ruchu dla około   50 do 100 adresów MAC, ponieważ bardzo często do takich wartości ograniczana jest pula dostępnych, możliwych do wykorzystania adresów IP przez serwer DHCP (wszystko zależy od producenta urządzenia i zastosowanych ustawień domyślnych i żeby było jasne mówimy o sieciach domowych oraz tych stosowanych w małych firmach).

Tak więc udało nam się obejść obydwa mechanizmy i jak pokazałem wcale nie było to skomplikowane. Opierając się tylko na tych rozwiązaniach sieć nasza staje się łatwym łupem. Sprawa trochę się komplikuje gdy dołożymy szyfrowanie (lecz nie jest beznadziejnie).

A więc teraz spróbujmy przełamać zabezpieczenia sieci chronionej za pomocą szyfrowania WEP.


 

W pierwszej kolejności skonfigurujmy punkt dostępu tak aby obsługiwał wspominane wyżej szyfrowanie. W tym celu w sekcji zabezpieczeń wprowadzamy stosowne ustawienia.

Wybieramy typ szyfrowania WEP, długość klucza ustalamy na 128-bit (tak by nie było prosto) następnie format klucza i by było prościej zapamiętać hasło został ustawiony na trzynaście znaków ASCII (druga opcja do wyboru to: 26 znaków HEX). Hasło podłączenia do sieci to: bardzotajne12, ustawione jako pierwszy klucz domyślny.

 

 

Po skończonej konfiguracji punkt dostępu rozgłasza sieć WiFi – TempWiFi zabezpieczone protokołem WEP. Tak skonfigurowana sieć będzie celem naszego ataku, naszym zadaniem jest uzyskanie klucza sieci.

OK. przystępujemy do ATAKU.

Lecz jeszcze chwilka. W artykule bardzo często będziemy korzystać z narzędzi zawartych w pakiecie aircrack-ng (zresztą już zaczęliśmy) więc zanim przejdziemy dalej, jeszcze krótka ich charakterystyka.

aircrack-ng – odpowiedzialny za łamanie kluczy WEP (atak brute-force) oraz WPA/WPA2 (metoda słownikowa),

 

 

airdecap-ng – umożliwia na podstawie zdobytego klucza odszyfrowanie plików z przechwyconymi pakietami,

 

 

airmon-ng - narzędzie ustawia bezprzewodową kartę sieciową do pracy w trybie monitora (monitor mode),

 

 

aireplay-ng – aplikacja prowadzi wstrzykiwanie pakietów (ang. packet injec­tion),

 

 

airodump-ng -sniffer, umożliwia przechwycenie i zapis pakietów uzyskanych dzięki monitorowaniu,

 

 

airolib-ng – zarządzanie nazwami SSID oraz hasłami,

 

 

packetforge-ng – narzędzie umożliwia tworzenie zaszyfrowanych pakie­tów, które następnie są wykorzystywane w procesie packet injec­tion,

 

 

airbase-ng – tworzenie i zarządzanie fał­szywymi (podstawionymi) AP, wykorzystywane w atakach na klienta sieci bezprzewodowych,

 

 

airdecloak-ng – program odpowiedzialny za usunięcie tzw. maskowania WEP z przechwyconych plików,

 

 

airdriver-ng – zarządzanie sterownikami kart sie­ciowych,

 

 

airserv-ng – dostęp zdalny do karty sieciowej,

 

 

buddy-ng - serwer pomocniczy dla narzędzia easside-ng,

easside-ng – zapewniakomunikację z AP bez znajomości klu­cza WEP,

 

 

tkiptun-ng – aplikacja odpowiedzialna za prowadzenie ataków WPA/TKIP,

 

 

wesside-ng - odzyskiwanie klucza WEP.

 

 

Narzędzia zostały pokrótce omówione (poszczególne opcje i parametry będą opisane podczas opisywanie poszczególnych ataków) a więc przechodzimy dalej.

Pierwszą czynnością jest włączenie interfejsu sieci bezprzewodowej – polecenie: ifconfig wlan1 up (mam zainstalowane dwie karty sieciowe stąd w poleceniu wlan1 – pierwsza karta wifi to wlan0).

Drugą czynnością jest utworzenie interfejsu, który posłuży nam do monitorowania sieci oraz do przeprowadzenia wstrzykiwania pakietów. Interfejs powiązany będzie z interfejsem fizycznym wlan1. Interfejs włączamy za pomocą polecenia: airmon-ng start wlan1.

 

 

Kolejnym krokiem jest lokalizacja naszego punktu dostępowego a konkretnie poznanie jego adresu MAC. Do tego celu możemy użyć polecenia iwlist scan bądź airodump-ng mon0.

 

 

Gdy poznaliśmy już adres MAC interesującego nas punktu dostępowego wydajemy znane nam już polecenie: airodump-ng -c 11 --bssid 00:1F:1F:0E:70:68 --write wepkey mon0. W poleceniu doszedł nowy przełącznik a mianowicie --write, dzięki niemu włączymy zapisywanie przechwyconych pakietów. Nazwa pliku w którym będą zapisywane pakiety to wepkey.cap

Pliki domyślnie zapisywane są w Katalogu domowym, wyświetlić je możemy np. za pomocą polecenia ls bądź dir.

 

 

Po wywołaniu polecenia, airodump-ng zaczyna monitorować punkt dostępowy.

 

 

Podłączamy hosta za pomocą znanego nam klucza.

 

 

W oknie programu airodump-ng powinniśmy zobaczyć klienta, który został skojarzony z punktem dostępowym.

 

 

By móc z powodzeniem złamać klucz WEP musimy przechwycić znaczną ilość pakietów (im więcej tym lepiej). By to wykonać możemy oczywiście spokojnie czekać i rejestrować pojawiające się pakiety. Niestety jest to proces długotrwały. Dlatego by przyśpieszyć proces zbierania danych możemy skorzystać narzędzia aireplay-ng. Zadaniem narzędzia będzie przechwycenie pakietu ARP a następnie ponowne, wielokrotne „wstrzyknięcie” go do sieci. W ataku wykorzystywana jest ta właściwość, że pakiety ARP łatwo jest zidentyfikować spośród tysięcy innych pakietów pojawiających się w przechwytywanym ruchu. Identyfikacja pakietu ARP jest ułatwiona dzięki stałej długości nagłówka pakietu.

Dzięki użyciu polecenia airodump-ng dostarczana jest nam jeszcze jedna bardzo ważna informacja a mianowicie adres MAC skojarzonego z AP klienta. Informacja ta zostanie użyta w parametrach polecenia aireplay-ng .

Otwieramy nowe okno terminala i wywołujemy polecenie: aireplay-ng -3 -b 00:1F:1F:0E:70:68 -h 04:A1:51:20:55:33 mon0

 

 

Użyte opcje to:

-3 powoduje włączenie powielania pakietów ARP,

-b identyfikator BSSID sieci (adres MAC),

-h adres MAC klienta, ten pod którego się podszywamy (klient musi być uwierzytelniony).

Gdyby z jakiś powodów przeprowadzenie packet injection nie doszło do skutku spróbuj do polecenia dodać parametr --ignore-negative-one

Po uruchomieniu programu, program czeka aż przechwyci pakiet ARP (rysunek powyżej). Gdy uda się takowy pakiet przechwycić następuje jego replikacja.

 

 

Po rozpoczęciu procesu wstrzykiwania możemy zaobserwować gwałtowny wzrost przechwytywanych pakietów (okno terminala w którym został uruchomiony program airodump-ng, kolumna #Data) .

 

 

Gdy już proces zbierania danych, które zostaną użyte w procesie łamania hasła został przyśpieszony możemy przejść do właściwego procesu uzyskania hasła.

Aby rozpocząć proces łamania hasła wywołujemy polecenie (najlepiej w nowym oknie terminala): aircrack-ng <nazwa_pliku_cap> (wskazanego w poleceniu airodump-ng). W naszym scenariuszu polecenie przyjmie postać: aircrack-ng wepkey-01.cap(gdy nie jesteś pewien użyj polecenia ls bądź dir)

 

 

Program aircrack-ng zaczyna pracować próbując na podstawie przechwyconych pakietów uzyskać hasło. W przypadku w którym okaże się że hasło ze względu na zbyt małą ilość przechwyconych danych nie może być złamane, program przerywa działanie do chwili w której ilość pakietów ulegnie zwiększeniu. Program swoją pracę kontynuuje automatycznie a wynikiem jego działania jest uzyskanie klucza sieci.  

 

 

Udało nam się zdobyć hasło sieci a więc nic nie stoi na przeszkodzie abyśmy mogli się do tej sieci podłączyć.

Przy tym przykładzie skorzystaliśmy z narzędzia aireplay-ng więc warto jeszcze wspomnieć o jednej funkcjonalności narzędzia a mianowicie o teście jakości i szybkości połączenia z AP. Test wykonamy za pomocą polecenia: aireplay-ng -9 -a <MAC_AP> -e <SSID_sieci> -B <interfejs>, tak więc Ja by wykonać test musiałem wydać polecenie: aireplay-ng -9 -a 00:1F:1F:0E:70:68 -e "TempWiFi" -B mon0 (jak by komenda nie pomogło spróbuj dodać parametr --ignore-negative-one)

 

 

A co z sytuacją w której podsłuchujemy ruch sieciowy pomiędzy danym hostem a punktem dostępu i przechwycony ruch chcemy poddać analizie?

By móc odczytać przechwycone pakiety musimy poddać je deszyfracji. Deszyfrację przeprowadzamy za pomocą wcześniej zdobytego klucza. Lecz w tym szczególnym przypadku opisanym wyżej jest pewne ALE. A mianowicie program airdecap-ng do deszyfracji nie obsługuje haseł w których został użyty format ASCI a tak właśnie się stało. Dlatego by pokazać, że proces taki jest rzeczywiście możliwy hasło w AP zostało zmienione na 26 znakowe hasło zapisane w formacie HEX (znaki od 0 do 9 dodatkowo A, B, C, D, E, F)

 

 

Został przechwycony ruch sieciowy pomiędzy klientem a AP a całość zapisana do pliku: wepkey_pr2-01.cap. Kolejnym krokiem jest zdobycie klucza, my pójdziemy trochę na skróty bo proces zdobywania hasła został opisany wyżej i użyjemy znanego, przed chwilą zdefiniowanego hasła. W normalnych warunkach oczywiście hasło byłoby nam nie znane i proces łamania musielibyśmy przeprowadzić od samego początku do końca ale celem tego scenariusza jest pokazanie jak można deszyfrować przechwycone pakiety celem ich dalszej analizy więc przyjmujemy, że podsłuchane pakiety są zapisane w pliku i że znany jest nam klucz WEP.

Po wczytaniu przechwyconego ruchu pakietów jego analiza nie dostarcza nam zbyt dużo informacji ponieważ dane te są zaszyfrowane za pomocą WEP.

 

 

Analizując plik możemy (po wybraniu Statistics – Endpoints) zaobserwować ilość pakietów sieci WLAN pomiędzy hostem a AP. Plik w tej postaci nie dostarcza nam żadnej informacji o tym z jakimi usługami dany host faktycznie się łączył.

By to zmienić i uzyskać informacje o połączeniach wykonanych przez klienta sieci WLAN podany plik poddamy procesowi deszyfracji. Wykorzystamy do tego celu narzędzie airdecap-ng. Aby to wykonać, otwórz okno terminala i wydaj polecenie: airdecap-ng -w <zdobyte_hasło> <nazwa_pliku> W naszym scenariuszu polecenie to przyjmie postać: airdecap-ng -w 01020304050607080910111213 wepkey_pr2-01.cap

 

 

Narzędzie odszyfruje nam przechwycone pakiety a efekt swojej pracy zapisze w pliku: wepkey_pr2-01-dec.cap (do nazwy pliku dodany jest człon dec).

 

 

Otwórzmy więc plik i sprawdźmy czy wszystko przebiegło po naszej myśli.

 

 

Jak widać powyżej, po wykonaniu opisanych czynności jesteśmy w stanie wydobyć o wiele więcej informacji z przechwyconego ruchu pomiędzy klientem a AP.

Pakiety rozszyfrować możemy również wykorzystując do tego sam sniffer plików czyli w naszym przypadku program Wireshark (znacznie wygodniejsza opcja).

Aby tego dokonać z menu wybieramy Edit a następnie Preferences. Po lewej stronie w zakładce Protocols odszukujemy protokół IEEE 802.11 a następnie w opcjach protokołu zaznaczamy pole Enable decryption i celem wpisania klucza WEP wybieramy przycisk Edit.

 

 

W nowo otwartym oknie wybieramy New i następnie w kolejnym okienku typ klucza (Key type – WEP) i w polu Key wpisujemy zdobyte hasło.

 

 

Pozostało nam zatwierdzić wszystkie pola i cieszyć się odszyfrowaną zawartością pliku (po lewej plik zaszyfrowany a po prawej odszyfrowany).

 

 

Przedstawiony powyżej typ ataku z wykorzystaniem pakietów ARP nie jest jedynym atakiem jaki możemy użyć by uzyskać hasło sieci bezprzewodowej chronionej za pomocą WEP. Do uzyskania klucza sieci możemy użyć atak typu Caffe Latte bądź Hirte.

Autorem ataku typu Caffe Latte jest Vivek Ramachandran i po raz pierwszy został on przedstawiony na konferencji Toorcon 9 w San Diego. Atak tego typu wykorzystywany jest do łamania zabezpieczeń protokołu WEP. Atak ten bazuje na atakach typu Honeypot (z ang. garniec miodu) oraz Misassociation.

Zaczynamy od konfiguracji AP tak aby używał szyfrowania WEP. Klucz użyty do zabezpieczenia sieci to: 123456789101112131415167 (ten klucz będziemy chcieli złamać)

 

 

Tak jak w poprzednich sytuacjach zaczynamy od monitorowania interesującego nas punktu dostępowego a dodatkowo cały ruch zapisujemy do pliku (plik ten zostanie użyty aby złamać hasło sieci) – polecenie: airodump-ng -c 11 --bssid 00:1F:1F:0E:70:68 --write caffeattack mon0 (adres BSSID uzyskujemy po wydaniu polecenia iwlist scan)

Jak widać poniżej z AP jest skojarzony jeden klient.

 

 

Następnym krokiem jest wysłanie w imieniu punktu dostępowego odpowiednio spreparowanych pakietów (stąd w poleceniu BSSID punktu dostępowego a parametr -6 to identyfikator ataku Caffe Latte) – polecenie: aireplay-ng -b 00:1F:1F:0E:70:68 -h 00:25:9C:08:73:39 mon0 (ogólna składnia: airereplay-ng <indetyfikator_ataku> -b <BSSID_punktu_dostępowego> -h <adres_MAC_klienta> <interfejs>)

Po wywołaniu polecenia zostają zebrane pakiety, które następnie są retransmitowane tak aby zebrać jak najwięcej danych, które zostaną dalej użyte do złamania hasła chroniącego sieć.

 

 

Cały ruch jest zapisywany do pliku caffeattack-01.cap (polecenie: airodump-ng) po zebraniu potrzebnej liczby pakietów po wydaniu polecenia: aircrack-ng caffeattack-01.cap następuje próba uzyskania hasła.

Jak widać hasło zostało złamane.

 

 

Oprócz ataku Caffe Latte możemy również przeprowadzić atak Hirte. Proces przeprowadzenia ataku jest bardzo podobny do tego opisanego wyżej (czyli Caffe Latte). Tak jak poprzednio zaczynamy od monitorowania punktu dostępowego wraz z zapisem przechwyconych pakietów – polecenie: airodump-ng -c 11 --bssid 00:1F:1F:0E:70:68 --write hirte mon0

 

 

Po włączeniu przechwytywania plików za pomocą polecenia aireplay-ng uaktywniamy opcję transmisji pakietów potrzebnych do uzyskania hasła: aireplay-ng -7 -b 00:1F:1F:0E:70:68 mon0 (-7 identyfikator ataku Hirte). Po uzyskaniu potrzebnego typu pakietu, pojawia się pytanie o jego akceptację. Akceptacja równoznaczna jest z zgodą na wielokrotną transmisję pakietu tak by uzyskać niezbędne dane potrzebne do uzyskania hasła sieci.

 

 

I już tradycyjnie do łamania hasła używamy aplikację aircrack-ng – polecenie: aircrack-ng hirte-01.cap

 

 

Po wywołaniu polecenia aircrack-ng hasło do sieci chronione WEP, po ataku typu Hirte zostaje złamane.

Podsumowując atak Caffe Latte oraz Hirte należy zwrócić uwagę, że ataki te mogą być prowadzone bezpośrednio przeciw klientowi danej sieci bezprzewodowej tzn. klient nie musi być podłączony do sieci WiFi lecz wystarczy, że dany host sonduje przestrzeń celem podłączenia się do znanej mu sieci.

Klient sieci bezprzewodowej po połączeniu się z daną siecią najczęściej zapamiętuje jej nazwę SSID i użyte poświadczenia. Po włączeniu karty sieciowej komputer sonduje dostępne otoczenie celem odnalezienia sieci zapisanych w pamięci połączeń. Tak więc celem ataku jest spowodowanie bądź wymuszenie na kliencie skojarzenia z AP kontrolowanym przez napastnika. To co stanowi siłę ataku to fakt, że klient nie musi znajdować się w obrębie atakowanej sieci.

Po wydaniu polecenia airodump-ng uzyskujemy informacje o dostępnych sieciach ale również informację o klientach nie skojarzonych z żadną siecią i poszukujących znanej mu sieci celem podłączenia.

Na poniższym zrzucie klient 00:25:9C:08:73:39 nie podłączony do żadnego punktu szuka sieci TempWiFi.

 

 

W przypadku ataku Cafe Latte (ale także ataku Hirte) procedura szukania hasła sprowadza się do utworzenia fałszywego punktu dostępowego o nazwie SSID tożsamej z nazwą sieci poszukiwanej przez klienta. Utworzenie fałszywego punktu dostępowego sprowadza się do wydania polecenia: airbase-ng -c 3 -a 28:BE:9B:04:B1:98 -e "TempWiFi" -L -W 1 mon0 (airbase-ng -c <kanał> -a <BSSID_sieci> -e <SSID_sieci> -L -W 1 <interfejs> - opcja -L włącza atak Caffe Latte, natomiast parametr –W 1 nakazuje utworzenie sieci bezprzewodowej w której będzie wykorzystywane szyfrowanie WEP).

Po wydaniu polecenia airbase-ng zostaje utworzony punkt dostępowy o danej nazwie SSID, klient który poszukuje sieci zostaje do takiego punktu podłączony i automatycznie rozpoczyna się atak Caffe Latte.

 

 

Oczywiście należy przechwytywać i zapisywać pojawiające się pakiety (polecenie: airodump-ng) tak aby przechwycony ruch mógłby być wykorzystany w połączeniu z narzędziem za pomocą, którego będziemy łamać hasło (polecenie:aircrack-ng).

W przypadku ataku Hirte polecenie airbase-ng przyjmuje postać: airbase-ng -c 11 -a 28:BE:9B:04:B1:98 -e "TempWiFi" -W 1 -N mon0 (airbase-ng -c <kanał> -a <BSSID_sieci> -e <SSID_sieci> -W 1 -N <interfejs> - opcja -N włącza atak Hirte, natomiast parametr -W 1 nakazuje utworzenie sieci bezprzewodowej w której będzie wykorzystywane szyfrowanie WEP).

I podobnie jak w przypadku ataku Caffe Latte zostaje utworzony fałszywy punkt dostępowy tylko tym razem po podłączeniu klienta rozpoczyna się atak typu Hirte.

 

 

Ruch zdobyty podczas tego ataku oczywiście zapisujemy by później wykorzystać przechwycone pakiety przy łamaniu hasła.

Przykład ataku Caffe Latte oraz Hirte.

Podczas ataku na nie podłączonego klienta (sondującego w poszukiwaniu sieci) krytyczne staje się zdobycie nazwy poszukiwanej sieci WiFi tak by na podstawie tej nazwy utworzyć fałszywy punkt dostępowy. W naszym przypadku udało się dzięki poleceniu airodump-ng zdobyć tą nazwę (poniżej klient poszukuje sieci o nazwie TempWiFi).

 

 

A tak naprawdę nazwa ta staje się dla nas dostępna dzięki zaznaczeniu w ustawieniach podłączającego się hosta pewnej opcji (klient Windows). Mowa tu o opcji – Połącz, nawet jeśli sieć nie emituje nazwy (SSID) – opcja dostępna w właściwościach sieci bezprzewodowej.

 

 

W przypadku braku zaznaczenia powyższej opcji, po wywołaniu polecenia airodump-ng widzimy klienta, który nie jest przypisany do danego AP ale również brak jest nazwy poszukiwanej sieci.

 

 

Brak nazwy SSID uniemożliwia nam wydanie polecenia airbase-ng a w konsekwencji przeprowadzenie ataku.

Podsumowując atak na WEP – protokół ten jest dobrze znany a mnogość ataków jakie możemy przeprowadzić spowodowała, że wybierając ten typ zabezpieczeń już na starcie prosimy się o kłopoty.


 

Udało nam się uzyskać dostęp do danych zaszyfrowanych protokołem WEP a więc przejdźmy teraz do protokołu WPA/WPA2, który stanowi „większy orzech do zgryzienia”. A więc jak już zostało wspomniane protokół WPA celem zwiększenia ochrony przesyłanych danych do szyfrowania używa algorytmu TKIP (ang. Temporal Key Integrity Protocol) natomiast w przypadku protokołu WPA2 użyto algorytmu AES-CCMP (ang. Advanced Encryption Standard-Counter Mode with Cipher Block Chaining Message Authentication Code Protocol), jeszcze bardziej zwiększając jego odporność na ataki. Co ważne oba protokoły wspierają uwierzytelnienie EAP (ang. Extensible Authentication Protocol), które w połączeniu z serwerem RADIUS (ang. RemoteAuthentication Dial In User Service) jest najczęściej stosowanym rozwiązaniem wykorzystywanym w środowiskach korporacyjnych. W przypadku zastosowań osobistych (dom, biuro) używany jest protokół PSK (ang.Pre-Shared Key).

By dobrać się do sieci zabezpieczonej WPA/WPA2 będziemy musieli skorzystać z ataku brute force (kolejne podstawianie znaków celem odgadnięcia hasła) bądź ataku opartego o słownik (sprawdzane są kolejne wyrazy, które zapisane są w pliku słownika).

Klient łącząc się z AP, który używa wspomnianych metod zabezpieczeń celem podłączenia do sieci musi przeprowadzić proces negocjacji, który składa się z czterech etapów. (ang. four-way handshake). By zdobycie hasła móc zakończyć powodzeniem musimy przechwycić cały proces negocjacji przeprowadzony pomiędzy klientem a punktem dostępu.

Sukcesem gwarantującym a już na pewno zwiększającym prawdopodobieństwo przeprowadzenia skutecznego ataku jest posiadanie dobrego słownika z hasłami (można wykorzystać te standardowo dostępne w dystrybucji Linux Backtrack bądź Linux Kali).

Powyżej wspomniałem, że warunkiem koniecznym jest przechwycenie procesu negocjacji pomiędzy klientem a AP, przyjrzyjmy się więc bliżej temu procesowi.

Schematycznie proces ten został przedstawiony na rysunku poniżej.

 

 

Cały proces szyfrowania z wykorzystaniem metod WPA/WPA2 PSK opiera się na wyliczeniu wartości klucza sesji PTK (ang. Pairwise Transient Key). Wyliczenie wartości tego klucza jest dość mozolnym procesem ponieważ wartość ta nierozerwalnie związana jest z następującymi parametrami:

      • klucz PSK (ang. Pre-Shared Key), klucz jest znany obu stronom,
      • identyfikator sieci SSID,
      • wartość losowa ANonce, za utworzenie tej wartości odpowiedzialny jest serwer (ang. Authenticator Nonce),
      • wartość losowa SNonce, wartość tą generuje klient (nazywany też suplikantem ang. Supplicant Nonce),
      • adres MAC punktu dostępowego,
      • adres MAC klienta bezprzewodowego.

Na podstawie tych wszystkich argumentów, wyliczany jest klucz PTK, który szyfruje nam wszystkie dane, które będą wymieniane pomiędzy klientem a punktem dostępu.

Nasłuchując i przechwytując wymianę danych pomiędzy klientem a punktem dostępu jesteśmy z całej tej układanki zdobyć pięć spośród sześciu informacji. Jedyną niewiadomą pozostaje dla nas klucz PSK. Klucz PSK jest 256-bitowym kluczem współdzielonym, który jest złożeniem hasła PSK znanego użytkownikowi i SSID-u sieci a wygenerowanego przez funkcję PBKDF2 (ang. Password Based Key Derivation Function).

Proces łamania hasła przebiega w następujących etapach:

1. pobierane jest hasło z pliku słownika,

2. na podstawie pobranego hasła i SSID-u sieci wyliczany jest 256-bitowy klucz PSK,

3. Po wyliczeniu klucza PSK jest on łączony z pozostałymi przechwyconymi elementami celem utworzenia klucza PTK,

4. Ostatnim etapem jest sprawdzenie integralności nagłówka jeżeli test ten zostanie pomyślnie zakończony oznacza to że pobrany wyraz z pliku słownika odpowiada zdefiniowanemu hasłu,

5. Jeśli test w punkcie 4 kończy się niepowodzeniem, proces rozpoczyna się od nowa.

 

 

Pierwszym krokiem jaki wykonamy będzie skonfigurowanie punktu dostępowego naszej sieci testowej tak aby obsługiwał szyfrowanie WPA PSK. Jako hasła użyjemy słowa: defender (tak by hasło było podatne na atak słownikowy, hasło znajduje się w pliku słownika).

 

 

Zdobywamy podstawowe informacje o atakowanej sieci czyli BSSID i numer kanału na którym rozgłaszana jest sieć bezprzewodowa (będzie potrzebna jeszcze nazwa sieci bezprzewodowej, lecz to trochę później).

 

 

W następnym kroku włączamy przechwytywanie i zapisywanie ruchu pomiędzy interesującym nas punktem dostępu a podłączającymi się klientami. W tym celu wydajemy znane już nam polecenie: airodump-ng --bssid <adres_AP> --channel <numer_kanału> --write <nazwa_pliku> <interfejs> W tym scenariuszu polecenie przyjmie postać: airodump-ng --bssid 00:1F:1F:0E:70:68 --channel 11 --write wpa_udane mon0

 

 

Gdy już zaczęliśmy przechwytywać ruch, czekamy na uprawnionego klienta, który razem z AP przeprowadzi operację czteroetapowej negocjacji uwierzytelniania. Oczywiście jak w przypadku WEP proces ten możemy przyśpieszyć poprzez wysłanie żądania anulowania uwierzytelnienia do wszystkich podłączonych klientów (polecenie: aireplay-ng -0 <liczba_pakietów> -a <adres_AP> <interfejs> ). Odłączeni klienci by uzyskać połączenie z AP ponownie przeprowadzą proces uwierzytelnienia. Gdy proces przechwycenia negocjacji zakończy się sukcesem zostaniemy o tym poinformowani poprzez wyświetlenie komunikatu WPA Handshake, wraz z identyfikatorem BSSID punktu dostępowego.

Po udanym procesie przechwycenia negocjacji możemy zakończyć zapisywanie pakietów. Przechwycony ruch możemy przeglądnąć w Wireshark-u. Po otwarciu Wireshark-a, pakiety uwierzytelniające są odznaczone jako EAPOL.

 

 

Od tego momentu zaczyna się właściwy proces łamania hasła. By rozpocząć zdobywanie hasła musimy zaopatrzyć się w słownik z którego będą pobierane kolejne hasła. Gdy takowego słownika nie posiadasz możesz skorzystać z słowników domyślnie dołączonych do dystrybucji BackTrack bądź Kali. Słowniki dostępne są w lokalizacji /pentest/passwords/wordlists dla Linux BackTrack oraz /usr/share/wordlists dla Linux Kali.

Przyszła pora by skorzystać z narzędzia aircrack-ng, jako argumenty wywołania polecenia podajemy nazwę pliku zawierającego przechwycone pakiety oraz lokalizację pliku słownika – ogólna składnia polecenia: aircrack-ng <nazwa_pliku_zawierającego_4_handshake> -w <lokalizacja_pliku_słownika> w naszych rozważaniach polecenie przyjmie kształt - aircrack-ng wpa_udane.cap -w /usr/share/wordlists/darc0de.lst (plik słownika przybiera też nazwę darkc0de.lst).

 

 

Narzędzie aircrack-ng rozpoczyna pracę poprzez pobranie kolejnych haseł z pliku słownika,

 

 

jeśli zostanie znalezione odpowiednie słowo, program powiadomi nas o tym.

 

 

Jak widać powyżej dzięki przechwyceniu pakietów negocjacji uwierzytelnienia wraz z narzędziem aircrack-ng udało się uzyskać hasło dostępu do sieci WiFi.

Jak już zdobyliśmy hasło możemy (analogicznie jak w przypadku WEP) odszyfrować pakiety, przechwycone podczas nasłuchu. Deszyfrację pakietów przeprowadzamy za pomocą narzędzia airedecap-ng (airdecap-ng –p <zdobyte_hasło_WPA> <lokalizacja_pliku_cap> -e <nazwa_sieci>)

 

 

Wynikiem wydania polecenia jest plik w którym przechwycone pakiety będą odszyfrowane (nazwa pliku w tym przypadku: wpa_udane-dec.cap – dodane -dec).

Odszyfrowanie pakietów możemy również przeprowadzić za pomocą Wireshark-a (patrz WEP), po skonfigurowaniu opcji zawartych w zakładce Protocols (hasło plus nazwa sieci bezprzewodowej – po dwukropku) zawartość przechwyconych pakietów staje się dostępna – rysunek poniżej – po lewej pakiety zaszyfrowane protokołem WPA a po prawej te same pakiety odszyfrowane.

 

 

Wszystkie czynności opisane powyżej zadziałają również w przypadku protokołu WPA2.

Przeprowadzony atak nie trwał długo, hasło zostało złamane dosyć szybko lecz duża w tym zasługa samego słownika i doboru hasła chroniącego naszą testową sieć. W „normalnych” warunkach ten proces trwa znacznie dłużej. Więc samoistnie nasuwa się pytanie czy można całą procedurę przyśpieszyć? Nieznacznie tak. Można do problemu łamania hasła podejść troszeczkę z innej strony.

Łamanie hasła angażuje znaczne zasoby sprzętowe komputera więc wyjściem jest zastosowanie maszyny, która oferuje większą moc obliczeniową bądź spróbowanie obliczenia wartości klucza PMK dla każdego hasła znajdującego się w pliku słownika. Można również pokusić się o ściągnięcie gotowych tablic lecz tu napotykamy na spore utrudnienie. Pamiętasz – gdy wyżej omawiałem etapy łamania hasła wspomniałem, że do wyliczenia odpowiednich wartości jest używany SSID sieci i tu właśnie jest „pies pogrzebany”. Udział nazwy SSID-u sieci w tworzeniu wartości klucza PMK skutecznie utrudnia nam przygotowanie tablic, których użycie byłoby uniwersalne (łamanie haseł sieci bezprzewodowej dla różnych wartości nazwy sieci). Dzieje się tak ponieważ wyliczona wartość klucza PMK dla różnych SSID-ów będzie diametralnie różna. Tak więc nie można użyć przygotowanych tablic z wartościami wyliczonymi dla SSID-u np. Dom do łamania haseł sieci, w której atakowana sieć nazywa się np. Linksys.

Aby przygotować tablice dla danego słownika i dla danej nazwy sieci należy skorzystać z narzędzia genpmk.

 

 

Składnia polecenia jest następująca: genpmk -f <lokalizacja_pliku_słownika> -d <lokalizacja_tworzonej_tablicy_skrótów> -s <"SSID_sieci">. Wynikiem działania polecenia jest utworzenie pliku, który będzie zawierał wyliczone wartości kluczy PMK. Dla naszych argumentów polecenie przybiera następującą postać: genpmk -f /usr/share/wordlists/darc0de.lst -d pmk_tablica -s "TempWiFi"

 

 

Narzędzie zaczyna pracować a wynikiem jest utworzenie tablicy zawierającej skróty haseł z słownika.

Do złamania hasła użyjemy wcześniej przechwycony plik w którym znajdują się informacje wymieniane podczas czteroetapowej negocjacji uwierzytelniania.

By móc skorzystać z wygenerowanej tablicy tym razem skorzystam z narzędzia Cowpatty.

 

 

Przed rozpoczęciem procesu łamania hasła możemy sprawdzić czy zapisany plik zawierający przechwycone dane uwierzytelniające jest prawidłowy. By wykonać sprawdzenie pliku .cap wydaj polecenie: cowpatty -c -r <plik_zawierający_uwierzytelnienie>.

 

 

Jak widać powyżej plik zawiera wszystkie niezbędne dane by rozpocząć proces zdobywania hasła.

By rozpocząć cały proces, program Cowpatty musimy uruchomić z następującymi parametrami: cowpatty -d <lokalizacja_tablicy_skrótów> -s <"SSID_sieci"> -r <przechwycony_plik_z_uwierzytelnieniem> Tak więc polecenie przyjmie następującą składnię: cowpatty -d pmk_tablica -s "TempWiFi" -r wpa.udane.cap

 

 

Wynikiem wydania polecenia jest zdobycie hasła chroniącego sieć WiFi. Jak można zauważyć (i co już nie jest tajemnicą) hasłem jest słowo: defender.

Oczywiście z narzędziem Cowpatty można również używać pliku słownika (bez potrzeby tworzenia tablicy) – składnia polecenia cowpatty -f <lokalizacja_pliku_słownika> -r <lokalizacja_pliku_z_uwierzytelnieniem> -s <"SSID_sieci"> czyli cowpatty -f /usr/share/wordlists/darc0de.lst -r wpa_udane.cap -s "TempWiFi"

 

 

Porównując czasy łamania hasła można zauważyć, że proces w którym została użyta tablica został wykonany błyskawicznie - 0,15 sekundy. Natomiast w przypadku skorzystania z samego słownika, zdobycie hasła zajęło nam 32,17 sekundy. Jak widać różnica jest znaczna, lecz nie możemy zapomnieć o tym, że proces generowania samej tablicy pochłania pewną część czasu. Samoistnie nasuwa się pytanie – W takim razie co robić? Generować tablicę czy może pozostać przy słowniku? Jeżeli tablicę będziesz używał wielokrotnie to oczywiści lepiej ją sobie wygenerować jeżeli zaś jednorazowo to wydaje mi się że chyba lepszym rozwiązaniem jest skorzystanie bezpośrednio z słownika.

Istnieje jeszcze jedno rozwiązanie. Wielu użytkowników nazwę sieci SSID pozostawia domyślną, nie modyfikując jej fabrycznej wartości (np. Linksys, Belkin czy dlink). Tak więc zanim zaczniesz generować czytelniku sam potrzebną Ci tablicę poszukaj w Internecie, bo może się okazać, że tablicę z odpowiadającym tobie SSID-zie ktoś już stworzył.

Pozostajemy przy temacie tablic, a więc zadajmy kolejne pytanie - Czy tak przygotowaną tablicę skrótów bądź pobraną z Internetu (za pomocą genpmk) można użyć w połączeniu z narzędziem aircrack-ng? Oczywiście tak. Należy tylko przeprowadzić operację konwersji bazy z formatu genpmk do formatu akceptowalnego przez narzędzie aircrack-ng.

By wykonać konwersję tablicy należy skorzystać z narzędzia: airolib-ng. Konwersja następuje po wydaniu polecenia: airolib-ng <lokalizacja_tworzonej_tablicy_format_aircrack> --import cowpatty <lokalizacja_tablicy_format_genpmk>. W naszym scenariuszu należy więc wydać polecenie: airolib-ng pmk_tablica_air --import cowpatty pmk_tablica.

 

 

Gdy proces konwersji tablicy skrótów dobiegnie końca, tak przygotowaną tablicę będziemy mogli użyć z narzędziem aircrack-ng. Ogólna składnia polecenia: aircrack-ng -r <lokalizacja_tablicy_format_aircrack> <przechwycony_plik_z_uwierzytelnieniem>, adaptując to do naszego ćwiczenia: aircrack-ng -r pmk_tablica_air wpa_udane.cap

 

 

Porównując znowu obie metody łamania kluczy – atak słownikowy w którym hasło jest pobierane z słownika wraz z wyliczeniem wszystkich wartości z atakiem na bazie tablicy widać znaczne zwiększenie szybkości. W tym pierwszym średnia prędkość to 3233,75 kluczy na sekundę natomiast w drugim 126262,51 kluczy na sekundę.

Oczywiście potrzebną tablicę możemy również stworzyć z poziomu narzędzia airolib-ng.

Procedura jest następująca:

W pierwszej kolejności tworzymy plik tekstowy w którym umieszczamy nazwy sieci bezprzewodowych dla których będą tworzone tablice i wydajemy polecenie: airolib-ng <nazwa_tworzonej_tablicy> --import essid <lokalizacja_pliku_z_nazwami_SSID> Ważna uwaga - w kolejnych poleceniach do końca odwołujemy się do zdefiniowane nazwy tablicy. W moim przypadku wydałem polecenie: airolib-ng pmk_airolib --import essid ssid.txt

 

 

Po zaimportowaniu nazw sieci bezprzewodowych wskazujemy na plik słownika zawierającego hasła. Polecenie airolib-ng <nazwa_tworzonej_tablicy> --import passwd <lokalizacja_pliku_słownika>

 

 

Po wykonaniu tych czynności możemy sprawdzić czy wszystko przebiegło poprawnie: airolib-ng <nazwa_tworzonej_tablicy> --stats

 

 

Gdy wszystko się zgadza przystępujemy do właściwego procesu tworzenia tablicy. Po wydaniu polecenia airolib-ng <nazwa_tworzonej_tablicy> --batch rozpoczyna się wyliczanie skrótów kluczy dla wcześniej zaimportowanych haseł z pliku słownika. Długość trwania procesu jest zależna od: ilości zdefiniowanych SSID-ów, ilości haseł no i oczywiście od posiadanego sprzętu.

 

 

Po poprawnym utworzeniu pliku tablicy możemy go użyć w procesie łamania hasła, by rozpocząć zdobywanie hasła wydajemy polecenie: aircrack-ng -r <lokalizacja_tablicy> <lokalizacja_pliku_z przechwyconym_uwierzytelnieniem> Polecenie przybrało postać: wpa_udane.cap aircrack-ng -r pmk_airolib wpa_udane.cap

 

 

Oczywiście tak utworzoną tablicę w formacie airolib-ng możemy eksportować do formatu genpmk,by można ją było użyć z narzędziem Cowpatty. Konwersje tablicy wykonasz za pomocą polecenia: airolib-ng <nazwa_tablicy_format_airolib> --export cowpatty <SSID_sieci> <nazwa_tablicy_format_genpmk>

 

 

W dystrybucji Linux Kali a także BackTrack, dostępne jest jeszcze jedno narzędzie, które może posłużyć nam do uzyskania szukanego klucza. Mowa tu o narzędziu Pyrit. Dużą zaletą Pyrita jest współpraca z procesorami wielordzeniowymi a także to że bardzo dobrze wykorzystuje możliwości drzemiące w kartach graficznych (wykorzystanie NVidia Cuda i AMD Stream).

 

 

Opcje:

-e - przełącznik do określenia nazwy sieci bezprzewodowej, w przypadku pominięcia parametru, pobierane są wszystkie nazwy ESSID zdefiniowane w bazie danych,

-b – podobnie jak w przypadku przełącznika -e, z tą różnicą że operujemy na parametrze BSSID,

-i - opcja wskazuje na plik do odczytu (stdin),

-o - opcja wskazuje na plik do zapisu (stdout),

Komendy:

analyze - Sprawdza plik z przechwyconym uwierzytelnieniem.

attack - Dostępne różne typy ataku (opcje omówione poniżej).

batch – Wylicza klucze PMK dla wszystkich haseł, które zostały zaimportowane do bazy. W połączeniu z opcją -e przeliczenie można ograniczyć do konkretnej nazwy ESSID. Pominięcie opcji spowoduje wyliczenie kluczy dla wszystkich nazw ESSID znajdujących się w bazie.

benchmark – Wywołanie opcji pozwala określić wydajność dostępnego sprzętu poprzez przeprowadzenie testu obliczeń.

benchmark_long – Podobnie jak powyżej z tą różnicą, że test trwa dłużej.

check_db – Komenda sprawdza bazę pod kątem wystąpienia błędów.

create_essid - Dodanie nazwy sieci (ESSID) do bazy (wywołanie poprzez opcję -e).

delete_essid - Usunięcie nazwy ESSID z bazy ESSID (wywołanie poprzez opcję -e).

eval - Zliczenie dostępnych haseł.

export – Opcje związane z eksportem tablicy do innych formatów (Cowpatty, Aircrack-ng).

import – Opcje związane z importem danych.

list_cores – Wyświetlenie listy urządzeń biorących udział w obliczeniach.

list_essids – Lista dostępnych nazw sieci.

Rozpoczęcie pracy z programem rozpoczynamy od sprawdzenia jednostek, które może wykorzystać narzędzie Pyrit celem wykonania niezbędnych obliczeń. Polecenie: pyrit list_cores.

Kolejny test to wykonanie benchmarku. Polecenie: pyrit benchmark.

 

 

Zanim zaczniemy łamać hasło sprawdźmy czy przechwycony plik zawiera wszystkie potrzebne dane. Polecenie: pyrit -r <lokalizacja_pliku> analyze. Jak widać poniżej wszystko jest OK.

 

 

Kolejną czynność jaką musimy wykonać to dodanie nazwy sieci do bazy programu Pyrit. Polecenie: pyrit -e <nazwa_ESSID> create_essid.

 

 

Po zdefiniowaniu nazwy sieci importujemy hasła z słownika. Polecenie: pyrit -i <lokalizacja_pliku_słownika> import_passwords W pliku słownika każde hasło znajduje się w osobnym wierszu, jak widać poniżej plik darc0de.lst zawierał 88395 linijek tekstu. Aby upewnić się czy wszystkie wiersze zostały zaimportowane możesz wydać polecenie wc -l <lokalizacja_pliku_słownika> Obie wartości są równe, mamy więc pewność, że udało się zaimportować cały plik słownika.

 

 

Sprawdzenie bazy i poprawności wszystkich wykonanych czynności możemy dokonać za pomocą polecenia: pyrit check_db

 

 

Rozpoczęcie tworzenia tablicy następuje po wydaniu polecenia: pyrit_batch

 

 

Po utworzeniu tablicy możemy przystąpić do ataku. Aby wykorzystać w ataku stworzoną przez chwilę tablicę wydajemy polecenie: pyrit -r <lokalizacja_pliku_uwierzytelnienia> attack_db

 

 

Oczywiście nie trzeba tworzyć tablicy lecz można bezpośrednio wykorzystać sam słownik. Aby przeprowadzić atak z pominięciem tworzenia tablicy wydaj polecenie: pyrit -r <lokalizacja_pliku_uwierzytelnienia> -i <lokalizacja_pliku_słownika> attack passthrough

 

 

Tablica, która została utworzona dzięki narzędziu Pyrit może zostać wykorzystana w połączeniu z innymi narzędziami. Aby np. eksportować tablicę, która będzie następnie użyta z narzędziem Cowpatty, wydaj polecenie: pyrit -e <"SSID_sieci"> -o <lokalizacja_tworzonej_tablicy> export_cowpatty

 

 

Aby usunąć dany SSID z bazy programu Pyrit wydaj polecenie: pyrit -e <"SSID_sieci"> delete_essid

 

 

Udało nam się za pomocą narzędzi aircrack-ng, Cowpatty oraz Pyrit złamać hasło sieci bezprzewodowej chronione przez WPA. Więc sprawdźmy czy narzędzia poradzą sobie z WPA2.

Scenariusz jest podobny do tego z WPA, nie zmieniła się nazwa sieci SSID (wykorzystamy utworzone tablice) zmianie uległ sposób zabezpieczenia sieci bezprzewodowej (z WPA na WPA2) oraz oczywiście hasło.

Jak już wiesz by proces zdobywania hasła powiódł się trzeba przechwycić pakiety z procesem cztero-etapowej negocjacji. Do tej pory używaliśmy narzędzia airodump-ng aby zapisać przechwycony ruch, tym razem skorzystamy z innej opcji a mianowicie wykorzystamy narzędzie wifite.

Wifite jest programem o wiele wygodniejszym ponieważ maksymalnie została uproszczona procedura zdobywania danych niezbędnych do przełamania zabezpieczeń. Dla użytkownika końcowego oznacza to w minimalnym stopniu wykorzystanie poleceń powłoki.

Po wywołaniu polecenia: wifite -help naszym oczom ukarze się lista dostępnych opcji.

 

 

Jak widać opcji jest sporo i to co można zauważyć w pierwszej kolejności to to, że program potrafi łamać zabezpieczenia (a raczej pomaga w tym procesie) WEP, WPA a także potrafi przeprowadzić atak na WPS.

Po uruchomieniu programu następuje automatyczne utworzenie interfejsu monitorującego i rozpoczyna się etap wykrywania dostępnych sieci bezprzewodowych. Wykryte sieci pojawią się na liście. Gdy proces skanowania chcemy zakończyć wciskamy Ctrl+C.

 

 

Skanowanie uwidoczniło dwie sieci bezprzewodowe, obie zabezpieczone protokołem WPA2. By rozpocząć proces zdobywania pliku uwierzytelnienia z dostępnej listy wybieramy interesującą nas sieć (wpisanie all przeprowadzi atak na wszystkie wykryte sieci) i zatwierdzamy enterem.

 

 

Rozpoczyna zdobywanie się danych wpa handshake. Program czeka na podłączającego się klienta a jednocześnie prowadzi proces wysyłania pakietów wymuszających rozłączenie się aktywnych klientów celem ponownego przyłączenia. Gdy proces ten powiedzie się program wyświetli stosowny komunikat a przechwycone dane zostaną zapisane do pliku, którego lokalizacja zostanie również podana (w naszym przypadku lokalizacja i nazwa utworzonego pliku to: hs/TempWiFi_28-BE-9B-04-B1-98.cap)

Po zdefiniowaniu pliku słownika (co w tym przypadku nie zostało wykonane, lokalizację pliku słownika dokonujemy za pomocą opcji -dict <lokalizacja_pliku>) program może przystąpić automatycznie do procesu zdobywania hasła.

 

 

Gdy już mamy potrzebne dane przystąpmy do zdobywania hasła. Wykorzystamy narzędzie aircrack-ng. Po wydaniu polecenia: aircrack-ng -r <lokalizacja_tablicy> <przechwycony_plik_z_uwierzytelnieniem>, narzędzie przystępuje do pracy a efektem jest złamanie hasła.

 

 

W przypadku nie posiadania tablicy polecenie narzędzia aircrack-ng przyjmie postać jak na poniższym rysunku.

 

 

Jeśli zdecydujemy się na narzędzie Cowpatty wydajemy polecenie: cowpatty -d <lokalizacja_tablicy_skrótów> -s <"SSID_sieci"> -r <przechwycony_plik_z_uwierzytelnieniem>

 

 

Jeśli zaś nasz wybór pada na narzędzie Pyrit możemy skorzystać np. z polecenia pyrit -r <lokalizacja_pliku_uwierzytelnienia> -i <lokalizacja_pliku_słownika> attack passthrough (oczywiście możemy też użyć polecenie w którym korzystamy z tablicy: pyrit -r <lokalizacja_pliku_uwierzytelnienia> attack_db)

 

 

Jak widać w każdym przypadku, niezależnie od programu czy metody, udało się złamać hasło (słowo: spartacus).

Na koniec jeszcze mała uwaga, parę razy zdarzyło mi się że plik zawierający uwierzytelnienie uzyskany dzięki narzędziu wifite odmówił współpracy z aplikacją Pyrit ale jest na to prosty sposób, a mianowicie wystarczy otworzyć Wiresharka wczytać plik i następnie zmienić jego format np. na *pcapng a następnie z powrotem powrócić do formatu wyjściowego.

Dodatkowym atutem narzędzia wifite jest możliwość prowadzenia ataku na urządzenia, które chronione są mechanizmem WPS (przy uwierzytelnieniu podajemy numer PIN). Aby rozpocząć atak możemy program wifite uruchomić z opcją -wps, program odszuka nam sieci chronione za pomocą tego sposobu i umożliwi nam atak na sieć (atak trwa długo ze względu na to że PIN jest z reguły 8 cyfrowy).

 

 

Program przeprowadza atak wysyłając kolejne numery PIN do skutku znalezienia dopasowania. Poniżej na rysunku przebieg wymiany pakietów pomiędzy atakującym a celem.

 

 

Na wstępie wspomniałem, że atakując sieć bezprzewodową, której celem jest zdobycie hasła chroniącego sieć możemy prowadzić dwa typu ataku, a mianowicie atak słownikowy i atak brute-force. Do tej pory wykorzystywaliśmy tylko atak słownikowy a więc przyszła pora by zaprezentować użycie metody brute-force.

Aby skorzystać z tej metody musimy posłużyć się nowym narzędziem a mianowicie programem crunch. Narzędzie crunch jest tak naprawdę generatorem słowników, który umożliwia nam utworzenie dowolnego słownika z określonego zestawu znaków. To co naprawdę jest siłą programu to możliwość tworzenia w locie niestandardowych słowników dopasowanych do naszych aktualnych potrzeb. Ale wszystko po kolei.

Program jest domyślnie zainstalowany w dystrybucji Linux Kali oraz BackTrack. Pierwszą rzeczą jaką powinniśmy się zainteresować jest to lokalizacja pliku charset.lst, w którym to pliku zdefiniowane są zbiory znaków, które będziemy używać aby wygenerować dany słownik. W systemie Linux Kali plik ten znajduje się w lokalizacji: /usr/share/crunch/charset.lst Jak by z jakiegoś powodu brakowało pliku możemy go pobrać stąd: https://github.com/jaalto/external-sf--crunch-wordlist/blob/master/charset.lstJak widać na poniższym rysunku w pliku znajdują się nazwane zbiory znaków (np. numeric, lalpha czy symbols14), które to nazwy będą używane w definiowaniu poleceń. Określony zbiór definiuje nam rodzaj użytych znaków i tak np. zbiór numeric ma zadeklarowane cyfry od 0 do 9. Program crunch oczywiście umożliwia nam w linii poleceń zdefiniowanie własnych znaków ale o wiele prościej ze względu na stopień skomplikowania poleceń jest używanie zbiorów znaków zawartych w pliku charset.lst (wywołanie tworzenia słownika jest znacznie prostsze). Dodatkowo plik ten możemy edytować tworząc swoje własne zbiory znaków. Również poniżej na rysunku można zauważyć zdefiniowany przeze mnie zbiór o nazwie polski, w skład którego to zbioru wchodzą wszystkie litery występujące w alfabecie polskim wraz z małymi i dużymi literami. Od tej pory zamiast podawać wszystkie interesujące mnie litery w składni polecenia będę odwoływał się do zbioru polski.

 

 

Działanie programu omówię na paru przykładach, na podstawie przedstawionych poleceń i ich modyfikacji można samemu zacząć tworzyć słowniki dostosowane do swoich indywidualnych potrzeb. Ogólna składnia polecenia to: crunch <min_dł_hasła> <max_dł_hasła> -f <lokalizacja_charset.lst> <użyty zbiór>

Ta więc by np. wygenerować słownik zawierający trzy literowe hasła zawierające polskie litery, zarówno małe i duże i dodatkowo zapisać wszystkie utworzone hasła do pliku należy wydać polecenie: crunch 3 3 -f /usr/share/crunch/charset.lst polski -o słownik.txt

 

 

Narzędzie crunch oferuje nam możliwość zdefiniowania części tworzonego hasła, polega to na zdefiniowaniu członu stałego hasła i określeniu miejsc w haśle, które mają być zmieniane. Tak więc np. znamy imię użytkownika i przypuszczamy, że hasło może te imię zawierać. Tak więc aby utworzyć słownik zawierający dane imię plus liczby, które np. będą odzwierciedlać datę urodzenia należy wydać polecenie: crunch 9 9 -f /usr/share/crunch/charset.lst numeric -o słownik.txt –marta@@@@

Tak więc udało nam się zapisać plik słownika w którym członem stałym jest imię marta do którego zostały dołączone cyfry (w poleceniu znaki @ definiują miejsca w których mają zostać umieszczone znaki z zdefiniowanego zbioru – w tym przypadku został określony zbiór numeric zawierający cyfry).

Przy budowaniu polecenia zwróć uwagę na długość tworzonego hasła – człon stały plus liczba znaków ulegający zmianie.

 

 

Aby np. wygenerować numery PIN, cztero i pięcio cyfrowe, które będą zbudowane z cyfr 1,2,3,4,5 i dodatkowo zapisane do pliku możemy wydać polecenie: crunch 4 5 12345 -o numbers.txt

 

 

Inną ciekawą opcją jest tworzenie układów wyrazów, wydając polecenie: crunch 1 1 -o słownik.txt -p admin test lab zapiszemy na dysku plik zawierający kombinacje trzech zdefiniowanych w linii poleceń wyrazów.

 

 

Przy korzystaniu z narzędzia crunch, przy wydaniu polecenia trzeba przemyśleć strategię tworzenia słownika ponieważ wygenerowane słowniki potrafią zająć naprawdę sporo miejsca. Poniżej przykład utworzenia słownika w którym członem stałym jest słowo admin przy czym do tego członu są dodawane dwa znaki (wszystkie kombinacje) przed słowem admin i dodatkowo cztery znaki po członie stałym (wszystkie kombinacje). Zmieniających się znaków jest 26, które muszą zostać ulokowane na 6 miejscach. Tak więc po utworzeniu słownika okaże się że zajmuje on aż 3,7 GB miejsca.

 

 

Dlatego też by ograniczyć ilość miejsca zajmowanego prze słowniki można poddać je kompresji. Aby włączyć kompresje do polecenia dodajemy parametr: -z gzip Jak widać poniżej ten sam słownik po skompresowaniu nie zajmuje już 3,7GB lecz 756 MB.

 

 

Inne opcje wraz z przykładami można znaleźć w dołączonym pliku pomocy, polecenie: man crunch

Tak więc narzędzie crunch możemy wykorzystać do ataku brute-force na dwa sposoby:

      • generując odpowiedni słownik, który następnie zostanie użyty z takimi narzędziami jak: aircrack-ng, pyrit czy cowpatty,
      • a także przekazując wyniki wygenerowanych haseł poprzez pipe czy stdout bezpośrednio do narzędzi zewnętrznych np. crunch 8 8 abcdefghijklmnopqrstuvwxyz | aircrack-ng wpa_udane.cap -e TempWiFi -w- (import haseł do programu aircrack-ng, następuje kolejne sprawdzanie utworzonych przez crunch haseł – rysunek poniżej) czy crunch 6 6 1234567 --stdout | airolib-ng bazadb -import passwd – (import haseł utworzonych przez narzędzie crunch do bazy programu airolib-ng)

 

 

Przykład ataku z wykorzystaniem narzędzia Wifite a także aircrack-ng, Cowpatty, Pyrit oraz crunch

 

 

Ostatnim narzędziem jakie chciałbym zaprezentować jest program Hashhcat. Program ma szerokie możliwości nie tylko ograniczone do łamania zabezpieczeń sieci WPA/WPA2. Jest jedynym programem, który możemy użyć z poziomu systemu Windows. Zresztą program już by przeze mnie opisywany odnośnie wpisu: http://slow7.pl/windows-7/106-zagubione-haslo-moje-boje-z-haslami tu zajmiemy się wykorzystaniem narzędzia w kontekście WPA/WPA2.

Mając przechwycony plik z negocjacją klienta z AP, musimy ten plik odpowiednio przygotować tak aby można było go użyć w połączeniu z narzędziem Hashcat.

Rozpoczynamy od narzędzia wpaclean, które to z przechwyconego pliku usunie wszystkie niepotrzebne informacje pozostawiając tylko pakiety dotyczące procesu 4-etapowej negocjacji.

Użycie narzędzia jest bardzo proste a mianowicie ogólna składnia polecenia wygląda następująco: wpaclean <plik_wyjściowy> <plik_wejściowy> W moim przypadku wydałem polecenie: wpaclean wpa_out wpa_udane.cap

 

 

Narzędzie wpaclean usunęło wszystkie zbędne pakiety pozostawiając tylko te niezbędne, zresztą można je podejrzeć w Wiresharku.

 

 

Kolejnym krokiem jest konwersja pliku z formatu *.cap na format *.hccap. Konwersji dokonamy za pomocą narzędzia aircrack-ng. Konwersję dokonamy wydając polecenie: aircrack-ng <plik_cap> -J <plik_hccap> tak więc wydałem polecenie: aircrack-ng wpa_out -J wpa.hccap Wynikem wydania polecenia jest utworzenie pliku wpa.hccap

 

 

Po przygotowaniu pliku wejściowego możemy użyć narzędzie Hashcat do wyodrębnienia hasła. I jeszcze mała uwaga narzędzie te posiada wparcie dla technologii CUDA tak więc jeżeli jesteś posiadaczem karty spod znaku NVidia cały proces możesz znacznie skrócić.

Atak który przeprowadzimy będzie atakiem słownikowym. Aby go przeprowadzić wydajemy polecenie: hashcat -m 2500 /root/wpa.hccap /usr/share/wordlists/darc0de.lst którego ogólna składnia: hashcat -m 2500 <plik_w_formacie_hccap> <lokalizacja_pliku_słownika> (parametr –m 2500 włącza łamanie hasła WPA/WPA2). Po wykonaniu polecenia hasło zostaje złamane (pod warunkiem istnienia go w pliku słownika).

 

 

Wyżej wspomniałem, że narzędzie Hashcat ma szerokie możliwości i tak jest, bo program oprócz ataku słownikowego umożliwia nam użycie również użycie metody brute-force do pozyskania hasła. Użycie tej metody sprowadza się do określenia długości poszukiwanego hasła i zakresu wykorzystywanych znaków.

Użycie ataku brute-force sprowadza się do wykorzystania zmiennych:

      • ?l = abcdefghijklmnopqrstuvwxyz
      • ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
      • ?d = 0123456789
      • ?s = !”#$%&'()*+,-./:;⇔?@[\]^_`{|}~
      • ?a = ?l?u?d?s

 

Tak więc chcąc znaleźć ośmioliterowe hasło złożone z małych liter jako maskę musimy wpisać: ?l?l?l?l?l?l?l?l

Ja trochę poszedłem na skróty tylko po to by pokazać, że użycie tej metody przez program jest dozwolone, dlatego w wydanym poleceniu zdefiniowałem cztery pierwsze litery a kolejne cztery ustawiłem do odszukania. By uruchomić program z trybem ataku brute-force należy wydać polecenie: hashcat -m 2500 -a 3 wpa.hccap defe?l?l?l?l (parametr -a 3 nakazuje przeprowadzenie ataku siłowego)

 

 

Kluczem do odnalezienia hasła jest poprawne zdefiniowanie maski, tak więc by trochę sprawę uprościć stworzono gotowe szablony. Szablony plików w których są dostępne maski znajduje się w katalogu /usr/share/oclhashcat/masks/

Aby skorzystać z szablonu można wydać np. takie polecenie: hashcat -m 2500 -a 3 wpa.hccap /usr/share/oclhashcat/masks/rockyou-1-60.hcmask

 Przykład ataku z wykorzystaniem narzędzia Hashcat

 

 

Podsumowując ataki na WPA/WPA2, dochodzimy do wniosku, że również zastosowanie tego sposobu zabezpieczenia sieci nie gwarantuje nam 100% pewności, że ktoś nie spenetruje naszej sieci bezprzewodowej. Tak naprawdę wszystko zależy od użytego hasła choć zastosowanie coraz szybszych komputerów wraz z szybkimi kartami graficznymi powoduje, że proces zdobywania hasła ulega skróceniu.

Przy zdobywaniu hasła sieci chronionej WPA/WPA2 można rozważyć jeszcze jedno rozwiązanie a mianowicie – Po co mamy się męczyć? Niech ktoś za nas wykona wszystkie niezbędne obliczenia. W Internecie dostępnych jest kilka serwisów, które hasło złamią za nas. Niestety nie ma nic za darmo, za usługę tą najczęściej trzeba zapłacić.

Przykładowy serwis to np. https://www.cloudcracker.com/

 


 

Oprócz ataków na klucz sieci istnieje szereg ataków typu DoS czyli odmowa usługi. Ich główny celem jest sparaliżowanie punktu dostępowego tak aby nie mógł pełnić swojej roli. Gdy następuje atak cała komunikacja pomiędzy klientami a AP jest zaburzona, najczęściej sprowadza się to do utraty łączności z AP (brak możliwości prowadzenia komunikacji), całkowitym rozłączeniem klientów czy zawieszeniem samego AP.

Jeden atak już poznałeś, mowa tu o ataku anulowanie uwierzytelnienia (ang. Deauthentication).

Atak ten polega na wysłaniu w imieniu punktu dostępowego pakietów deauthentication nakazujących podłączonym klientom rozłączenie się z AP.

To co już powinieneś wiedzieć to to, że atak ten można prowadzić dwojako tj. wysyłając polecenie anulowania uwierzytelnienia do wszystkich klientów (broadcast).

 

 

Ale również atakując konkretnego klienta (w poleceniu parametr -c <adres_MAC>).

 

 

Jak widać poniżej podczas trwania ataku klient traci możliwość komunikowania się z AP (polecenie ping z klienta do AP).

 

 

Po zaprzestaniu ataku klient odzyskuje możliwość komunikowania się z AP.

 

 

Kolejnym narzędziem, które może posłużyć do przeprowadzania ataków na naszego AP jest program mdk3. Aplikacja oferuje parę możliwości, których brak w przedstawionych już narzędziach.

Przy korzystaniu z mdk3 należy zachować szczególną ostrożność ponieważ jak podają twórcy narzędzia używanie go może doprowadzić do uszkodzenia sprzętu tj. karty sieciowej dzięki której jest prowadzony atak ale również celu (np. AP).

Za pomocą programu możemy przeprowadzić szereg ataków a pierwszym z nich jest atak typu Beacon Flood Mode. Wywołanie tego ataku powoduje wysłaniem w eter szeregu zmodyfikowanych ramek typu beacon. Każda z ramek rozgłasza fikcyjną, fałszywą sieć bezprzewodową.

Na parametry tego ataku możemy wpływać poprzez zastosowanie odpowiednich opcji:

b – identyfikator ataku Beacon Flood Mode,

-n <ssid> – określa identyfikator rozgłaszanej sieci bezprzewodowej, pominięcie parametru spowoduje wygenerowanie losowych wartości SSID,

-f <plik> – lokalizacja pliku z zapisanymi identyfikatorami SSID, rozgłaszanymi przez narzędzie,

-d – rozgłaszana sieć jest typu ad-hoc,

-w – rozgłaszana sieć jest typu WEP,

-t – rozgłaszana sieć jest typu WPA TKIP,

-a – rozgłaszana sieć jest typu WPA AES,

-h – użycie przełącznika spowoduje że sieci są rozgłaszane na różnych kanałach,

-c <kanał> – określa kanał pracy sieci wifi,

-s <pps> – określa ilość wysyłanych ramek w ciągu sekundy.

Poniżej przykład użycia narzędzia mdk3 z włączonym atakiem Beacon Flood Mode, rozgłaszane są sieci typu WEP, pracujące na kanale 11, losowa nazwa SSID.

 

 

Po włączeniu programu wykrywającego dostępne sieci bezprzewodowe (Vistumbler), program wykryje wiele fałszywych punktów dostępowych.

 

 

Również windowsowe narzędzie wykrywania sieci bezprzewodowych ukazuje ich wiele. Odszukanie właściwej sieci staje się małym problemem.

 

 

Poniżej zrzut przechwyconych pakietów beacon podczas prowadzenia ataku Beacon Flood Mode, na zrzucie widać wiele ramek beacon, które pole SSID mają ustawioną na losową wartość.

 

 

By rozgłosić wiele sieci o tym samym identyfikatorze SSID w składni polecenia należy użyć przełącznika: -n <nazwa_SSID>

 

 

W tym przypadku odszukanie właściwej sieci staje się jeszcze trudniejsze a Windows przy próbie podłączenia do sieci po prostu „głupieje”.

 

 

Poniżej zrzut przechwyconych pakietów przy ataku Beacon Flood Mode z ustaloną nazwą sieci SSID, jak widać każda z sieci (a tak naprawdę jedna i ta sama) jest rozgłaszana na różnych kanałach.

 

 

Kolejnym atakiem, który możemy wykonać przy pomocy narzędzia mdk3 jest atak Authentication DoS Mode. Atak ten polega na przyłączeniu do punktu dostępowego wielu klientów. Parametry na którem mamy wpływ znajdują się poniżej:

a – identyfikator ataku atak Authentication DoS Mode,

-a <adres_MAC_celu> – adres MAC celu, pominięcie parametru spowoduje wybranie wszystkich AP będących w zasięgu działania karty sieciowej,

-c – wyłączenie sprawdzania powodzenia ataku,

-i <adres_MAC_celu> – skorzystanie z przełącznika -i spowoduje ignorowanie opcji -a oraz –c, skorzystanie z tej opcji spowoduje, że fałszywi klienci będą się starać podtrzymać połączenie z punktem dostępu,

-s <pps> – określa ilość wysyłanych ramek w ciągu sekundy.

Poniżej przykład ataku Authentication DoS Mode na określony punkt bezprzewodowy w którym to ataku czas wysyłania pakietów został ustawiony na 1 sekundę.

 

 

By móc obserwować skutki ataku dodatkowo zostało uruchomione narzędzie airodump-ng. Skutkiem ataku było całkowite zawieszenie się AP.

 

 

Mdk3 oferuje nam jeszcze jeden typ ataku a mianowicie atak Deauthentication Mode. Atak wysyła sfałszowane ramki Deauthentication, które powodują rozłączenie się klientów z daną siecią. Wywołanie ataku bez żadnych parametrów spowoduje atak na wszystkie sieci znajdujące się w zasięgu. Dostępne parametry ataku to:

d – wywołanie ataku Deauthentication Mode,

-w <plik_lokalizacja> – white list, lista adresów MAC punktów dostępowych, które nie będą atakowane,

-b <plik_lokalizacja> – black list, przeciwieństwo white list, adresy MAC atakowane przez mdk3,

-s <pps> – liczba pakietów wysyłanych w czasie jednej sekundy,

-c <kanał> – określenie kanału pracy, pominięcie opcji spowoduje przeprowadzenie ataku na wszystkich kanałach.

Poniżej przykład wywołania ataku. W czasie trwania ataku i krótko po przerwaniu klienci będący w strefie zasięgu stracili możliwość komunikowania się z swoim punktem dostępu.

 

 

I poniżej zrzut przechwyconych pakietów podczas trwania ataku. Widać dużą ilość wysłanych ramek typu Deauthentication.

 

 

By za pomocą narzędzia mdk3 maksymalnie zintensyfikować w jednym czasie przeprowadzany atak możemy jednocześnie prowadzić wszystkie typy ataków.

Jednym z dokuczliwszych ataków, które możemy przeprowadzić jest atak polegający na uruchomieniu punktu dostępowego, który będzie rozgłaszał nazwę sieci z identyczną nazwą sieci atakowanej. Czyli dążymy do sytuacji w której na jednym obszarze będą działały sieci bezprzewodowe o identycznym identyfikatorze SSID. Atak tego typu nosi nazwę - złośliwy bliźniak (ang. evil twin).

Atak ten w połączeniu z fałszywym adresem MAC (adresem używanym poprzez autoryzowane urządzenia), raz że trudny do wykrycia i to co dla nas najważniejsze podłączający się klient „święcie wierzy” że połączył się z właściwą siecią bezprzewodową. To co może stanowić utrudnienie i wzbudzić podejrzenia to to że nasz złośliwy bliźniak będzie rozgłaszał sieć niezabezpieczoną (otwartą). Wymóg ten jest konieczny by dany klient mógł się bez problemu połączyć z naszą siecią. To co pomaga to również gdy nasza emitowana fałszywa sieć jest rozgłaszana z większą mocą niż ta atakowana.

Przy okazji omawiania utworzenia otwartego punktu dostępowego omówię również sposoby na utworzenie punktów, które będą rozgłaszać sieci zabezpieczone (WEP,WPA,WPA2).

Tak więc tradycyjnie rozpoczynamy od przestawienia karty w tryb monitora. Utworzyłem cztery interfejsy, które będą odpowiedzialne za rozgłaszanie 4 sieci bezprzewodowych różniących się typem użytego zabezpieczenia. Tak więc by utworzyć odpowiednie interfejsy monitorujące czterokrotnie wydałem polecenie: airmon-ng start wlan0

 

 

Kontrolę utworzonych interfejsów możemy przeprowadzić za pomocą polecenia: iwconfig Jak widać na poniższym zrzucie dostępne są cztery interfejsy: mon0, mon1, mon2 oraz mon3.

 

 

Punkt dostępowy, który będzie rozgłaszał sieć z uwierzytelnieniem otwartym utworzymy po wydaniu polecenia: airbase-ng --essid <nazwa_sieci> -a <adres_MAC> -c <kanał> <interfejs> W naszym przykładzie polecenie przyjmie postać: airbase-ng --essid "TempWifi_open" -a 22:22:22:22:22:22 -c 1 mon0 Po wydaniu polecenia zostaje utworzona sieć bezprzewodowa o nazwie TempWifi_open, pracująca na kanale 1 z adresem MAC 22:22:22:22:22:22 obsługiwana przez interfejs mon0.

 

 

By utworzyć sieć bezprzewodową chronioną za pomocą mechanizmu web do znanego nam już polecenia: airbase-ng --essid <nazwa_sieci> -a <adres_MAC> -c <kanał> <interfejs> dodajemy parametr -W 1, tak więc przykładowe polecenie może przyjąć postać: airbase-ng --essid "TempWifi_wep" -a 44:44:44:44:44:44 -W 1 -c 1 mon1 Po wydaniu polecenia zostaje utworzona sieć bezprzewodowa o nazwie TempWifi_wep, pracująca na kanale 1 z adresem MAC 44:44:44:44:44:44 obsługiwana przez interfejs mon1 i dodatkowo chroniona uwierzytelnieniem WEP.

 

 

By utworzyć sieć bezprzewodową opartą o szyfrowanie WPA możemy wydać polecenie: airbase-ng --essid "TempWifi_wpa" -a 66:66:66:66:66:66 -W 1 -z 2 -c 1 mon2 (do składni polecenia dołożono parametr -z 2)

 

 

I na koniec sieć oparta o WPA2: airbase-ng --essid "TempWifi_wpa2" -a 88:88:88:88:88:88 -W 1 -Z 2 -c 1 mon3

 

 

W ten prosty sposób możemy utworzyć szereg sieci bliźniaczych, które rozgłaszane mogą zaburzać pracę atakowanej sieci WiFi.

Nieautoryzowany punk dostępowy

Celem utworzenia nieautoryzowanego punktu dostępowego (ang. rogue access point) jest najczęściej pozostawienia sobie tylnej furtki, dzięki której mamy postęp do autoryzowanej sieci. Furtka taka pozwala nam na ominięcie zabezpieczeń atakowanej sieci. Dzieje się tak ponieważ punkt dostępowy znajduje się wewnątrz sieci a podłączający się klient nie podlega kontroli firewalla czy systemu IDS, które to mechanizmy chronią nas przed atakami z zewnątrz. Czyli jednym słowem od razu uzyskujemy dostęp do zasobów sieci. Lecz by móc korzystać z tego rozwiązania nieautoryzowany punk dostępowy musimy najpierw zainstalować. Możemy to wykonać na jeden z dwóch sposobów. A mianowicie poprzez zamontowanie fizycznego urządzenia, które jest podpięte do kablowej strony atakowanej sieci bądź też poprzez utworzenie programowego punktu dostępowego wykorzystując do tego bezprzewodową kartę sieciową i komputer.

Pierwsze rozwiązanie jest jasne i nie wymaga tłumaczenia, dlatego skupię się na opisie utworzenia programowego punktu dostępowego.

Naszym celem poprzez połączenie się z punktem dostępowym będzie uzyskanie połączenia z Internetem co wiąże się z uzyskanie przez klienta sieci bezprzewodowej poprawnych informacji z serwera DHCP działającego po stronie kablowej.

Rozpoczynamy od identyfikacji interfejsów, jak widać poniżej mamy dostępny jeden interfejs bezprzewodowy wlan0 i to właśnie on będzie stanowił punkt dzięki któremu uzyskamy dostęp do atakowanej sieci.

Laptop jest podłączony do atakowanej sieci będącej obiektem naszych zainteresowań poprzez interfejs Ethernet. By nasz punkt dostępowy zadziałał będziemy musieli utworzyć most pomiędzy interfejsem przewodowym i bezprzewodowym tak aby klient, który będzie podłączał się do rozgłaszanej sieci mógł komunikować się z pozostałymi komputerami.

 

 

Po przestawieniu karty w tryb monitora za pomocą polecenia airbase-ng uruchamiamy nieautoryzowany punkt dostępowy. Punkt będzie rozgłaszał sieć o nazwie TempWifi_open pracującą na 1 kanale.

 

 

Po utworzeniu punktu przechodzimy do utworzenia mostu sieciowego. Most sieciowy tworzymy za pomocą polecenia: brctl addbr <nazwa mostu>. W naszym scenariuszu został utworzony most o nazwie TempWiFi_most.

 

 

Utworzenie mostu możemy skontrolować za pomocą polecenia iwconfig.

 

 

Kolejnym krokiem jest dodanie odpowiednich interfejsów do nowo utworzonego mostu. Dodajemy interfejs eth0 (podłączony kablowo do atakowanej sieci) oraz interfejs ath0 (utworzony po wydaniu polecenia airbase-ng a obsługujący rozgłaszaną sieć TempWifi_open ).

Dodanie interfejsu do mostu realizujemy za pomocą polecenia: brctl addif <nazwa_mostu> <nazwa_interfejsu>.

 

 

Po dodaniu interfejsów wyłączamy interfejsy i jednocześnie przpisując im adres 0.0.0.0 Dzieje się tak ponieważ adresy IP przypisane do tych interfejsów mogą zaburzać przekazywanie informacji pomiędzy interfejsami, które wchodzą w skład mostu. Interfejsy te nie mogą być użyte do innych celów niż obsługa mostu sieciowego.

 

 

Interfejsy sieciowe są teraz nie aktywne więc włączmy je ponownie. Pracując na Backtracku i Kali zauważyłem dosyć dziwną przypadłość czasem musiałem czynności wykonać w odwrotnej kolejności tzn. najpierw wyłączyć interfejsy, następnie dodać interfejsy do mostu i ponownie je włączyć by wszystko zaczęło działać. Więc jeśli z jakiś powodów wystąpią problemy spróbuj czytelniku skorzystać z tego rozwiązania.

 

 

Ostatnią czynnością jaka nam pozostaje do wykonania to włączenie przekazywania pakietów pomiędzy interfejsami.

 

 

Tak więc robota wykonana, nie pozostało nam nic innego jak sprawdzenie czy klient uzyska połączenie z siecią a co najważniejsze czy ruch pomiędzy siecią nieautoryzowaną a siecią bezprzewodową jest realizowany. Po przejściu do innego komputera pracującego pod kontrolą Windows 7 i uaktywnieniu karty bezprzewodowej naszym oczom powinna ukazać się rozgłaszana sieć TempWifi_open i jak widać poniżej tak się właśnie stało.

 

 

Następuje próba połączenia, efekty uzyskania połączenia możemy zaobserwować w oknie w którym zostało uruchomione narzędzie airbase-ng.

 

 

Połączenie z naszym nieautoryzowanym punktem dostępowym zostało zrealizowane pomyślnie sprawdźmy czy działa przekazywanie pakietów realizowane przez most TempWiFi_most.

Nasze kroki kierujemy ku panelowi w którym jest wyświetlony stan połączenia bezprzewodowego. Jak można zaobserwować klient, który podłączył się do sieci TempWifi_open dzięki włączeniu przekazywania pakietów pomiędzy interfejsami uzyskał informacje z serwera DHCP działającego po stronie kablowej.

 

 

Jak można zauważyć stworzenie programowego punktu dostępowego nie należy do zadań wymagających jakiś szczególnych umiejętności wystarczy tylko laptop i karta sieciowa.

I na koniec jeszcze jedną rzecz, którą warto dopowiedzieć to że atak tego typu poprzez utworzenie nieautoryzowanego punktu dostępowego jest wykorzystywany do przeprowadzenia ataku typu Man-in-the-Middle ponieważ cały ruch sieciowy przechodzi przez nasz komputer. Każdy klient, który podłączy się do tak utworzonej sieci wszystkie informacje, które prześle my będziemy mogli zarejestrować.

I to by było na tyle. Co warto jeszcze powiedzieć? To to, że wszystkie opisane ataki nie stanowią zamkniętej listy. Jeszcze by się parę narzędzi znalazło, ale to już pozostawiam do dociekań tobie czytelniku.


 

BIBLOGRAFIA:

 

https://www.youtube.com/watch?v=Ra0dGPYScLQ

http://www.wirelesspentest.com/airolib-ng.html

http://aerokid240.blogspot.com/2010/08/wpa-rainbow-tables-with-cowpatty-and.html

http://pentestlab.wordpress.com/2012/07/12/creating-wordlists-with-crunch/

http://www.backtrack-linux.org/forums/showthread.php?t=27628

https://www.youtube.com/watch?v=27WS5E-tMYY

http://www.microhowto.info/howto/bridge_traffic_between_two_or_more_ethernet_interfaces_on_linux.html

Ostatnio zmieniany środa, 23 grudzień 2015 12:39
Etykiety
  • wifi
  • filtrowanie mac
  • WLAN
  • SSID
  • WPA
  • WPA2
  • WEP
  • 80211
  • airodumpng
  • aireplayng
  • airmonng
  • Hirte
  • Caffe Latte
  • airbaseng
  • airedecapng
  • aircrackng
  • genpmk
  • Cowpatty
  • pyrit
  • Wifite
  • bruteforce
  • crunch
  • Hashcat
  • wireshark
  • mdk3

Artykuły powiązane

  • Atak na warstwę 2 modelu ISO/OSI - preludium
  • WiFi a'la Linux
  • Zagubione hasło - moje boje z hasłami.
  • WiFi bez tajemnic.
  • Sniffing w sieciach bezprzewodowych
Więcej w tej kategorii: « Co w sieci siedzi. Routing dynamiczny z wykorzystaniem protokołu OSPF. Sniffing w sieciach bezprzewodowych »

Dodaj komentarz



Odśwież

Wyślij
Skasuj

Komentarze  

# Marek 2017-01-12 09:52
Bardzo dobry artykuł
Cytować
# Kamil 2015-10-30 12:43
Świetny poradnil!
Cytować
Odśwież komentarze
JComments
Powrót na górę

Wujek dobra rada

Szybkie pytania i szybkie odpowiedzi czyli garść porad do wykorzystania w codziennej pracy z komputerem.

  • Jak utworzyć RAMdysk w systemie Windows? Jak utworzyć RAMdysk w systemie Windows?

    RAMdysk jest wydzieloną częścią pamięci, która w systemie operacyjnym jest widziana jak kolejny dysk/partycja. Praca z tak wydzielona przestrzenią pamięci odbywa się jak z normalnym dyskiem. Dostępne są wszystkie operacje związane z plikami.  

    Napisano poniedziałek, 04 grudzień 2017 21:44
  • Bezpieczny pendrive Bezpieczny pendrive

    Jak zabezpieczyć nasze dane w sytuacji utraty pendiva/karty pamięci.

    Napisano czwartek, 29 czerwiec 2017 12:00
  • Wyszukiwanie plików w systemie Windows Wyszukiwanie plików w systemie Windows

    Krótki opis jak wyszukać pliki przy wykorzystaniu Eksploratora plików.

    Napisano sobota, 17 czerwiec 2017 20:31
  • Diagnostyka pamięci RAM Diagnostyka pamięci RAM

    Jak zdiagnozować uszkodzenie modułu pamięci RAM

    Napisano wtorek, 16 maj 2017 12:39
  • Konwersja maszyny fizycznej na wirtualną (odsłona druga). Konwersja maszyny fizycznej na wirtualną (odsłona druga).

    W poprzednim wpisie (Konwersja maszyny fizycznej na wirtualną) opisałem konwersję maszyny fizycznej do wirtualnej, efektem Naszych działań było przeniesienie systemu działającego na fizycznym hoście do środowiska opartego o oprogramowanie Vmware. Zaś w tym wpisie wykonamy podobne działanie lecz efektem będzie uzyskanie maszyny działającej w VirtualBox.

    Napisano czwartek, 04 maj 2017 11:53
Czytaj więcej...

Najczęściej komentowane

  • Jak wyznaczyć broadcast, adres sieci i liczbę hostów? (+19)
  • Instalacja Windows XP/Vista/7 z pendriv'a. (+12)
  • Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO (+12)
  • Co w sieci siedzi. Protokół DNS. (+10)
  • Windows i Linux w jednej stali sieci. (+8)

Najnowsze komentarze

  • Dzak 07.09.2020 17:32
    Witam. Nie rozumiem dlaczego zamiast podziału na podsieci nie możemy po prostu ustanowić 7 lokalnych ...
     
  • fgm 03.09.2020 06:47
    jak nie pamietam daty rozszezenia i dokladnej nazwy tylko podobna to jak wyszukac taki plik lub wiele ...
     
  • Andrzej 13.08.2020 07:26
    Usunięcie x z /etc/passwd uważam za niebezpieczne rozwiązanie. Ponieważ po takiej operacji i ustawieniu ...
     
  • Andrzej 13.08.2020 07:15
    To zdanie Utworzenie użytkownika w ten sposób powoduje wyłączenie konta poprzez wstawienie znaku x w ...
     
  • goodbye world 01.07.2020 10:20
    Będą jakieś nowe wpisy?

Ostatnio komentowane

  • Słów kilka o adresacji sieci. (3)
  • Wyszukiwanie plików w systemie Windows (1)
  • Dogadać się z Linuksem. Zarządzanie kontem użytkownika. (3)
  • Yubico czyli jak chronić dostęp do naszych kont (6)
  • Atak na warstwę 2 modelu ISO/OSI - preludium (4)

Popularne tagi

80211 Active Directory arkusz kalkulacyjny CISCO cmd DHCP domena EXCEL filtrowanie formuła FTP funkcja GPO grupy jednostka organizacyjna JEŻELI kontroler LibreOffice Linux MSOffice panel sterowania PowerShell przełącznik rejestr Router Serwer SUMA switch TCP trunk Ubuntu UDP usługi VirtualBox VLAN warstwa 2 warstwa 3 warstwa sieciowa warstwa łącza danych wifi Windows wirtualizacja WORD zakres ŚREDNIA

UWAGA! Ten serwis używa cookies

Brak zmiany ustawienia przeglądarki oznacza zgodę na to.

Zrozumiałem

Created by: clivio.pl

Copyright © Created by: 2022 All rights reserved. Custom Design by Youjoomla.com
Home