Este capítulo repasa los diferentes tipos de contraseñas locales en una configuración Cisco IOS, su implementación y pruebas: Cisco Tipo 7, Tipo 5, Tipo 8, Tipo 4, Tipo 9.
Objetivos para Certificación CCNA 200-301
- Configurar el acceso a los dispositivos con contraseñas.
- Describir los elementos de las políticas de seguridad como la gestión, la complejidad y las alternativas a las contraseñas (autenticaciones multifactor, por certificados y biométricas).
Tabla de Contenido
Cifrado de Contraseñas Locales en Cisco IOS
Es una buena práctica dejar de usar el parámetro «password
» en las configuraciones Cisco IOS, ya que deja las credenciales en texto plano o en un algoritmo vulnerable. Este artículo repasa los diferentes tipos de contraseñas locales en una configuración Cisco IOS, su implementación y pruebas: Cisco Tipo 7, Tipo 5, Tipo 8, Tipo 4, Tipo 9.
Las demostraciones de prueba de contraseñas tienen solo un propósito educativo. Encontrarás una serie de recomendaciones de seguridad al final.
Objetivo del Cifrado de Contraseñas en las Configuraciones
El cifrado de contraseñas en las configuraciones tiene como objetivo proteger el dispositivo contra el acceso no autorizado a los archivos de configuración. De hecho, estos archivos contienen esas contraseñas. Los archivos de configuración se vuelven accesibles con un método de «Recuperación de Contraseña» para los routers o switches Cisco.
Lee también: ¿Qué Hacer en Caso de Pérdida de Contraseña en Cisco?
Contraseñas en Texto Plano
El parámetro de comando password
debe evitarse porque las contraseñas codificadas aparecen en texto plano en la configuración del router o switch Cisco. Esto es lo que NO debes hacer en un entorno de producción.
Para establecer una contraseña de acceso al modo privilegiado y a una consola Telnet, o para crear un usuario:
(config)#enable password mi_contraseña
(config)#line vty 0 4
(config-line)#password mi_contraseña
(config-line)#login
(config-line)#transport input telnet
(config-line)#exit
(config)#username admin password mi_contraseña
(config)#exit
Con estos métodos, las contraseñas locales se muestran en la configuración:
#show run | include password
no service password-encryption
enable password mi_contraseña
username admin password 0 mi_contraseña
password mi_contraseña
Contraseñas Cisco Tipo 7
El comando service password-encryption
cifra las contraseñas en texto plano (del comando password
) en «Tipo 7».
(config)#service password-encryption
(config)#exit

