WEP lekcja #6 – Cookie Cadger, Wireshark i przechwytywanie ciasteczek sesyjnych

W dzisiejszej lekcji powiemy o przepotężnym narzędziu Cookie Cadger, umożliwiającym w sposób zautomatyzowany przechwytywanie ciasteczek sesyjnych (phpsessid). Dodatkowo pokazujemy również narzędzie Ettercap upraszczające atak man in the middle (MITM) typu ARP poisoning i świetne multiplatformowe narzędzie do analizy ruchu sieciowego o nazwie Wireshark. Wszystkie z tych narzędzi są tak naprawdę darmowymi snifferami, posiadającymi kilka dodatkowych funkcjonalności uzupełniających się nawzajem.

Z poprzedniej lekcji już co nieco wiesz o ciasteczkach sesyjnych i domyślasz się, że za ich pomocą możesz zalogować się do strony internetowej bez znajomości hasła i loginu. Dzisiaj pokażemy jak za pomocą programu typu sniffer przechwycić te cookies i wprowadzić do swojej przeglądarki przejmując w ten sposób sesje użytkownika.

Materiał szkoleniowy Cookie Cadger, Ettercap i Wireshark, czyli kradniemy sesje – lekcja #6

W poniższym wideo demonstrujemy w jaki sposób pentester, może przetestować web aplikacje pod względem implementacji bezpiecznych ciasteczek przeglądarki. Demonstrujemy świetne i groźne narzędzie Cookie Cadger, które może posłużyć do przejęcia sesji użytkownika w sposób automatyczny.

Krótki opis użytych snifferów i materiały dodatkowe

Bardzo ważna uwaga! Jeśli działasz na VirtualBox i chcesz sniffować ruch z całej sieci, proszę upewnić się że jest ustawiony tryb karty sieciowej na promiscuous mode (Settings na maszynie wirtualnej Kali Linux -> Network -> Promiscuous Mode -> Allow All).

Code Cadger

Cookie Cadger sniffer przechwytujący ciasteczka sesyjne (php session) użytkowników sieci.
Interfejs automatycznego sniffera Cookie Cadger uruchomionego w systemie operacyjnym Kali Linux 2016.1.

Code Cadger to narzędzie napisane w języku Java łączące atak man in the middle, sniffing HTTP i automatyczne wprowadzanie ciasteczek sesyjnych w jedno. Za pomocą dosłownie jednego przycisku (Load Domain Cookies), możemy przejąć sesje dowolnego użytkownika sieci, czyli po prostu zalogować się na jego konto. Po ściągnięciu Code Cadger wystarczy uruchomić go w konsoli za pomocą polecenia:

Aplikacja umożliwia ponadto modyfikacje i ponowne wysyłanie spreparowanych zapytań HTTP. Przykładowo jeśli znajdziemy zapytanie, którym osoba usuwała dany news ze swojej strony internetowej modyfikując delikatnie zapytanie i odsyłając je możemy usunąć również inne posty. Narzędzie obsługuje wiele typów kart sieciowych zarówno tych bezprzewodowych (Wi-Fi) jak i kablowych.

Uwaga! Tak jak na filmie widać nie zawsze otwiera to narzędzie pełny adres URL (raz otwierało a raz nie z naszych testów wynika). Dlatego czasem musisz dopisać resztę pod adresu ręcznie, lecz chyba nie jest to dużym problemem… ;-)



Ettercap

Jest to wielofunkcyjny sniffer dedykowany dla systemu operacyjnego Microsoft Windows i GNU/Linux. Użyliśmy go z uwagi na graficzny interfejs użytkownika i mnogość funkcji umożliwiających przekierowanie ruchu sieciowego (w tym ataku MITM). Polecam Tobie przeczytanie naszego poniższego wpis o podobnej aplikacji o nazwie arpspoof.

Hakuj co chcesz zatruwając tablice ARP, czyli DNS SPOOFING…

Wireshark

Jeden z najlepszych moim znaniem analizatorów ruchu sieciowego (sniffer). Również jest dostępny dla najpopularniejszych systemów operacyjnych na rynku. Za jego pomocą możesz podsłuchać cały ruch, który odbywa się w sieciach komputerowych. Nie zastąpione narzędzie w diagnostyce sieci, przy pisaniu i analizowaniu aplikacji sieciowych no i oczywiście dla hakerów. Bardziej zaawansowane osoby mogą pokusić się nawet o podsłuchiwanie za jego pomocą transmisji bluetooth, wideo lub komunikacji dźwiękowej VOIP. Więcej o snifferach dowiesz się z następującego wpisu na naszym blogu:

Wireshark sniffer i tcpdump to podsłuch idealny! | PORADNIK

Slax Linux*

Slax Linux jako
Pulpit darmowego systemu operacyjnego Slax Linux. Środowisko KDE zapewnia piękne doznania wizualne… ;-)

