Diseño digital que muestra un candado de seguridad y asteriscos, con el texto "Ver Contraseña Cifrada Cisco IOS" en rojo, sobre un fondo oscuro con las manos de una persona tecleando en una laptop, simbolizando la seguridad de la red.
Aprende a verificar y comprender el cifrado de contraseñas en Cisco IOS. ¡Una guía esencial para administradores de red!

Ver Cifrado de Contraseñas Cisco IOS: Guía Completa de Seguridad

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).

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
Captura de pantalla de la CLI de un router Cisco mostrando la configuración del cifrado de contraseñas de tipo 7 y la habilitación de una contraseña cifrada ("ccnadesdecero").
Comprende qué es la contraseña Tipo 7 en Cisco IOS y cómo se utiliza para cifrar contraseñas de configuración en tus routers.

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

  1. Usar contraseñas fuertes (diversificadas, largas, aleatorias).
  2. Usar la palabra clave secret en lugar de password en las configuraciones.
  3. Usar contraseñas de Tipo 9 cuando sea posible.
  4. Usar una autenticación centralizada AAA Radius o TACACS+ (según el tamaño de la infraestructura).
  5. Uso de roles o vistas con delegación de derechos.
  6. La desactivación de Telnet, FTP, TFTP como protocolos de gestión.
  7. Usar SSH con autenticación por clave.
  8. Desactivar la función «recuperación de contraseña».
  9. Evita el Tipo 4, ya que un error en su implementación lo hace menos seguro que el Tipo 5.
  10. Monitorea y actualiza regularmente las versiones de IOS para mitigar vulnerabilidades.

Lee también: Cómo Establecer una Contraseña en Equipo Cisco