Ok, digamos que entras a un servidor, lo ideal sería encontrar passwords en texto (cleartext) pero no siempre es así de maravilloso, algunas veces solo ves un hash.
Que es un hash Ricardo? Una función criptográfica hash- usualmente conocida como “hash”- es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.
Actualmente todos los passwords deberían estar en un hash.
Es importante que puedas manipular texto, para eso necesitas regex. Un lugar bueno para aprender es regexone.
Si quieres un cheat sheet puedes usar https://www.unix-ninja.com/p/A_cheat-sheet_for_password_crackers.
Para generar listas puedes usar
- Cewl. Es un generador de wordlists basado en una página web
- Wordsmith: Lo de arriba más ciudades
- Dirb (gendict es como Crunch y html2dic es como Cewl)
- Crunch genera con bruteforce todo.
- Pack es para generar estadísticas de los passwords.
StatsGen #.#.# | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Analyzing passwords in [rockyou.txt] [+] Analyzing 100% (14344390/14344390) of passwords NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords [*] Length: [+] 8: 20% (2966037) [+] 7: 17% (2506271) [+] 9: 15% (2191039) [+] 10: 14% (2013695) [+] 6: 13% (1947798) ... [*] Character-set: [+] loweralphanum: 42% (6074867) [+] loweralpha: 25% (3726129) [+] numeric: 16% (2346744) [+] loweralphaspecialnum: 02% (426353) [+] upperalphanum: 02% (407431) ... [*] Password complexity: [+] digit: min(0) max(255) [+] lower: min(0) max(255) [+] upper: min(0) max(187) [+] special: min(0) max(255) [*] Simple Masks: [+] stringdigit: 37% (5339556) [+] string: 28% (4115314) [+] digit: 16% (2346744) [+] digitstring: 04% (663951) [+] othermask: 04% (576324) ... [*] Advanced Masks: [+] ?l?l?l?l?l?l?l?l: 04% (687991) [+] ?l?l?l?l?l?l: 04% (601152) [+] ?l?l?l?l?l?l?l: 04% (585013) [+] ?l?l?l?l?l?l?l?l?l: 03% (516830) [+] ?d?d?d?d?d?d?d: 03% (487429)
La herramienta para hacerlo ya que tienes un wordlist es John the Ripper
root@kali:~# john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt" Use the "--format=crypt" option to force loading these as that type instead Loaded 1 password hash (sha512crypt [64/64]) toor (root) guesses: 1 time: 0:00:00:07 DONE (Mon May 19 08:13:05 2014) c/s: 482 trying: 1701d - andrew Use the "--show" option to display all of the cracked passwords reliably
Hashcat es para cuando tienes buen GPU por ejemplo
sudo ./hashcat64.bin -m [type of hash] [dumpIn.txt] --username rock3.txt --rules-file/[rules] --porfile-path=[location of the cracked hashes] --show > [text file of results]
Puedes contar el numero de hashes para saber cuantos son en total y cuantos son los passwords que crackeaste si cuentas el POT y cuantos usuarios crackeaste (porque podrian al menos en teoria usar el mismo password) si exportas los results.
count lines wc -l foo
Como nota el core del GPU es mas lento que los cores del CPU. La diferencia es que en GPU son muchos.
Hace poco use uno que era impresionantemente rapido. Hicimos tres pruebas para aprox 1500 passwords reales.
Rule | Tiempo en minutos | Hashtype | Crackeados |
InsidePro-HashManager | .5 | NTLM | 344 |
dive.rule | 7 | NTLM | 428 |
OneRuleToRuleThemAll | 5 | NTLM | 415 |
Es muy interesante la forma en que operan las reglas de hashcats. Las reglas modifican los diccionarios por ejemplo:
Name | Function | Description | Example Rule | Input Word | Output Word | Note |
---|---|---|---|---|---|---|
Nothing | : | do nothing | : | p@ssW0rd | p@ssW0rd | |
Lowercase | l | Lowercase all letters | l | p@ssW0rd | p@ssw0rd | |
Uppercase | u | Uppercase all letters | u | p@ssW0rd | P@SSW0RD | |
Capitalize | c | Capitalize the first letter and lower the rest | c | p@ssW0rd | P@ssw0rd | |
Invert Capitalize | C | Lowercase first found character, uppercase the rest | C | p@ssW0rd | p@SSW0RD | |
Toggle Case | t | Toggle the case of all characters in word. | t | p@ssW0rd | P@SSw0RD | |
Toggle @ | TN | Toggle the case of characters at position N | T3 | p@ssW0rd | p@sSW0rd | * |
Reverse | r | Reverse the entire word | r | p@ssW0rd | dr0Wss@p | |
Duplicate | d | Duplicate entire word | d | p@ssW0rd | p@ssW0rdp@ssW0rd | |
Duplicate N | pN | Append duplicated word N times | p2 | p@ssW0rd | p@ssW0rdp@ssW0rdp@ssW0rd | |
Reflect | f | Duplicate word reversed | f | p@ssW0rd | p@ssW0rddr0Wss@p | |
Rotate Left | { | Rotates the word left. | { | p@ssW0rd | @ssW0rdp |
Un buen video para aprender es