Un mot de passe est techniquement défini comme une chaîne secrète de caractères utilisée pour authentifier ou accéder aux ressources. Il doit être gardé secret et caché aux autres qui ne sont pas autorisés à accéder à ces ressources. Les mots de passe ont été utilisés avec les ordinateurs depuis les premiers jours de l'informatique. L'un des premiers systèmes de partage de temps a été introduit en 1961. Il comportait une commande de connexion qui demandait un mot de passe utilisateur. Après avoir tapé PASSWORD, le système désactive le mécanisme d'impression, si possible, afin que l'utilisateur puisse saisir son mot de passe en toute confidentialité.
La force d'un mot de passe est fonction de sa longueur, de sa complexité et de son imprévisibilité. Il mesure l'efficacité à résister à deviner ou à le casser. Les mots de passe faibles, en revanche, raccourcissent le temps nécessaire pour deviner et accéder aux e-mails personnels/d'entreprise, aux données sensibles telles que les informations financières, les informations commerciales, les cartes de crédit, etc.
Il existe de nombreuses façons dont un mot de passe peut être faible, correspondant à la puissance de divers schémas d'attaque. La plus populaire de ce type d'attaque d'identification est la force brute. il s'agit d'une méthode d'essais et d'erreurs telle que deviner, tenter de décoder des données cryptées telles que le mot de passe ou le cryptage des données utilisé par le programme d'application ou l'outil de piratage.
Hydra est le cracker de connexion réseau le plus rapide qui prend en charge de nombreux protocoles d'attaque. Il est très rapide et flexible, et de nouveaux modules sont faciles à ajouter. Cet outil permet aux chercheurs et consultants en sécurité de montrer à quel point il serait facile d'obtenir un accès non autorisé à un système à distance. Hydra a été écrit par van Hauser et soutenu par David Maciejak. Dans la dernière mise à jour, le développement d'hydra est déplacé vers le référentiel github public à l'adresse : https://github.com/vanhauser-thc/thc-hydra.
Hydra a été testé pour compiler sur Linux, Windows/Cygwin, Solaris 11, FreeBSD 8.1, OpenBSD, OSX, QNX/Blackberry, et est disponible sous GPLv3 avec une extension de licence spéciale OpenSSL.
THC Hydra prend en charge les protocoles suivants : 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 et v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC et XMPP.
COMPARAISON D'HYDRA AVEC D'AUTRES OUTILS DE CASSAGE
Il existe également de nombreux outils de cracker de connexion à côté d'hydra, mais aucun ne prend en charge une liste énorme de protocoles et de support de cracker de connexion parallélisé comme le fait hydra. Les tableaux ci-dessous montrent le résultat des fonctionnalités, des services et de la comparaison de vitesse par rapport à medusa et ncrack.
Caractéristiques
Caractéristique | Hydre | méduse | Ncrack |
Licence | AGPLv3 | GPLv2 | Termes GPLv2 + Nmap |
Prise en charge d'IPv6 | Oui | Non | Non |
Interface utilisateur graphique | Oui | Oui | Non |
Prise en charge internationalisée (RFC 4013) | Oui | Non | Non |
Prise en charge du proxy HTTP | Oui | Oui | Non |
Prise en charge du proxy SOCKS | Oui | Non | Non |
Protocoles pris en charge | 51 | 22 | 7 |
Prestations de service
Service | Des détails | Hydre | méduse | Ncrack |
ADAM-6500 | Oui | Non | Non | |
AFP | Oui | Oui | Non | |
Astérisque | Oui | Non | Non | |
Mot de passe Cisco | Oui | Non | Non | |
Cisco Activer | Oui | Non | Non | |
CVS | Oui | Oui | Non | |
Oiseau de feu | Oui | Non | Non | |
FTP | Oui | Oui | Oui | |
Prise en charge SSL | AUTH TLS & FTP sur SSL | AUTH TLS & FTP sur SSL | Non | |
HTTP | Méthode(s) | OBTENIR, TÊTE, POST | AVOIR | AVOIR |
Authentification de base | Oui | Oui | Oui | |
Formulaire HTTP | Méthode(s) | OBTENIR, POSTER | OBTENIR, POSTER | Non |
Prise en charge SSL | HTTPS | HTTPS | Non | |
Http proxy | Authentification de base | Oui | Non | Non |
DIGEST-MD5 Authentification | Oui | Non | Non | |
Authentification NTLM | Oui | Non | Non | |
Prise en charge SSL | HTTPS | Non | Non | |
Énumération d'URL PROXY HTTP | Oui | Non | Non | |
ICQ | v5 | Oui 1 | Non | Non |
IMAP | Prise en charge de la CONNEXION | Oui | Oui | Non |
Prise en charge AUTH LOGIN | Oui | Non | Non | |
Prise en charge AUTH PLAIN | Oui | Oui | Non | |
Prise en charge AUTH CRAM-MD5 | Oui | Non | Non | |
Prise en charge AUTH CRAM-SHA1 | Oui | Non | Non | |
Prise en charge AUTH CRAM-SHA256 | Oui | Non | Non | |
Prise en charge AUTH DIGEST-MD5 | Oui | Non | Non | |
Prise en charge AUTH NTLM | Oui | Oui | Non | |
Prise en charge AUTH SCRAM-SHA1 | Oui | Non | Non | |
Prise en charge SSL | IMAPS & STARTTLS | IMAPS & STARTTLS | Non | |
IRC | Mot de passe général du serveur | Oui | Non | Non |
Mot de passe du mode OPER | Oui | Non | Non | |
LDAP | v2, prise en charge simple | Oui | Non | Non |
v3, prise en charge simple | Oui | Non | Non | |
v3, prise en charge AUTH CRAM-MD5 | Oui | Non | Non | |
Prise en charge AUTH DIGEST-MD5 | Oui | |||
Prise en charge AUTH NTLM | Oui | Oui | ||
Prise en charge AUTH SCRAM-SHA1 | Oui | |||
Prise en charge SSL | IMAPS & STARTTLS | IMAPS & STARTTLS | ||
IRC | Mot de passe général du serveur | Oui | ||
Mot de passe du mode OPER | Oui | |||
LDAP | v2, prise en charge simple | Oui | ||
v3, prise en charge simple | Oui | |||
v3, prise en charge AUTH CRAM-MD5 | Oui | |||
Prise en charge de la v3, AUTH DIGEST-MD5 | Oui | |||
MS-SQL | Oui | Oui | ||
MySQL | v3.x | Oui | Oui | |
v4.x | Oui | Oui | ||
v5.x | Oui | Oui | ||
PCN | Oui | Oui | ||
NNTP | Assistance UTILISATEUR | Oui | Oui | |
Prise en charge AUTH LOGIN | Oui | |||
Prise en charge AUTH PLAIN | Oui | |||
Prise en charge AUTH CRAM-MD5 | Oui | |||
Prise en charge AUTH DIGEST-MD5 | Oui | |||
Prise en charge AUTH NTLM | Oui | |||
Prise en charge SSL | STARTTLS & NNTP sur SSL | |||
Oracle | Base de données | Oui | Oui | |
Écouteur TNS | Oui | |||
Énumération SID | Oui | |||
PC-NFS | Oui | |||
pcN'importe où | Authentification native | Oui | Oui | |
Authentification basée sur le système d'exploitation (MS) | Oui | |||
POP3 | Assistance UTILISATEUR | Oui | Oui | Oui |
Assistance APOP | Oui | |||
Prise en charge AUTH LOGIN | Oui | Oui | ||
Prise en charge AUTH PLAIN | Oui | Oui | ||
Prise en charge AUTH CRAM-MD5 | Oui | |||
Prise en charge AUTH CRAM-SHA1 | Oui | |||
Prise en charge AUTH CRAM-SHA256 | Oui | |||
Prise en charge AUTH DIGEST-MD5 | Oui | |||
Prise en charge AUTH NTLM | Oui | Oui | ||
Prise en charge SSL | POP3S & STARTTLS | POP3S & STARTTLS | POP3S | |
PostgreSQL | Oui | Oui | ||
Astérisque | Oui | |||
RDP | Poste de travail Windows | Oui | Oui | Oui |
Serveur Windows | Oui | Oui | ||
Authentification de domaine | Oui | Oui | ||
REDIS | Oui | Non | ||
REXEC | Oui | Oui | ||
RLOGIN | Oui | Oui | ||
RPCAP | Oui | Non | ||
RSH | Oui | Oui | ||
RTSP | Oui | Non | ||
SAP R/3 | Oui | |||
Siemens S7-300 | Oui | |||
siroter | Oui | |||
Prise en charge SSL | SIP sur SSL | |||
PME | Mode NetBIOS | Oui | Oui | Non |
Mode natif W2K | Oui | Oui | Oui | |
Mode de hachage | Oui | Oui | Non | |
Effacer l'autorisation de texte | Oui | Oui | ||
Authentification LMv1 | Oui | Oui | Oui | |
Authentification LMv2 | Oui | Oui | Oui | |
Authentification NTLMv1 | Oui | Oui | Oui | |
Authentification NTLMv2 | Oui | Oui | Oui | |
SMTP | Prise en charge AUTH LOGIN | Oui | Oui | |
Prise en charge AUTH PLAIN | Oui | Oui | ||
Prise en charge AUTH CRAM-MD5 | Oui | |||
Prise en charge AUTH DIGEST-MD5 | Oui | |||
Prise en charge AUTH NTLM | Oui | Oui | ||
Prise en charge SSL | SMTPS & STARTTLS | SMTPS & STARTTLS | ||
Énumération d'utilisateur SMTP | Commande VRFY | Oui | Oui | |
Commande EXPN | Oui | Oui | ||
RCPT TO cmd | Oui | Oui | ||
SNMP | v1 | Oui | Oui | |
v2c | Oui | Oui | ||
v3 | (authentification MD5/SHA1 uniquement) | |||
DES CHAUSSETTES | v5, Authentification par mot de passe | Oui | ||
SSH | v1 | Oui | ||
v2 | Oui | Oui | Oui | |
Clés SSH | v1, v2 | Oui | ||
Subversion (SVN) | Oui | Oui | ||
TeamSpeak | TS2 | Oui | ||
Telnet | Oui | Oui | Oui | |
XMPP | Prise en charge AUTH LOGIN | Oui | ||
Prise en charge AUTH PLAIN | Oui | |||
Prise en charge AUTH CRAM-MD5 | Oui | |||
Prise en charge AUTH DIGEST-MD5 | Oui | |||
Prise en charge AUTH SCRAM-SHA1 | Oui | |||
Démon d'authentification VMware | v1.00 / v1.10 | Oui | Oui | |
Prise en charge SSL | Oui | Oui | ||
VNC | Prise en charge du mot de passe RFB 3.x | Oui | Oui | |
Prise en charge de l'utilisateur et du mot de passe RFB 3.x | (UltraVNC uniquement) | |||
Prise en charge du mot de passe RFB 4.x | Oui | Oui | ||
Prise en charge de l'utilisateur et du mot de passe RFB 4.x | (UltraVNC uniquement) |
Comparaison de vitesse
Vitesse (en s) | Hydre | méduse | Ncrack |
1 module Tâche / FTP | 11,93 | 12.97 | 18.01 |
4 Tâches / Module FTP | 4.20 | 5.24 | 9.01 |
16 Tâches / Module FTP | 2.44 | 2,71 | 12.01 |
1 module Tâche / SSH v2 | 32,56 | 33,84 | 45.02 |
4 Tâches / module SSH v2 | 10,95 | Cassé | Manqué |
16 Tâches / module SSH v2 | 5.14 | Cassé | Manqué |
C'était une brève introduction simple à l'hydre. Passons maintenant à l'installation.
INSTALLER HYDRA
Hydra est pré-installé sur kali linux, mais si vous avez un système d'exploitation différent, vous pouvez le compiler et l'installer sur votre système. Actuellement, le support d'hydra sur différentes plateformes :
- Toutes les plateformes UNIX (Linux, *bsd, Solaris, etc.)
- MacOS (essentiellement un clone BSD)
- Windows avec Cygwin (à la fois IPv4 et IPv6)
- Systèmes mobiles basés sur Linux, MacOS ou QNX (par exemple Android, iPhone, Blackberry 10, Zaurus, iPaq)
Pour télécharger, configurer, compiler et installer hydra, tapez simplement dans le terminal :
git clone https://github.com/vanhauser-thc/thc-hydra.git cd thc-hydra ./configure make make install
Si vous avez Ubuntu/Debian, vous aurez besoin de bibliothèques de dépendances :
apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libncp-dev
Si vous ne trouvez pas ces bibliothèques dans votre référentiel, vous devez les télécharger et les installer manuellement.
COMMENT UTILISER HYDRA
Félicitations, vous avez maintenant réussi à installer hydra sur votre système. En fait, Hydra est livré avec deux versions, GUI-gtk et ma version préférée, CLI. et en plus, hydra a également une version guidée par CLI, appelée hydra-wizard. Vous serez guidé pas à pas au lieu de saisir manuellement toutes les commandes ou arguments dans le terminal. Pour lancer hydra, depuis votre terminal tapez :
Pour l'interface de ligne de commande :
hydra
Pour l'assistant CLI :
hydra-wizard
Pour l'interface graphique :
xhydra
Après avoir tapé 'hydra', des commandes d'aide comme celle-ci s'afficheront :
[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
Connexion Web Bruteforce avec hydra
Hydra prend en charge certains services de bruteforcing comme je l'ai mentionné plus tôt, l'un d'eux est utilisé pour forcer les connexions Web telles que le formulaire de connexion aux médias sociaux, le formulaire de connexion bancaire utilisateur, la connexion Web de votre routeur, etc. Ce http[s]-get-form qui traitera cette demande. Dans ce tutoriel, je vais vous montrer comment bruteforcer les connexions Web vulnérables. Avant de lancer hydra, nous devrions connaître certains arguments nécessaires, tels que ci-dessous :
- Cible : http://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F
- Nom d'utilisateur connexion : administrateur (si vous n'êtes pas sûr, forcez-le brutalement)
- Liste des mots de passe : L'emplacement de la liste des fichiers de dictionnaire contenant les mots de passe possibles.
- Paramètres de formulaire : en général, utilisez des données d'altération ou un proxy pour obtenir le formulaire de paramètres de demande. Mais ici, j'utilise iceweasel, la barre d'outils du développeur de réseau basée sur Firefox.
- Module de services : http-post-form
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.
Obtention des paramètres de publication à l'aide d'un navigateur, iceweasel/firefox
Dans votre navigateur Firefox, appuyez sur les touches ' CTRL + MAJ + Q '. Ensuite, ouvrez la page de connexion Webhttp://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F, vous remarquerez que du texte apparaît sur l'onglet développeur de réseau. Il vous indique quels fichiers nous sont transférés. Voir la méthode tous sont GET, car nous n'avons pas encore POST de données.
Pour obtenir les paramètres post-form, tapez n'importe quoi dans le formulaire nom d'utilisateur et/ou mot de passe. Vous remarquerez une nouvelle méthode POST dans l'onglet développeur réseau. Double-cliquez sur cette ligne, dans l'onglet En-têtes, cliquez sur le bouton Modifier et renvoyer sur le côté droit. Dans le corps de la demande, copiez la dernière ligne, par exemple tfUName = asu & tfUPass = raimu . les tfUName et tfUPass sont des paramètres dont nous avons besoin. Comme on le voit ci-dessous :
Kali linux a un tas de listes de mots, choisissez la liste de mots appropriée ou utilisez simplement rockyou.txt dans /usr/share/wordlists/ comme on le voit ci-dessous :
D'accord, maintenant nous avons tous les arguments dont nous avons besoin et prêts à lancer l'hydre. Voici le modèle de commande :
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
Décomposons les commandes :
- l : est un mot contenant le nom d'utilisateur du compte, utilisez -L pour faire référence à la liste des noms d'utilisateurs possibles dans un fichier.
- P : est une liste de fichiers de mots de passe possibles, utilisez -p pour utiliser littéralement un mot de passe au lieu de le deviner.
- testapp.vunlwebapp.com : est un nom d'hôte ou une cible
- http-post-form : est le module de service que nous utilisons
- /Login.asp?RetURL=%2FDefault%2Easp%3F:tfUName=^USER^&tfUPass=^PASS^:S=logout = les 3 paramètres nécessaires, la syntaxe est :
{URL de la page} :{Request post body form parameters} :S={Trouvez n'importe quoi dans la page après vous être connecté avec succès} - v = Mode verbeux
- V = show login:pass pour chaque tentative
- F = Terminer le programme si la paire login:mot de passe est trouvée
Laissons maintenant hydra essayer de casser le mot de passe pour nous, il faut du temps car il s'agit d'une attaque par dictionnaire. Une fois que vous avez réussi à trouver une paire de login:password, hydra mettra immédiatement fin au travail et affichera les informations d'identification valides.
Il y a tellement de choses que hydra pourrait faire, puisque dans ce didacticiel, nous venons d'apprendre comment utiliser la force brute pour se connecter via le Web à l'aide d'hydra, nous n'apprenons qu'un seul protocole, à savoir le protocole http-post-form. Nous pouvons également utiliser hydra contre un autre protocole tel que ssh, ftp, telnet, VNC, proxy, etc.