Rappel : L’article qui va suivre contient des techniques et méthodes qui peuvent s’avérer être illégales et dangereuses si elles sont utilisées à mauvais escient. Ce tutoriel ne doit en aucun cas être utilisé contre un particulier, une entreprise, une organisation à but non lucratif ou une administration publique de quelconque pays. Je me dédouane de toute responsabilité en cas de problèmes ou d’incidents de quelque nature que ce soit après le visionnage de cet article.

Lors des tests d’intrusion, il n’est pas rare de tomber sur des fichiers de configurations de périphériques Cisco relativement ancien dans certains cas. Il peut s’agir d’une sauvegarde de configuration trouvée quelque part sur le réseau de l’entreprise audité, ou parfois d’élements connexes (schéma etc.)

La première chose que font les attaquants après avoir pénétré un appareil Cisco est d’extraire la configuration actuelle de l’appareil en exécutant show running-config. Ils recherchent généralement des informations sensibles telles que des noms d’identifiant, des hash de mot de passe, des détails de configuration du réseau, etc. Les informations d’identification sont toutefois la chose la plus intéressante à rechercher et au fil des ans.

Cisco a développé un certain nombre de méthodes différentes pour la gestion des mots de passe. D’où la notion type de mot de passe Cisco que je vous explique ci-dessous.

I. Types de mots de passe Cisco

Dans les sections suivantes, nous passerons en revue tous ces types de mots de passe par ordre du moins sécurisé (le plus facile à déchiffrer) au plus sécurisé (le plus difficile à déchiffrer) :

Voici un aperçu des différents « types » de mot de passe utilisé par Cisco

Par défaut, si-vous utilisez la commande enable password myPassword sans spécifier un algorithme de chiffrement, le mot de passe n’est même pas chiffré et il est affiché en clair dans la configuration.

Si l’administrateur est un peu plus avertit et sensibilisé un minimum à l’hygienne informatique, il activera le service password-encrypion. Celui-ci utilise le chiffrement de Vigenère qui est un simple algortythme par substitution alphabétique. Il est réversible et peut donc être déchiffré instantanément en texte clair sans qu’il soit nécessaire de le craquer. Donc ce n’est clairement plus une méthode à privilégier, même si encore beaucoup d’équipement son paramétrés dans ce sens là… Afin de vous sensibiliser, je démontre dans la section suivante comment il est facile de casser le chiffrement de Vignère avec un simple script python.

Switch(config)#enable password 123+aze
Switch(config)#service password-encryption

A. Casser un mdp utilisant le chiffrement de Vigenère

Suivez la procédure ci-dessous :

II. Bonnes pratiques

A. Utiliser « secret » à la place de « password » : enable secret !

enable secret 123+aze

La directive secret, utilise un hachage MD5 par défaut ce qui n’est plus, en 2022, considéré comme un hachage complexe. C’est déjà mieux que rien, surtout si votre mot de passe est très complexe, il sera compliqué à casser pour un attaquant, qui ne voudra pas y passer trop de temps. MAIS, cela ne sera plus suffisant à terme. Nous allons voir dans la section suivante comment changer de type d’algorithme.

Note 1 : le chiffrement MD5 est nativement salé sur IOS* (Cisco Internetwork Operating System), ce qui ajoute une couche de sécurité supplémentaire et augmente sa robustesse.

  • *Internetwork Operating System est une famille de systèmes d’exploitation de réseau utilisés sur de nombreux routeurs Cisco Systems et sur les commutateurs de réseau Cisco actuels. (source : wikipedia)

Note 2 : md5 n’est pas un chiffrement de type symétrique ou asymétrique car il n’est pas réversible. Il s’agit d’un algorithme de type « Message Digest » (hachage sécurisé). (Condensat en français).

Rappel de la notion de « sallage » – md5

B. Changer l’algorithme de chiffrement (uniquement sur des équipements non-simulés)

Quand je dis « non-simulé », j’entends par la que vous ne pourrez pas effectuer cette action sur le fameux logiciel Packet tracer.

Si vous avez un projet GNS3, ou un routeur / switch physique à portée de main, vous pouvez réaliser les commandes suivantes. (Sauf s’il est vraiment ancien et que son IOS* ne supporte pas les commandes suivantes) :

Dans mon cas, je peux utiliser les algorithmes de hachage suivant :

  • MD5
  • sha256 (avec une clé de dérivation PBKDF2)
  • SCRYPT

Je vais choisir de changer l’algorithme par défaut md5 pour l’algorithme scrypt qui est à l’heure actuelle (2022) considéré comme étant encore fiable et robuste.

Ici le petit piège à éviter est d’entrer la commande suivante :

L’IOS attend qu’on lui spécifie l’algorithme de hachage en amont via :

enable algorithm-type ?
enable algorithm-type scrypt 
# Puis réinstanciez votre mot de passe dans la configuration avec la même commande enable secret <password>
enable secret Cisco123!

Affichez de nouveau la configuration et vous verrez que le hash de votre password aura changé en fonction de l’algorithme de hachage choisit.

III. Authentification avancée – Pour aller plus loin…

L’authentification par le biais d’un serveur RADIUS couplé avec un serveur LDAP peut être très utile surtout si votre infrastructure est vaste et que plusieurs personnes doivent se connecter aux équipements. Cela vous permettra d’ajuster au mieux la granularité de l’authentification sur vos équipements.

MAIS ! À titre personnel (Déjà vécu), je vous déconseille de désactiver complétement l’authentification classique, au profit d’une authentification radius exclusive. Pourquoi ? Parce que si un jour votre serveur Radius venait à ne plus fonctionner, vous allez tout simplement vous « couper les pattes ». Vous ne pourrez plus vous connecter à votre équipement étant donné que celui-ci essayera de joindre le serveur Radius en vaint…

Garder un seul compte d’administration locale avec un mdp fort utilisant un algorithme robuste peut donc être très utile en cas de coup dure. (et vous éviter de créer un SPOF)

++

Geoffrey


Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"