En Une :

Mots de passes locaux en cisco IOS

Il est de bonne pratique aujourd'hui de ne plus utiliser le paramètre "password" dans les configurations Cisco IOS car il laisse les crédits en clair ou dans un algorithme vulnérable. Cet article reprend les différents types de mots de passe locaux dans une configuration Cisco IOS, leur mise en place et des tests d'épreuve : Cisco Type 7, Type 5, Type 8, Type 4, Type 9.

Les démonstration d'épreuve de mots de passe ont seulement un but éducatif. On trouvera une série de recommandation de sécurité en conclusion du propos.

1. Objectif du chiffrement des mots de passe dans les configurations

Le chiffrement des mots de passe dans les configurations vise à protéger le périphérique contre un accès non autorisé aux fichiers de configuration. En effet, ils contiennent ces mots de passe. Les fichiers de configuration deviennent accessibles avec une méthode "password recovery".

2. Mots de passe en clair

Le paramètre de commande password est à bannir car les mots de passe encodés apparaissent en clair dans la configuration du routeur ou du commutateur Cisco. Voici donc ce qu'il ne faut surtout pas faire en situation de production.

Pour fixer un mot de passe d'accès au mode privilège et à une console Telnet, ou pour créer un utilisateur :

(config)#enable password mon_mot_de_passe
(config)#line vty 0 4
(config-line)#password mon_mot_de_passe
(config-line)#login
(config-line)#transport input telnet
(config-line)#exit
(config)#username admin password mon_mot_de_passe
(config)#exit

Avec ces méthodes les mots de passe locaux s'affichent dans la configuration :

#show run | include password
no service password-encryption
enable password mon_mot_de_passe
username admin password 0 mon_mot_de_passe
 password mon_mot_de_passe

3. Mots de passe Cisco Type 7

La commande service password-encryption chiffre les mots de passe en clair (de la commande password) en "Type 7".

(config)#service password-encryption
(config)#exit                       

Voici le résultat dans la configuration.

R1#show run | include password
service password-encryption
enable password 7 0309540539022E58710D1C3A0713181F01
username admin password 7 1104160B281F04183B2E2E1B3832263116
 password 7 1308181C34010B3E14202D0C2523001413

4. Casser des mots de passe Cisco Type 7

Mais ces mots de passe sont chiffrés de manière faible et sont faciles à décoder :


En réalité, le chiffrement de "Type 7" est connu depuis 1995 et n'a pour d'autre but que de se protéger d'attaques contre des regards indiscrets ("eavesdropping"). L'algorithme Cisco "Type 7" est une implémentation de l'algorithme de Vigenere.

Une autre manière de décoder est d'utiliser aussi la méthode "Key Chain" directement dans l'IOS (Merci à Steve De Jongh).

  • On encode le mot de passe "Type 7" dans un trousseau de clés :
(config)#key chain recovery
(config-keychain)#key 1
(config-keychain-key)#key-string 7 1308181C34010B3E14202D0C2523001413
(config-keychain-key)#exit
(config-keychain)#exit
(config)#exit

  • Et puis on l'affiche :
#show key chain recovery
Key-chain recovery:
    key 1 -- text "mon_mot_de_passe"
        accept lifetime (always valid) - (always valid) [valid now]
        send lifetime (always valid) - (always valid) [valid now]

5. Secret versus password

Les mots de passe locaux peuvent être chiffrés avec un algorithme de chiffrement asymétrique (MD5, SHA-256 ou SCRYPT). Avec ce type de chiffrement, il devient coûteux de tenter de retrouver des mots de passe. Mais attention, la force de l'algorithme ne suffit pas. Faut-il que le mot de passe soit résistant à une attaque par dictionnaire ou de type "Brute Force".

  • Type 5 : MD5
  • Type 8[1] : PBKDF2, SHA-256, salt de 80 bits, 20000 iterations.
  • Type 9 : SCRYPT, salt de 80 bits, 16384 iterations.

On recommandera d'utiliser le "Type 8" ou le "Type 9" quand c'est possible (IOS IOS 15.3(3) minimum) alors que le "Type 5" est utilisé par défaut. MD5 est également à éviter aujourd'hui.

(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

Que se passe-t-il quand un enable secret et enable password sont concurrents ?

  • Ils doivent être différents.
  • Un enable secret est toujours prioritaire.

6. Création des mots de passe "secret"

Pour une authentification des utilisateurs locaux dans les consoles distantes :

(config)#line vty 0 4
(config-line)#login local
(config-line)#transport input ssh
(config-line)#exit

En MD5 :

(config)#username francois secret testtest
(config)#do sh run | include username
username francois secret 5 $1$u0QO$.0MBNApYeIoT26TDahoim1

Quelles sont les autres possibilités ?

(config)#username francois 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 francois algorithm-type sha256 secret testtest
(config)#do sh run | include username                           
username francois secret 8 $8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k

En Scrypt :

(config)#username francois algorithm-type scrypt secret testtest
(config)#do sh run | include username                           
username francois secret 9 $9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk

7. Tester la force des mots de passe Cisco IOS

Dans une station Kali Linux, on reprend les empreintes dans des fichiers à attaquer.

[email protected]:/# cat type5.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
[email protected]:/# cat type8-sha256.txt
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
[email protected]:/# cat type9-scrypt.txt
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk

8. Composition d'une empreinte de mot de passe

[email protected]:/# cat *.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk

Dans cet exemple, une empreinte de mot de passe est composée de 3 éléments séparé par le signe $ :

  • Le type de chiffrement. Ici : $1$, $8$, $9$.
  • Le Salt qui rend l'empreinte unique.
  • L'empreinte elle-même.

9. Cassage avec john

Avec notre mot de passe très faible testtest, le résultat est immédiat en MD5.

[email protected]:/# 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 secondes en "Type 8" mais cela tient au mot de passe très faible.

[email protected]:/# 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 secondes en "Type 9" toujours à cause d'un mot de passe faible.

[email protected]:/# 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

10. Recommandations sur les mots de passe locaux en Cisco IOS

  • Utiliser des mots de passe forts (diversifiés, longs, aléatoires).
  • Utiliser le mot-clé secret au lieu de password dans les configurations.
  • Utiliser des mots de passe de Type 9 quand c'est possible.
  • Utiliser un authentification centralisée AAA Radius ou TACACS+ (selon la taille de l'infrastructure).
  • Usage des rôles ou des vues avec délégation des droits.
  • La désactivation de Telnet, FTP, TFTP comme protocoles de gestion.
  • Utiliser SSH avec une authentification par clé.
  • Désactiver la fonctionnalité "password recovery".

  1. Le "Type 4" utilise aussi SHA-256 mais est plus vulnérable que MD5 (Cisco IOS and Cisco IOS XE Type 4 Passwords Issue). ↩︎

Author image
Francois Goffinet est formateur Cisco Systems depuis 2002. Passionné des technologies des réseaux, de virtualisation et en nuage, Web et de cybersécurité souvent en Open Source ou Unix-Like, devops.