Mały i bardzo użyteczny darmowy system operacyjny Linux. Zajmuje na dysku około 200MB. Obecna jego wersja 7.0.8 jest do pobrania jest w ponad 50 językach (w tym Polski). Ze względu na problemy ze sniffowaniem osoby, która komunikuje się z własnym localhostem poszukiwaliśmy właśnie małego dosyć szybkiego systemu. W gruncie rzeczy urealnia to też atak, ponieważ mało kto ma hosting w domu na własnym komputerze. Możesz w tym miejscu tak jak w wideo, użyć dowolnego komputera i systemu operacyjnego ewentualnie wirtualnej maszyny. Ważne żeby ten komputer nie był serwerem HTTP do którego chcesz się odwoływać. System ten wystarczy zamontować w VirtualBox i działa on w trybie Live CD. Do pobrania jest ze strony:

Praca domowa we własnym zakresie (PHP cookies z phpsessid)

Lekcja do odrobienia z bieżącego materiału na temat sesji użytkownika i ciasteczek. Pod zadaniami są odpowiedzi lub opcjonalnie podpowiedzi. Spróbuj najpierw samemu rozgryźć problem. Nie psuj sobie zabawy!

-> Zadanie 1

Sprawdź za pomocą narzędzia Code Cadger jak ono działa. Spróbuj zalogować się na inne nieszyfrowane strony na dowolnych komputerach w swojej sieci. Przeanalizuj wyniki w narzędzi i sprawdź czy rzeczywiście umożliwia ono przejmowanie sesji dowolnych stron internetowych.

Uwaga! To zadanie nie posiada odpowiedzi. Chciałbym jednak, abyś zamieścił jakiś komentarz pod tym wpisem. Działa? Nie działa? Bo coś cicho i nie wiem czy kurs kontynuować…. ;-)

-> Zadanie 2

Uruchom program Wireshark podsłuchując samego siebie (bez Ettercap). Za pomocą swojej przeglądarki internetowej odwiedź kilka nieszyfrowanych (bez https) stron www. Przejdź kilka razy pomiędzy podstronami na nich. Po zebraniu Twoich logów Twoim zadaniem jest napisanie filtra Wireshark, który wyświetli tylko strony odwiedzone z Twojego komputera (Kali Linux) metodą GET.

Podpowiedź do zadania nr 2 - jeśli nie dajesz rady to spójrz!

Wiele ciekawych gotowych filtrów do wyklikania znajdziesz za pomocą przycisku expression obok pola filter w snifferze Wireshark. Znajdziesz tam również pogrupowane filtry protokołu HTTP.

[collapse]
Uwaga! Rozwiązanie 2. Nie psuj sobie zabawy!

W polu filter programu Wireshark wprowadź a następnie wciśnij Apply:

Ciekawostka! Skąd tak dużo wyników skoro odwiedziłeś tylko kilka podstron? Musisz wiedzieć, że niektóre elementy takie jak np. zdjęcia pobierane są w tle metodą GET przez Twoją przeglądarkę.

Mimo że prosisz o jeden plik strony internetowej, ostatecznie na niej może się znajdować więcej elementów do których trzeba się odwołać metodą GET w celu ich wyświetlenia.

Przeglądarka internetowa robi to w sposób niewidoczny dla użytkownika.

[collapse]

-> Zadanie 3

Przemyśl kwestie bezpieczeństwa ciasteczek. Miej na uwadze możliwość ich modyfikacji cookies przez użytkownika. Oczywiście nie znasz za bardzo jeszcze języka PHP i HTML, więc ogranicz się jedynie do teoretycznych rozważań. Pytanie jest następujące. Jakie mechanizmy dodatkowe do ciasteczek można by wprowadzić po stronie serwera, w celu zapobiegnięcia kradzieży ciasteczek? Głupi przykład: niech użytkownik robi sobie selfi i wysyła serwerowi zapytanie jak teraz wygląda, a admin który wszystkich zna sprawdzi czy to on i zaakceptuje lub nie…

Uwaga! Pamiętaj, że przy tworzeniu sesji oprócz wysłania ze serwera ciasteczka z wartością sesyjną takie sama wartość jest tworzona przez PHP i przechowywana na serwerze w celu sprawdzenia czy dany użytkownik jest zalogowany.

Uwaga! Rozwiązanie 3. Nie psuj sobie zabawy!

Kilka możliwych mechanizmów:

  • generowanie za każdym razem jednorazowej nowej wartości ciasteczka i wysłanie użytkownikowi z każdą odpowiedzią serwera,
  • bazowanie nie na samym cookie, tylko na kombinacji ciasteczko+adres IP który jest zapamiętywany przy zalogowaniu się. Złodziej który ukradnie ciasteczko, musiałby wtedy korzystać z tego samego adresu IP co ofiara aby ją udawać za pomocą cookies,
  • analogicznie do powyższego punktu dokładny user-agent+nazwa systemu operacyjnego+ciasteczko+rozdzielczość ekranu itd,
  • inne.

Ciekawostka. W nagłówkach użytkownik wysyła dużo więcej informacji niż myślisz. Przyjrzyj się dokładniej informacją zawartym w samym user-agent.

