O autorze
James Leyte-Vidal jest weteranem branży bezpieczeństwa komputerowego - działa w niej od ponad 20 lat. Jako samouk w branży IT James pracował nad incydentem związanym z bezpieczeństwem komputerowym, który zmienił ścieżkę jego kariery w kierunku bezpieczeństwa.
James prowadzi niezależne konsultacje i pracował dla firm z listy Fortune 100 na różnych stanowiskach, w tym w zakresie architektury bezpieczeństwa, testów penetracyjnych, zgodności, polityki i wielu innych.
James jest również instruktorem w SANS Institute, globalnym dostawcy szkoleń z zakresu bezpieczeństwa informacji, a także współautorem trzech kursów SANS: SEC467: Social Engineering for Security Professionals, SEC556: IoT Penetration Testing oraz SEC617: Wireless Penetration Testing and Ethical Hacking.
Gdy James nie zajmuje się aktywnie bezpieczeństwem, często majsterkuje przy sprzęcie lub spędza czas ze swoją rodziną.
O recenzentach
Matt Edmondson jest głównym instruktorem SANS i autorem kursu SEC497 Practical OSINT. Ma ponad 21-letnie doświadczenie jako agent federalny i jest założycielem Argelius Labs, gdzie pomaga wielu dużym i małym organizacjom w lepszym rozpoznaniu obszarów ataków zewnętrznych i monitorowaniu pojawiających się zagrożeń. Jest wielokrotnym prelegentem na konferencji Black Hat i wypowiadał się w wielu publikacjach, w tym w Wired i oficjalnym magazynie Raspberry Pi.
Rich Robertson przez ponad 20 lat pracy w branży IT i cyberbezpieczeństwa pełnił szereg funkcji kierowniczych i indywidualnych. Jego kariera obejmuje różne branże, w tym finanse, rozrywkę, handel detaliczny i technologię. Pasją Richa są urządzenia mobilne, hakowanie sprzętu, eksploracja danych i odkrywanie błędów logicznych. Pracował nad zabezpieczeniem technologii, która zasila wszystko, od magazynów, przez statki wycieczkowe, po akwaria z delfinami. Rich uzyskał tytuł licencjata w dziedzinie administracji biznesowej i MBA na Webber International University, a ostatnio uzyskał tytuł magistra FinTech na University of Central Florida. Ma również wiele certyfikatów branżowych, takich jak CISSP, ITPM oraz SANS GCIH i GPEN.
Chciałbym podziękować Jamesowi za możliwość zrecenzowania jego książki. Dziękuję również mojej pięknej żonie, Stacey, za miłość, wsparcie i cierpliwość podczas całego tego szaleństwa, oraz mojemu synowi, Tylerowi, za pomoc w realizacji tego przedsięwzięcia. Moim rodzicom dziękuję za wiarę we mnie i pozwolenie mi na zbudowanie pierwszego komputera, który zapoczątkował moją karierę w branży technicznej. Chcę również podziękować reszcie mojej rodziny, przyjaciołom, kolegom i nie tylko (JM i LM, LJ i Mika H), którzy popchnęli mnie do stania się tym, kim jestem dzisiaj.
Wstęp
W tej książce wprowadzimy Cię w zagadnienia związane z łamaniem haseł, a także zapoznamy z popularnymi narzędziami używanymi do tego celu. Następnie przeanalizujemy popularne techniki, w których te narzędzia mogą być przydatne, i pokażemy, jak pobierać i łamać skróty związane z tymi konkretnymi technikami. Wprawdzie przykłady tych zastosowań narzędzi nie są wyczerpujące, lecz dobrze przygotują Cię do tego, abyś radził sobie z innymi typami skrótów haseł, z którymi możesz zetknąć się w przyszłości.
Dla kogo jest ta książka
Książka jest przeznaczona dla osób, które interesują się łamaniem haseł, ale nie trzeba mieć doświadczenia w tym zakresie.
Co obejmuje ta książka
Rozdział 1. "Przechowywanie haseł - matematyka, prawdopodobieństwo i złożoność" daje wprowadzenie do pojęć związanych z łamaniem haseł.
Rozdział 2. "Po co łamać, jeśli wystarczy OSINT?" przedstawia zastosowanie Open Source Intelligence (OSINT) jako alternatywę w niektórych przypadkach łamania haseł.
Rozdział 3. "Budowa własnego środowiska łamania haseł" podaje wprowadzenie do narzędzi potrzebnych do łamania haseł.
Rozdział 4. "Reguły aplikacji John i hashcat" przedstawia wprowadzenie do reguł permutacji w aplikacjach John i hashcat i sposób ich działania.
Rozdział 5. "Łamanie haseł w systemach Windows i macOS" opisuje uzyskiwanie, formatowanie i łamanie skrótów haseł w systemach Windows i macOS.
Rozdział 6. "Łamanie haseł w Linuksie" obejmuje uzyskiwanie, formatowanie i łamanie skrótów haseł w systemie Linux.
Rozdział 7. "Łamanie haseł w sieciach bezprzewodowych WPA/WPA2" opisuje uzyskiwanie, formatowanie i łamanie skrótów w sieciach wi-fi WPA i WPA2.
Rozdział 8. "Łamanie haseł aplikacji WordPress, Drupal i Webmin" opisuje uzyskiwanie, formatowanie i łamanie skrótów WordPressa, Drupala i Webmina.
Rozdział 9. "Łamanie haseł do sejfów" opisuje uzyskiwanie, formatowanie i łamanie haseł do sejfów KeePass, LastPass i 1Password.
Rozdział 10. "Łamanie haseł do portfeli kryptowalut" opisuje uzyskiwanie, formatowanie i łamanie haseł do portfeli Bitcoin, Litecoin i Ethereum.
Rozdział 11. "Ochrona przed atakami polegającymi na łamaniu haseł" omawia potencjalne mechanizmy obrony przed łamaniem haseł.
Jak najlepiej skorzystać z tej książki
Aby w pełni skorzystać z tej książki, potrzebna będzie praktyczna znajomość składni wiersza poleceń systemów Windows i Linux oraz popularnych narzędzi niezwiązanych z systemem operacyjnym, takich jak Git.
Oprogramowanie/sprzęt omówione w książce
Wymagany system operacyjny
hashcat
Windows macOS lub Linux
John the Ripper
Windows, macOS lub Linux
Zastrzeżenie
Informacje zawarte w tej książce są przeznaczone do wykorzystania wyłącznie w sposób etyczny. Nie należy korzystać z żadnych informacji z tej książki bez pisemnej zgody właściciela sprzętu. Wykonywanie nielegalnych działań grozi aresztowaniem i ściganiem w pełnym zakresie prawa. Wydawnictwo Helion nie ponosi żadnej odpowiedzialności w przypadku niewłaściwego wykorzystania informacji zawartych w książce. Informacje tu zawarte mogą być wykorzystywane wyłącznie podczas testowania środowisk z odpowiednimi pisemnymi upoważnieniami od właściwych osób odpowiedzialnych.
Stosowane konwencje
W niniejszej książce zastosowano szereg konwencji tekstowych.
Kod w tekście - oznacza fragmenty programu (funkcje, procedury), polecenia wprowadzane z klawiatury, tekst wyświetlany na ekranie i uchwyty Twittera. Oto przykład: "Następnie powinniśmy użyć polecenia show tables;, które pokaże nam wszystkie tabele w bazie danych Drupala".
Wszelkie dane i wyniki z wiersza poleceń są zapisywane w następujący sposób:
python3 /opt/john/run/bitcoin2john.py wallet.dat
Pogrubienie - wskazuje nowy termin, ważne słowo, na które czytelnik powinien zwrócić uwagę. Oto przykład: "Ataki hybrydowe łączą ze sobą pewne cechy ataków kombinowanych i ataków siłowych".
Kursywa - wskazuje nazwy elementów interfejsu użytkownika (przycisków, poleceń menu) oraz nazwy plików, katalogów, tabel, pól, skrótów, fikcyjnych adresów URL, a także wyróżnienia w tekście. Oto przykład: "Po zagłębieniu się w tabelę LastPassData poprzez wybranie opcji Browse Table widzimy kilka interesujących nas wierszy".
Wskazówki lub ważne uwagi
Wyglądają tak jak tutaj.
Rozdział 1. Przechowywanie haseł - matematyka, prawdopodobieństwo i złożoność
Od czasu narzędzi takich jak Cain and Abel po nowoczesne narzędzia takie jak hashcat łamanie haseł stało się nieodłącznym elementem testowania zabezpieczania informacji. Podczas gdy narzędzia i techniki zmieniały się z upływem lat, zasady leżące u podstaw łamania haseł pozostały w znacznej mierze bez zmian.
Łamanie haseł może obejmować wiele praktycznych przypadków, od odzyskiwania dostępu do systemu po odejściu użytkownika z firmy, po testowanie penetracyjne i przypadki wykorzystania przez zespoły "czerwone", gdzie wykorzystujemy łamanie hasła, aby udowodnić bezpieczeństwo mechanizmów kontroli dostępu lub stwierdzić jego nieskuteczność.
W tym rozdziale omawiamy następujące główne zagadnienia:
Czym jest łamanie haseł? Jak hasła są używane i przechowywane? Dlaczego niektóre hasła są łatwiejsze do złamania od innych?
Czym jest łamanie haseł?
Łamanie haseł to proces odtwarzania sekretu na podstawie zakodowanego (zwykle zaszyfrowanego lub skróconego) tekstu. Termin ten jest bardzo szeroki i obejmuje wiele metod przechowywania i mieszania haseł. Dlatego nie wszystkie działania związane z łamaniem haseł są równorzędne - niektóre hasła, a także metody przechowywania haseł są łatwiejsze do złamania niż inne. Będziemy to gruntownie omawiać w całej tej książce.
W łamaniu haseł można wyodrębnić dwa różne podejścia do próby odzyskania sekretu:
oparte na słowniku, kombinowane, siłowe, hybrydowe, oparte na częściowej wiedzy, zwane też atakami z maską.
Omówmy po kolei wszystkie te podejścia.
Ataki słownikowe
Ataki słownikowe , jak można się domyślić na podstawie nazwy, wykorzystują listę słów lub fraz jako kandydatów na hasło - potencjalne hasło - które będziemy sprawdzać, aby zobaczyć, czy będą one poprawnymi hasłami. Taka lista jest nieformalnie określana jako słownik , choć może wcale nie zawierać słów ze słownika. Lista słów może w ogóle nie przypominać słownika. Termin ten jest utrzymywany od czasów, gdy wiele haseł opierało się na słowach ze słowników, zanim powszechne stały się wymagania dotyczące złożoności haseł (takie jak dodawanie do hasła wielkich liter, liczb i znaków specjalnych).
Gdy mówimy o wymaganiach dotyczących złożoności, wydaje się, że tradycyjne słowa ze słownika nie byłyby skuteczne jako kandydaci na hasło podczas łamania haseł, gdyż wymogi złożoności stają się coraz bardziej powszechne. Zajmiemy się tym w kolejnych podrozdziałach.
Budowa listy słów podczas ataku słownikowego może być prosta lub czasochłonna. Jednak w wielu przypadkach poświęcenie czasu na początku przy tworzeniu dobrej listy dopasowanej do celu może przynieść korzyści podczas łamania. Kompromis polega tu na tym, że przygotowana lista słów może nie nadawać się do ponownego zastosowania w innych przypadkach łamania haseł. Omawiamy to w rozdziale 2. "Po co łamać, jeśli wystarczy OSINT?", wykorzystując biały wywiad ( OSINT ) do pomocy przy tworzeniu listy słów.
Dobra i dość duża lista słów, którą możemy wykorzystać na początek, to RockYou . Nazwa pochodzi od nazwy firmy RockYou, do której włamano się w 2009 roku, ujawniając ponad 32 miliony uwierzytelnień użytkowników. Lista ta dostępna jest w kilku miejscach w internecie, ale popularną lokalizacją, z której można ją pobrać, jest https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt . Lista ta zawiera 14 milionów unikatowych kandydatów na hasła, a jednocześnie wiele popularnych dystrybucji testów penetracyjnych, takich jak Kali Linux (dostępny pod adresem https://www.kali.org/get-kali/#kali-platforms ) oraz Slingshot Linux (dostępny pod adresem https://www.sans.org/tools/slingshot/ ).
Ataki kombinowane
Ataki kombinowane pobierają dwie listy słów jako dane i scalają (łączą ze sobą) po jednym kandydacie na hasło z każdej listy, tworząc kandydata na hasło do celów testowania. Na przykład jedna lista może zawierać słowa słowo1 i słowo2 , a druga słowo3 i słowo4 . W tym scenariuszu atak kombinowany wykorzysta obie listy, tworząc potencjalnych kandydatów na hasło w postaci słowo1słowo3 , słowo1słowo4 , słowo2słowo3 oraz słowo2słowo4 .
Obecne zalecenia amerykańskiej organizacji NIST (National Institute of Standards and Technology) mówią o tym, że dla zapewnienia lepszej odporności na złamanie długość hasła jest ważniejsza od jego złożoności. Pomaga to zachęcić użytkowników, aby tworzyli hasła łatwe do zapamiętania, ale trudne do złamania i zgodne z bieżącymi zaleceniami NIST. Można tego dokonać, łącząc ze sobą kilka słów ze słownika i dodając mnemonikę pomagającą w zapamiętaniu hasła. Jest to tylko jedno z podejść do tego tematu, ale przykład ten pokazuje - w powiązaniu z obecnymi zaleceniami NIST - że kombinacyjne podejście do łamania haseł może być bardziej skuteczne, gdyż wielu użytkowników, kierując się tymi zaleceniami, przechodzi na hasła złożone z fraz.
Jednocześnie niektóre standardy mogą spowolnić przechodzenie na dłuższe, mniej skomplikowane frazy. Na przykład standard PCI-DSS (ang. Payment Card Industry Data Security Standard ), który jest wymagany przy przetwarzaniu danych kart kredytowych w placówkach handlowych, wymaga hasła złożonego z 12 znaków, a także liter i cyfr przy hasłach powiązanych z kontami, które mają dostęp do danych posiadacza karty.
Ataki siłowe
Ataki siłowe robią dokładnie to, na co wskazuje ich nazwa - każda pozycja kandydatów na hasło jest wypełniana każdym możliwym znakiem w tej pozycji. Jeśli na przykład hasło może mieć jedynie długość ośmiu znaków, podejście siłowe będzie wypróbowywać jako kandydata aaaaaaaa , potem aaaaaaab i tak dalej, aż do wyczerpania wszystkich możliwości. Problem związany z tym podejściem polega na tym, że gdy hasło osiąga rozsądną długość, czas potrzebny na wykonanie tego rodzaju ataku staje się niemożliwy do realizacji. Ponadto liczba zbiorów znaków dostępnych do wykorzystania (małe litery, wielkie litery, cyfry i symbole) także znacznie zwiększa liczbę prób wymaganych przy tym ataku.
Dobrą wiadomością z punktu widzenia łamania haseł jest możliwość złamania tym sposobem każdego hasła. Jednak czas potrzebny na to przy dzisiejszej mocy obliczeniowej komputerów sprawia, że jest to ułudą przy większych hasłach lub bardziej skomplikowanych algorytmach (wymagających więcej czasu przy każdej próbie).
Ataki hybrydowe
Ataki hybrydowe łączą ze sobą pewne cechy ataków kombinowanych i ataków siłowych. Atak hybrydowy wykorzystuje jako podstawę listę słów, a następnie modyfikuje słowa z listy, dodając do nich jeden lub więcej znaków i próbując ataku siłowego w przestrzeni powiązanych z tym znaków. Dla przykładu powiedzmy, że mam następujące słowo z listy słów:
banana
Wiem jednak, że reguły haseł w moim celu wymagają, aby w każdym haśle była cyfra. Mogę spróbować ataku hybrydowego, który wykorzystuje słowo z mojej listy i dodaje po nim cyfrę. Teraz moi kandydaci na hasło wyglądają następująco:
banana1
banana2
banana3
banana4
Pozwala to na bardziej efektywne testowanie środowisk, których użytkownicy często dodają na końcu lub na początku swojego hasła jakieś podstawowe słowo ze słownika.
Ataki oparte na częściowej wiedzy, zwane też atakami z maską
Ataki z maską wykorzystują pomysł, że jeśli częściowo rozumiemy format użyty do budowy hasła, to tworzymy atak o podejściu podobnym do siłowego, który jest przyspieszony dzięki założeniom, jakie przyjmujemy na temat formatu hasła.
Pomocny będzie tu przykład. Przyjmijmy, że testujemy hasła w firmie, która wymaga w hasłach jednej wielkiej litery, jednej małej litery i cyfry. Jest dość powszechne w wielu firmach wymaganie związane ze złożonością haseł i wielu użytkowników spełnia ten warunek, stawiając wielką literę na początku słowa ze słownika i dodając na końcu jedną lub dwie cyfry.
Okazuje się, że takie wymagania co do hasła w powiązaniu ze zmianą hasła co 90 dni mogą prowadzić do koszmarnego hasła pora-rok , kiedy to użytkownicy ustawiają hasło na porę roku (wiosna, lato itd.), dodając dwu- lub czterocyfrowe oznaczenie roku (Wiosna22/Wiosna2022/Lato22/Lato2022 itd.).
Może to prowadzić do utworzenia maski na hasło, która zakłada, że użytkownik wybierze hasło z wielką literą na początku, potem kilkoma małymi literami i dwiema lub czterema cyframi na końcu (od 0 do 9). Maska ta będzie dobrą próbą ataku siłowego na każde hasło o podobnej długości spełniające te kryteria. Nie doprowadzi to do uzyskania każdego hasła z listy, ale podejście to wykazuje historycznie duży procent złamanych haseł, gdyż zasady te są często przyjmowane przez użytkowników podczas tworzenia haseł.
Ważna uwaga
Lepsze sposoby tworzenia i ograniczania haseł pokażemy w rozdziale 11.
Jak hasła są używane i przechowywane?
Sposób przechowywania haseł może wydawać się sprawą prostą, ale może to mieć ogromny wpływ na możliwości ich odzyskiwania za pomocą łamania haseł i na czas trwania takiej operacji.
Nie zawsze trzeba łamać hasła!
Większość haseł jest przechowywana w systemach uwierzytelnień za pośrednictwem jakiegoś procesu, który utrudnia ich odzyskanie. Jednak nie jest niczym niezwykłym natknięcie się na systemy, które nie chronią odpowiednio danych uwierzytelniających użytkowników. Wcześniej była w tym rozdziale mowa o złamaniu systemu RockYou. W tym przypadku firma ta przechowywała hasła w postaci tekstowej (bez skrótów ani szyfrowania), co sprawiło, że uzyskanie haseł było trywialne. Oznaczało to, że gdy hasła użytkowników stały się dostępne publicznie, były w pełni narażone - nie było wymagane żadne łamanie haseł ani inne skomplikowane działania. Hasła były po prostu do wzięcia.
Pomówmy teraz o dwóch rodzajach przechowywania haseł, z którymi zwykle mamy do czynienia: skrótach oraz szyfrowaniu .
Skróty