Este es el resultado en la configuración:
R1#show run | include password
service password-encryption
enable password 7 0309540539022E58710D1C3A0713181F01
username admin password 7 1104160B281F04183B2E2E1B3832263116
password 7 08224F40081D0004160E0F013824
Rompiendo Contraseñas Cisco Tipo 7: Ver contraseña cifrada cisco
Pero estas contraseñas están cifradas de forma débil y son fáciles de decodificar o descifrar.
En realidad, el cifrado de «Tipo 7» se conoce desde 1995 y solo sirve para protegerse de ataques de escucha («eavesdropping«). El algoritmo Cisco «Tipo 7» es una implementación del algoritmo de cifrado Vigenère.
Otra forma de decodificar es usar también el método «Key Chain» directamente en el IOS.
Ciframos la contraseña «Tipo 7» en un llavero:
(config)#key chain recovery
(config-keychain)#key 1
(config-keychain-key)#key-string 7 08224F40081D0004160E0F013824
(config-keychain-key)#exit
(config-keychain)#exit
(config)#exit
Y luego lo mostramos:
#show key chain recovery
Key-chain recovery:
key 1 -- text "mi_contraseña"
accept lifetime (always valid) - (always valid) [valid now]
send lifetime (always valid) - (always valid) [valid now]
secret
versus password
Las contraseñas locales se pueden cifrar con un algoritmo de cifrado asimétrico (MD5, SHA-256 o SCRYPT). Con este tipo de cifrado, se vuelve costoso intentar recuperar contraseñas. Pero ten cuidado, la fuerza del algoritmo no es suficiente. La contraseña debe ser resistente a un ataque de diccionario o de tipo «fuerza bruta«.
- Tipo 5: MD5
- Tipo 8: PBKDF2, SHA-256, salt de 80 bits, 20000 iteraciones.
- Tipo 9: SCRYPT, salt de 80 bits, 16384 iteraciones.
Se recomienda usar Tipo 9 (SCRYPT) en IOS 15.3(3) o superior, o Tipo 8 si SCRYPT no está disponible. Evita el Tipo 5 (MD5) y el Tipo 4, ya que son menos seguros.
(config)#enable algorithm-type ?
md5 Encode the password using the MD5 algorithm
scrypt Encode the password using the SCRYPT hashing algorithm
sha256 Encode the password using the PBKDF2 hashing algorithm
¿Qué sucede cuando un enable secret
y enable password
son concurrentes?
Deben ser diferentes. Un enable secret
siempre tiene prioridad.
Creación de Contraseñas «secret»
Para la autenticación de usuarios locales en consolas remotas:
(config)#line vty 0 4
(config-line)#login local
(config-line)#transport input ssh
(config-line)#exit
En MD5:
(config)#username alex secret testtest
(config)#do sh run | include username
username alex secret 5 $1$u0QO$.0MBNApYeIoT26TDahoim1
¿Cuáles son las otras posibilidades?
(config)#username alex algorithm-type ?
md5 Encode the password using the MD5 algorithm
scrypt Encode the password using the SCRYPT hashing algorithm
sha256 Encode the password using the PBKDF2 hashing algorithm
En SHA-256:
(config)#username alex algorithm-type sha256 secret testtest
(config)#do sh run | include username
username alex secret 8 $8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
En Scrypt:
(config)#username alex algorithm-type scrypt secret testtest
(config)#do sh run | include username
username alex secret 9 $9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
Probar la Fuerza de las Contraseñas Cisco IOS
En una estación Kali Linux, se pueden usar las huellas de contraseñas para realizar ataques:
root@KaliLinuxCLI:/# cat type5.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
root@KaliLinuxCLI:/# cat type8-sha256.txt
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
root@KaliLinuxCLI:/# cat type9-scrypt.txt
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
Composición de una Huella de Contraseña
root@KaliLinuxCLI:/# cat *.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
En este ejemplo, una huella de contraseña está compuesta por 3 elementos separados por el signo $:
- El tipo de cifrado. Aquí: $1$, $8$, $9$.
- La sal que hace que la huella sea única.
- La huella en sí misma.
Rompiendo con John
Con nuestra contraseña muy débil testtest
, el resultado es inmediato en MD5.
root@KaliLinuxCLI:/# john ./type5.txt
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ [MD5 128/128 SSE2 4x3])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type5)
1g 0:00:00:00 DONE 2/3 (2017-09-25 22:06) 2.702g/s 10889p/s 10889c/s 10889C/s tata..toucan
Use the "--show" option to display all of the cracked passwords reliably
Session completed
63 segundos en «Tipo 8», pero esto se debe a la contraseña muy débil.
root@KaliLinuxCLI:/# john ./type8-sha256.txt
Using default input encoding: UTF-8
Loaded 1 password hash (PBKDF2-HMAC-SHA256 [PBKDF2-SHA256 128/128 SSE2 4x])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type8)
1g 0:00:01:03 DONE 2/3 (2017-09-25 22:09) 0.01580g/s 63.53p/s 63.53c/s 63.53C/s tata..testtest
Use the "--show" option to display all of the cracked passwords reliably
Session completed
29 segundos en «Tipo 9», siempre debido a una contraseña débil.
root@KaliLinuxCLI:/# john ./type9-scrypt.txt
Using default input encoding: UTF-8
Loaded 1 password hash (scrypt [Salsa20/8 128/128 SSE2])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type9)
1g 0:00:00:29 DONE 2/3 (2017-09-25 22:11) 0.03338g/s 134.2p/s 134.2c/s 134.2C/s testtest
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Recomendaciones sobre las Contraseñas Locales en Cisco IOS
- Usar contraseñas fuertes (diversificadas, largas, aleatorias).
- Usar la palabra clave
secret
en lugar depassword
en las configuraciones. - Usar contraseñas de Tipo 9 cuando sea posible.
- Usar una autenticación centralizada AAA Radius o TACACS+ (según el tamaño de la infraestructura).
- Uso de roles o vistas con delegación de derechos.
- La desactivación de Telnet, FTP, TFTP como protocolos de gestión.
- Usar SSH con autenticación por clave.
- Desactivar la función «recuperación de contraseña».
- Evita el Tipo 4, ya que un error en su implementación lo hace menos seguro que el Tipo 5.
- Monitorea y actualiza regularmente las versiones de IOS para mitigar vulnerabilidades.
Lee también: Cómo Establecer una Contraseña en Equipo Cisco