En esta guía, repasaremos los tipos de contraseñas de Cisco que se pueden encontrar en dispositivos de red basados en Cisco IOS. Cubriremos todos los tipos de contraseñas comunes de Cisco (0, 4, 5, 7, 8 y 9) y proporcionaremos instrucciones sobre cómo descifrarlas o descifrarlas utilizando descifradores de contraseñas populares de código abierto como John the Ripper o Hashcat.
Durante las pruebas de penetración, no es raro encontrarse con un archivo de configuración de un dispositivo de red Cisco. Puede ser una copia de seguridad de configuración que se encuentra en algún lugar de alguna computadora en la red. Puede ser una salida de registro de consola (por ejemplo, de PuTTY) que contiene fragmentos de configuración de Cisco. O simplemente podemos entrar en algún dispositivo Cisco configurado con credenciales predeterminadas.
Lo primero que hacen los atacantes después de obtener acceso a un dispositivo Cisco es extraer la configuración actual del dispositivo, ya sea ejecutando el comando show running
o show running-config
. Los atacantes típicamente buscan información sensible como credenciales almacenadas, cadenas de comunidad SNMP, detalles de configuración de red, etc.
Las credenciales son naturalmente lo más interesante para buscar y a lo largo de los años, Cisco ha desarrollado varios métodos diferentes para almacenar contraseñas en sus dispositivos. De ahí el nombre de tipo de contraseña de Cisco.
Tipos Comunes de Contraseñas de Cisco
En las siguientes secciones, repasaremos todos estos tipos de contraseñas en orden de menor seguridad (más fácil de descifrar) a mayor seguridad (más difícil de descifrar):
Contraseña Cisco | Facilidad de descifrado | Mejor velocidad | John the Ripper | Hashcat |
---|---|---|---|---|
Tipo 0 | instantáneo | instantáneo | n/a | n/a |
Tipo 7 | instantáneo | instantáneo | n/a | n/a |
Tipo 4 | fácil | 26,4 millones por segundo | --format=Raw-SHA256 | -m 5700 |
Tipo 5 | medio | 1,2 millones por segundo | --format=md5crypt | -m 500 |
Tipo 8 | difícil | 11,6 mil por segundo | --format=pbkdf2-hmac-sha256 | -m 9200 |
Tipo 9 | muy difícil | 1,8 mil por segundo | --format=scrypt | -m 9300 |
Descargo de responsabilidad: Todos los ejemplos y mediciones de velocidad en este artículo se produjeron en una laptop moderna estándar equipada con una GPU y 4 núcleos de CPU.
Vayamos directo al grano.
Contraseña Cisco tipo 0
La contraseña de tipo 0 de Cisco es básicamente una contraseña de texto sin formato. No hay cifrado ni ofuscación. Es el método más antiguo e inseguro para almacenar contraseñas en dispositivos Cisco. Nunca debería usarse.
El siguiente ejemplo muestra una contraseña tipo 0 encontrada en una configuración de Cisco:
username admin privilege 15 password 0 P@ssw0rd
Esta línea configura un usuario llamado “admin” en un dispositivo Cisco, le otorga el nivel de privilegio más alto y establece la contraseña como “P@ssw0rd” almacenada en texto plano.
Como puedes ver, realmente no hay nada que descifrar. Podemos ver claramente que el usuario admin tiene una contraseña P@ssw0rd
.
Contraseña Cisco tipo 7
Este tipo de contraseña utiliza el cifrado Vigenère, que es esencialmente un simple cifrado de sustitución alfabética. El algoritmo es reversible y, por lo tanto, se puede descifrar instantáneamente a texto sin formato sin necesidad de descifrado.
El siguiente ejemplo muestra una contraseña tipo 7 encontrada en una configuración de Cisco:
username admin privilege 15 password 7 0236244818115F3348
Descifrar contraseña de Cisco tipo 7
Hay varias herramientas disponibles gratuitamente para descifrar la contraseña tipo 7. Aquí hay algunos ejemplos:
https://www.question-defense.com/2011/08/17/perl-script-to-decode-cisco-type-7-password-hash
https://gist.github.com/jayswan/1927995
https://github.com/theevilbit/ciscot7
Por ejemplo, para descifrar la contraseña tipo 7 anterior usando el script Python Ciscot7, simplemente ejecuta:
wget https://raw.githubusercontent.com/theevilbit/ciscot7/master/ciscot7.py
python ciscot7.py -d -p 0236244818115F3348
Podemos ver instantáneamente que la contraseña es P@ssw0rd
.
También hay numerosos descifrados en línea para este tipo de contraseña. Pero desaconsejamos enérgicamente usar cualquiera de ellos para evitar divulgar información confidencial del cliente (credenciales) a terceros.
https://www.ifm.net.nz/cookbooks/passwordcracker.html
https://packetlife.net/toolbox/type7/
https://www.m00nie.com/type-7-password-tool/
Contraseña Cisco tipo 4
Este tipo de contraseña fue diseñado alrededor de 2013 y el plan original era utilizar el algoritmo PBKDF2 (Password-Based Key Derivation Function versión 2). Pero debido a un problema de implementación, terminó siendo una mera iteración única de SHA256 sin sal.
El siguiente ejemplo muestra una contraseña tipo 4 encontrada en una configuración de Cisco:
username admin secret 4 ds4zcEBHQMiiscBff5JmSaUctdI8fVdmGU18HAtxOCw
Descifrar contraseñas Cisco tipo 4 con John
John the Ripper reconoce este tipo de contraseña como Raw-SHA256. Para descifrarla, primero debemos convertirla al siguiente formato compatible con John y guardarla en un archivo:
admin:ds4zcEBHQMiiscBff5JmSaUctdI8fVdmGU18HAtxOCw
Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
john --format=Raw-SHA256 --wordlist=/usr/share/wordlists/rockyou.txt --fork 4 password.txt
Ten en cuenta que dado el número de núcleos de CPU, podemos ejecutar john en esas instancias usando el parámetro --fork
. En el ejemplo coloqué 4, pero mi ordenador mi permite hasta 12, así aprovechamos todos los núcleos disponibles.
Desde la captura de pantalla anterior, podemos ver que la velocidad promedio es de alrededor de 39.5 millones de intentos de contraseña por segundo.
Descifrar contraseñas Cisco tipo 4 con Hashcat
Hashcat reconoce este tipo de contraseña como modo hash 5700
. Para descifrarla, podemos seguir usando el mismo formato compatible con John. Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
hashcat -m 5700 --username -O -a 0 password.txt /usr/share/wordlists/rockyou.txt
Ten en cuenta que al usar el parámetro -O
(núcleos optimizados), aumentaremos significativamente la velocidad. Pero también limitará la longitud de la contraseña a 31 caracteres.
Desde la captura de pantalla anterior, podemos ver que la velocidad promedio es de alrededor de 3.6 millones de intentos de contraseña por segundo. Parece que descifrar este hash con john es mucho más rápido en nuestro caso.
Contraseña Cisco tipo 5
Este tipo de contraseña se introdujo alrededor de 1992 y es esencialmente una iteración de hash MD5 de 1,000 veces con sal. La sal tiene 4 caracteres de longitud (32 bits). Para las computadoras modernas, esto no es lo suficientemente difícil y, por lo tanto, en muchos casos puede ser descifrada con éxito.
El siguiente ejemplo muestra una contraseña de tipo 5 encontrada en una configuración de Cisco:
username admin secret 5 $1$jUfy$2TVVXJ8sy.KO8ZhAKfIHt/
Descifrar contraseñas Cisco tipo 5 con John
John the Ripper reconoce este tipo de contraseña como md5crypt
. Para descifrarla, primero debemos convertirla nuevamente al siguiente formato compatible con John y guardarla en un archivo:
admin:$1$jUfy$2TVVXJ8sy.KO8ZhAKfIHt/
Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
john --format=md5crypt --fork=4 --wordlist=/usr/share/wordlists/rockyou.txt password.txt
Desde la captura de pantalla anterior, podemos ver que la velocidad promedio es de alrededor de 430 mil intentos de contraseña por segundo.
Descifrar contraseñas Cisco tipo 5 con Hashcat
Hashcat reconoce este tipo de contraseña como modo hash 500
. Para descifrarla, podemos seguir usando el mismo formato compatible con John. Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
hashcat -m 500 --username -O -a 0 password.txt /usr/share/wordlists/rockyou.txt
Ten en cuenta que utilizando el parámetro -O
(núcleos optimizados), aumentaremos mucho la velocidad. Pero también limitará la longitud de la contraseña a 31 caracteres.
Contraseña Cisco tipo 8
Este tipo de contraseña es una implementación adecuada del tipo de contraseña 4 fallido. Esta vez realmente utiliza el algoritmo PBKDF2 y una sal de 10 caracteres (80 bits). Básicamente, son 20,000 iteraciones de SHA256 y esto hace que sea mucho más difícil de descifrar en comparación con los tipos de contraseñas anteriores.
El siguiente ejemplo muestra una contraseña de tipo 8 encontrada en una configuración de Cisco:
username admin secret 8 $8$dsYGNam3K1SIJO$7nv/35M/qr6t.dVc7UY9zrJDWRVqncHub1PE9UlMQFs
Descifrar contraseñas Cisco tipo 8 con John
John the Ripper reconoce este tipo de contraseña como pbkdf2-hmac-sha256. Para descifrarla, primero debemos convertirla nuevamente al siguiente formato compatible con John y guardarla en un archivo:
admin:$8$dsYGNam3K1SIJO$7nv/35M/qr6t.dVc7UY9zrJDWRVqncHub1PE9UlMQFs
Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
john --format=pbkdf2-hmac-sha256 --fork=4 --wordlist=/usr/share/wordlists/rockyou.txt password.txt
Descifrar contraseñas Cisco tipo 8 con Hashcat
Hashcat reconoce este tipo de contraseña como modo hash 9200. Para descifrarla, podemos seguir usando el mismo formato compatible con John. Luego podemos descifrarla de esta manera usando un diccionario, por ejemplo:
hashcat -m 9200 --username -a 0 password.txt /usr/share/wordlists/rockyou.txt
Contraseña Cisco tipo 9
Este tipo de contraseña utiliza el algoritmo Scrypt. Scrypt fue diseñado específicamente para dificultar su descifrado incluso en plataformas de descifrado a gran escala con muchas GPU o ASIC de hardware. Esto se debe al hecho de que Scrypt requiere una gran cantidad de memoria para realizar su función.
El siguiente ejemplo muestra una contraseña de tipo 9 encontrada en una configuración de Cisco:
username admin secret 9 $9$nhEmQVczB7dqsO$X.HsgL6x1il0RxkOSSvyQYwucySCt7qFm4v7pqCxkKM
Descifrar contraseñas Cisco tipo 9 con John
John the Ripper reconoce este tipo de contraseña como scrypt. Para descifrarla, primero debes convertirla al siguiente formato compatible con John y guardarla en un archivo:
admin:$9$nhEmQVczB7dqsO$X.HsgL6x1il0RxkOSSvyQYwucySCt7qFm4v7pqCxkKM
Luego puedes descifrarla de esta manera usando un diccionario, por ejemplo:
john --format=scrypt --fork=4 --wordlist=/usr/share/wordlists/rockyou.txt password.txt
Descifrar contraseñas Cisco tipo 9 con Hashcat
Hashcat reconoce este tipo de contraseña como modo hash 9300. Para descifrarla, puedes seguir usando el mismo formato compatible con John. Luego puedes descifrarla de esta manera usando un diccionario, por ejemplo:
hashcat -m 9300 --username -a 0 --force password.txt /usr/share/wordlists/rockyou.txt
Ten en cuenta que debes proporcionar el parámetro –force ya que el modo hash 9300 está marcado como inestable para tu dispositivo en particular.
Consejos para Descifrar Contraseñas
Usa las reglas personalizadas de KoreLogic
John the Ripper contiene un conjunto de reglas muy útil para generar contraseñas llamado KoreLogic. Este conjunto de reglas se originó en el concurso DEFCON 2010 y es una excelente forma de generar contraseñas a partir de patrones o cuando falla el ataque tradicional con diccionario.
Para usarlo, simplemente crea un diccionario con patrones como este, por ejemplo:
es
esgeeks
es geeks
Guárdalo en un archivo llamado patterns.txt
. Luego, simplemente ejecuta John de esta manera:
john --wordlist=patterns.txt --rules=korelogic …
Encadena John the Ripper con Hashcat
Aunque se han realizado algunos esfuerzos para convertir las reglas de KoreLogic mencionadas anteriormente en Hashcat, el resultado es solo parcial. Afortunadamente, podemos encadenar John the Ripper con Hashcat para que use las reglas de KoreLogic en su totalidad.
Simplemente genera las contraseñas usando John the Ripper en la salida estándar y pásalas a Hashcat usando pipe como esta:
john --wordlist=patterns.txt --rules=korelogic --stdout | hashcat ...
El mismo método se puede utilizar para cualquier conjunto de reglas que hayamos creado en el formato John.
Esperamos que puedas descifrar algunos hashes de Cisco con estos consejos.
Si te gusta esta guía y quieres más, suscríbete a nuestra lista de correo y síguenos en Twitter y Facebook para recibir notificaciones sobre nuevas publicaciones.
Referencias
https://learningnetwork.cisco.com/s/article/cisco-routers-password-types
https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20130318-type4
https://community.cisco.com/t5/networking-documents/understanding-the-differences-between-the-cisco-password-secret/ta-p/3163238