the_open_door
café
ESEN
← Volver al índice

Cracking /etc/shadow

ATT&CKT1110.002
Arsenal completo de comandos en la cheatsheet

En Linux las contraseñas no se guardan en claro: el fichero /etc/shadow contiene, por usuario, el hash de la contraseña. Solo es legible por root, así que poder leerlo (porque tienes una shell de root, estás en un contenedor privilegiado o has aprovechado una lectura arbitraria de ficheros) es ya un premio: permite crackear offline las contraseñas y reutilizarlas en otros sitios.

El formato de cada línea es usuario:$id$salt$hash:.... El $id indica el algoritmo:

Para crackearlo con john conviene primero combinar /etc/passwd y /etc/shadow con unshadow, que produce un fichero donde cada usuario va junto a su hash. Luego se ataca con un diccionario:

unshadow /etc/passwd /etc/shadow > unshadowed.txt
john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
john --show unshadowed.txt          # mostrar lo crackeado

# equivalente con hashcat, eligiendo el modo por prefijo del hash
hashcat -m 500  hash.txt /usr/share/wordlists/rockyou.txt   # $1$  md5crypt
hashcat -m 7400 hash.txt /usr/share/wordlists/rockyou.txt   # $5$  sha256crypt
hashcat -m 1800 hash.txt /usr/share/wordlists/rockyou.txt   # $6$  sha512crypt
hashcat -m 3200 hash.txt /usr/share/wordlists/rockyou.txt   # $2b$ bcrypt

La contraseña recuperada se prueba a continuación por SSH y en cualquier otro servicio: el valor real de crackear /etc/shadow está en la reutilización de credenciales que suele seguir (por ejemplo, salir de un contenedor hacia el host con el mismo usuario y contraseña).

Cómo detectarlo. El crackeo es offline (invisible), así que la detección está en la lectura del /etc/shadow, no en el crack. Con auditd y una watch rule sobre /etc/shadow (-w /etc/shadow -p r -k shadow_read), cualquier acceso de lectura que no venga de los procesos legítimos (login, sshd, passwd, unix_chkpwd) queda registrado: un cat/cp/unshadow sobre el fichero, o su lectura por el proceso de una aplicación web (LFI), es la señal. Después, la contraseña recuperada se delata al reutilizarse: un login SSH (sshd en /var/log/auth.log) de esa cuenta desde una IP nueva. La lectura no autorizada de /etc/shadow es el evento a cazar.

Defensa. Proteger la lectura de /etc/shadow (que solo root lo lea), usar contraseñas largas y únicas que no estén en diccionarios, algoritmos modernos (yescrypt) y no reutilizar la misma clave entre el contenedor y el host.

HerramientasJohn the Ripperhashcat

Máquinas donde se aplica