[collapse]

Podsumowanie o ciasteczkach sesji

Jak widziałeś na zaprezentowanym wideo w prosty sposób przejmując i wprowadzając do przeglądarki php cookies z wartością phpsessid haker może przejąć konto użytkownika. Co najciekawsze nie musi do tego celu posiadać ani loginu i hasła. W naszym przypadku i te dane przejęliśmy ograniczając w programie Wireshark zebrane pakiety sieciowe tylko do tych HTTP POST. Jeśli używasz tego typu sniffera, w prosty sposób możesz wykonać atak zatruwania tablicy ARP za pomocą Ettercapa praktycznie dla całej sieci komputerowej i przejąć olbrzymią masę informacji.

Jedyną metodą obrony w tym przypadku (choć nie do końca ona chroni), jest użycie mocnych algorytmów kryptograficznych (np: szyfrowania HTTPS lub używania bezpiecznych VPN). W tej lekcji to już wszystko. Zapraszamy do naszego wpisu na temat różnych metod przestępców na przechwytywanie kont Facebook. Przy okazji zapraszamy na naszego fejsa TUTAJ, jeśli chcesz być na bieżąco. powodzenia w pracy domowej!




19 myśli na temat “WEP lekcja #6 – Cookie Cadger, Wireshark i przechwytywanie ciasteczek sesyjnych

  1. Mam mały problem.. Cookie Cadger otwiera Mozille, ale strona która się pojawia to Mozilla Security i prosi o przejście w tryb prywatny. Próbowałem pogrzebać w ustawieniach ale wszystko znika po paru sekundach(nawet jak nic nie robię) a CookieCadger dalej wyświetla że wczytuje przeglądarkę. Jakieś porady?

    1. Sprawdzałem w Kalim swoim i ten problem nie występuje, nie potrafię odpowiedzieć na to pytanie czemu tak się u Ciebie dzieje. Warto chyba zapytać autora. Na swojej stronie ma odnośnik do „issues”.

    1. Analizator ruchu sieciowego służy do analizowania ruchu sieciowego przez administratora. Jakoś nie wyobrażam sobie, żeby każdy administrator mógłby podsłuchiwać poza swoją siecią.

  2. Mi nwm czemu niewidzi komputera w sieci. Ofiara jest podpieta przez wifi, a hacker kablem z ofiarą. Co może nie działać? Wspomnę że non stop ofiara krzyczy że błąd adresu IP w sieci.

    1. I komputer który audytujesz i atakujący musi być w jednej sieci więc oboje powinni być podpięci przez Wi-Fi.

  3. Cały czas mam problem, czytam szukam ale nie mogę rozwiązać problemu, może opiszę po krótce:
    – Mam zainstalowanego Kali 2016.1 na HDD, upgrady porobione
    – w pliku etter.conf usunąłem # przy sekcji LINUX odnośnie Tablic
    – w sieci: 2 laptopy(Linux Mint – Firefox) i telefon łączą się po WIFI, 1 laptop (Linux Mint + Firefox) po kablu
    Aktywuje IP FORWARDING – echo 1 > /proc/sys/net/ipv4/ip_forwarding – sprawdzam cat – jest 1
    ettercap -G , wybieram interface(wlan0), skanuje hosty, cel (Linux Mint) dodaje do target1, bramę do target2, arp only poison-one way, start sniffing
    wireshark – zbiera pakiety, na celu chodzi internet, ale przy próbie zalogowania na pocztę (wp.pl) przegladarka wypluwa Secure Connection Failed Error code: SEC_ERROR_BAD_SIGNATURE, na normalnych stronach internet działa dalej

    1. szyfrowanie SSL HTTPS poczty wp
      Po to jest HTTPS? A my tylko wspominamy i to wielokrotnie o narzędziach umożliwiających obejście SSL. Logiczne, że nie dajemy gotowego rozwiązania na HTTPS bo pentesterowi to jest zbędne a chcemy uniknąć hakowania fejsbuków i maili „znajomym/dziewczynie” przez script kiddie.

  4. A ja nadal mam jeden i ten sam problem, i na virtualboxie i na normalnej instalacji. Wireshark nie przechwytuje POST, mitmf nie działa. Nie wiem czy jakieś pliki konfiguracyjne trzeba zedytować?

  5. Może nie lajkuje na fb i you tube, ale pamiętaj, że są też tacy, co nie chcą być anonimowi i doceniaj to, co robisz i nie po to, aby zaraz komuś zajrzeć do konta, ale po to, aby miedz wiedze, jakie zagrożenia w sieci czekają

    1. Co do naszych profili to nie spamujemy tam, tylko informujemy o nowościach na HEP. Nie do końca rozumiem komentarz. Ten blog nie jest związany z ruchem anonymous tylko ogólnie z bezpieczeństwem informatycznym. Dzięki za komentarz!

    1. Schlebiasz nam! Fajnie, że są osoby którym chociaż trochę materiały się podobają :-). Dzięki!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *