Dzisiejszy artykuł poświęcony jest oprogramowaniu Hydra, która zasługuje na szczególną uwagę.
To wszechstronne narzędzie służące do przeprowadzania ataków typu brute force, czyli “logowania się na siłę”. Hydra jest bardzo uniwersalna – możemy jej używać od logowania do serwerów po aplikacje webowe. Przyjrzyjmy się, jak działa i jak można wykorzystać jej potencjał.
Czym jest Hydra?
Zacznijmy od paru słów teorii.
Hydra (a właściwie “THC Hydra”) to narzędzie stworzone przez grupę The Hackers Choice (THC), które pozwala na przeprowadzanie ataków brute force na różne usługi i protokoły.
Zamiast ręcznie sprawdzać każde możliwe hasło, Hydra automatycznie próbuje logować się do wskazanej usługi, wykorzystując listę haseł (słownik) lub różne kombinacje znaków, aż do momentu, w którym znajdzie właściwe dane logowania.
Kluczową zaletą Hydry jest jej szybkość, która wynika z możliwości uruchamiania wielu wątków jednocześnie. W praktyce oznacza to, że Hydra może próbować dziesiątek, setek, a nawet tysięcy kombinacji haseł jednocześnie, co znacznie skraca czas ataku.
Jak działa Hydra?
Hydra wspiera imponującą liczbę protokołów i usług, co czyni ją jednym z najbardziej uniwersalnych narzędzi do ataków brute force. Obsługuje takie protokoły jak FTP, SSH, Telnet, HTTP / HTTPS, RDP (Remote Desktop Protocol) ,MySQL, PostgreSQL ,SMTP, POP3, IMAP i wiele innych.
Może być stosowana do testowania bezpieczeństwa niemal każdej usługi, której zabezpieczenia opierają się na uwierzytelnieniu użytkownika.
Miałam okazję usłyszeć bardzo ciekawe pytanie: “Ale jakim sposobem ‘haker’ może próbować się dostać np. do strony internetowej, kiedy ja, po 3 błędnych logowaniach do poczty od razu mam zablokowane konto?”
To bardzo dobry punkt wyjścia do dyskusji o tym, jak hakerzy omijają takie ograniczenia i dlaczego narzędzia takie jak Hydra są skuteczne mimo mechanizmów bezpieczeństwa, które wydają się nie do przejścia. Systemy blokowania kont po kilku nieudanych próbach logowania to oczywiście podstawowy element zabezpieczeń, ale jak to bywa – nie istnieje 100% ochrona.
Hydra, jako jedno z najbardziej popularnych narzędzi do ataków brute force, potrafi sprytnie omijać te zabezpieczenia.
Jak to możliwe? Kluczem jest tutaj rozproszenie ataku i manipulowanie sposobem, w jaki systemy logowania obsługują różne konta i adresy IP.
Jak Hydra obchodzi blokady?
Po pierwsze – rotacja IP. Niektóre systemy blokują dostęp tylko z określonego adresu IP po kilku nieudanych próbach. Hydra ma możliwość korzystania z proxy, co pozwala na zmianę adresu IP przy każdej próbie logowania. W praktyce oznacza to, że atakujący nie zostanie zablokowany po trzech błędnych próbach. Po prostu za każdym razem użyje innego adresu IP, by obejść zabezpieczenia.
Po drugie rotacja kont użytkowników – Kolejnym podejściem, które często wykorzystuję, jest rotacja loginów. Hydra może równocześnie testować różne konta użytkowników. Jeśli system blokuje konto po trzech nieudanych próbach, Hydra przeskakuje do innego loginu i kontynuuje próby, by w końcu znaleźć słaby punkt, którym może być np. mniej zabezpieczone konto.
Ominięcie blokady konta – W niektórych przypadkach systemy logowania blokują użytkownika dopiero po kilku błędnych próbach, ale tylko na pewien czas. Hydra może automatycznie wstrzymać się na chwilę, co pozwala jej dalej przeprowadzać próby, ale z odpowiednimi przerwami aby nie wywołać blokady.
Strony internetowe i systemy logowania często posiadają formularze do wielokrotnego logowania, które mogą nie zawsze być dobrze zabezpieczone. Hydra potrafi przeprowadzać ataki analizując odpowiedzi serwera. Nawet jeśli system zablokuje użytkownika na froncie , backend nie zawsze reaguje w sposób, który uniemożliwia atak.
Jak więc złamać panel logowania do strony www za pomocą Hydry?
Hydra działa w oparciu o zasadę ataków słownikowych lub brute force, co oznacza, że próbuje dopasować odpowiednie dane logowania, korzystając z wcześniej przygotowanej listy haseł (lub loginów i haseł). Aby przeprowadzić skuteczny atak, musisz mieć dostęp do słownika haseł, który może być przygotowany samodzielnie (np. przy użyciu narzędzia Crunch- O tym jak stworzyć listę haseł pisaliśmy tutaj ), lub pobrany z dostępnych baz.
Jeśli nie wspominałam wcześniej – to Hydra jest preinstalowana na systemie Kali Linux. Możesz sprawdzić instalacje uruchamiając polecenie: hydra -h
Przejdźmy do praktyki. Hydra ma wiele praktycznych zastosowań, a jednym z nich jest testowanie zabezpieczeń formularzy logowania na stronach internetowych. W dzisiejszych czasach aplikacje webowe są pierwszą linią obrony dla wielu organizacji, więc dobrze przetestować, czy nie są podatne na brute force.
Prosty test bezpieczeństwa aplikacji webowych za pomocą Hydry.
Załóżmy, że mamy formularz logowania na stronie i chcemy sprawdzić jak ciężko jest się przez nią przełamać.
Przy okazji ostatniego laba, który robiłam – próbowałam włamać się na własną, starą stronę. Strona posiada klasyczny formularz logowania, gdzie Hydra sprawdziła się idealnie.
Na początek musiałam dowiedzieć się, jak dokładnie działa formularz. Zrobiłam to z narzędziem Burp Suite. Zidentyfikowałam pola odpowiedzialne za login i hasło, oraz odpowiedź serwera w przypadku błędnych danych.
Struktura formularza wyglądała w taki sposób:
- Strona logowania:
http://mojastrona.pl/login.php
- Pola formularza:
user
(login),pass
(hasło) - Niepoprawna odpowiedź serwera: “Niepoprawne dane”
Teraz mogłam przejść do konfiguracji Hydry:
hydra -l admin -P /home/user/Downloads/rockyou.txt mojastrona.pl http-post-form "/login.php:user=^USER^&pass=^PASS^:Niepoprawne dane"
Rozszerzając:
-l admin
– testowałam login “admin”.-P /home/user/Downloads/rockyou.txt
– użyłam jednego z popularnych słownikówhttp-post-form
– nakierowanie ataku na formularzuser=^USER^&pass=^PASS^
– tutaj wstrzykuje login i hasło.Niepoprawne dane
– odpowiedź serwera, która informuje o nieudanej próbie logowania.
Friendly Reminder: Moje działania były w pełni autoryzowane – etyka w pentestingu jest podstawą! Żadne działania w internecie nie pozostają anonimowe, nawet jeśli używasz VPNa!
Zwiększanie wydajności Hydry. Jak przyspieszyć jej prace?
Aby zwiększyć szybkość i nie przeciążać serwera, ustawiłam liczbę wątków na 8:
hydra -l admin -P /home/user/Downloads/rockyou.txt -t 8 mojastrona.pl http-post-form "/login.php:user=^USER^&pass=^PASS^:Niepoprawne dane"
Po kilku próbach Hydra będzie wyświetlała na bieżąco próby logowania i potencjalne poprawne hasła. Jeśli test się powiedzie, w konsoli zobaczysz coś w stylu:
[80][http-post-form] host: mojastrona.pl login: admin password: qwerty
Jak sprawdzić, czy formularz używa GET czy POST?
W wielu tutorialach spotkacie się pewnie jeszcze z http-get-form
i http-post-form.
Hydra musi wiedzieć, czy formularz korzysta z GET czy POST, aby prawidłowo przesłać dane logowania w odpowiedni sposób. Dlatego właśnie w przykładzie użyłam “post” – akurat mój formularz korzystał z tej konkretnej metody.
Możesz łatwo sprawdzić, jakiej metody używa dany formularz, analizując jego kod HTML:
- Jeśli widzisz coś takiego:
<form action="/login.php" method="POST">
Formularz korzysta z metody POST. - Natomiast jeśli widzisz:
<form action="/login.php" method="GET">
Formularz korzysta z metody GET.
Szczególnie polecam jeszcze :
- Jak stworzyć słownik w Crunch w Kali Linux? | Pentesting
- Jak złamać hasło pliku ZIP lub PDF używając John The Ripper
- EDR vs SIEM – czym się różnią?
- Jak AI wpływa na MDR?
- Ataki socjotechniczne. Czym są? Jak się bronić?