Sélectionner une page


Vers la fin de 2020, un chercheur de la société néerlandaise de cybersécurité EYE regarde quelque chose sur le firmware d’un routeur réseau Zyxel.

Il a examiné la base de données de mots de passe fournie avec le micrologiciel et a remarqué un nom d’utilisateur inhabituel provenant de zyfwp.

Ce nom n’apparaissait pas dans la liste officielle des noms d’utilisateurs affichés sur l’interface utilisateur du routeur.

… Même ainsi, il y avait un hachage de mot de passe dans la base de données elle-même, ce qui était intéressant en soi.

Expliquer.

Les produits Zyxel sont basés sur Linux, et les noms d’utilisateur et mots de passe Linux sont généralement divisés en deux fichiers pour des raisons de sécurité.

Le fichier /etc/passwd est généralement lisible dans le monde entier et contient une liste d’utilisateurs connus, par ex.


root:x:0:0::/root:/bin/slash
bin:x:1:1::/bin:/bin/false
nobody:x:999:999::/nowhere:/bin/false
duck:x:1000:1000::/home/duck:/bin/fish

Pour référence, le premier champ de chaque ligne est le nom d’utilisateur. Le troisième est l’ID numérique ou l’UID de l’utilisateur (le root Le compte est toujours UID zéro); Le sixième champ est le répertoire personnel de l’utilisateur. et ce dernier désigne le programme à exécuter lorsque l’utilisateur se connecte, généralement un shell de commande pour les comptes réguliers et /bin/false, un programme qui pour les autres comptes se fermera immédiatement avec un code d’erreur.

Fait intéressant, le deuxième champ est le mot de passe de l’utilisateur.

Plus précisément, c’était l’endroit où les mots de passe Unix étaient stockés, regroupant les noms d’utilisateur et les mots de passe dans un seul fichier pour plus de cohérence et de commodité.

Cependant, stocker des mots de passe hachés ou non hachés dans un fichier lisible par le monde s’est rapidement avéré être une mauvaise idée.

Même dans les années 1970, les hackers collectaient régulièrement /etc/password Fichiers afin que vous puissiez les casser hors ligne.

Les premiers mots de passe de plusieurs pionniers Unix étaient craqué pour le plaisir en 2019 sur la base d’anciens fichiers de mots de passe intégrés dans le code source BSD-3. Le mot de passe de Ken Thompson, par exemple, s’est avéré être un geste p/q2-q4!. Thompson lui-même assez gentil interféré avec félicitations au chercheur.

Donc, les « mots de passe » dans /etc/passwd sont maintenant mis à la lettre xLes mots de passe de hachage eux-mêmes sont stockés ailleurs, généralement dans un fichier verrouillé auquel on accède /etc/shadowà quoi pourrait ressembler ceci:


root:$1$trymenow$loO18cesIqNfnT1c66lRV/:::::::
bin:*:::::::
nobody:*:::::::
duck:$1$trymetoo$8a7wRlziGi4YMvlmVy23V/:::::::

Comptes dont les « mots de passe » commencent par un * Les personnages n’ont pas de mot de passe, vous ne pourrez donc pas vous connecter à ces comptes de manière interactive (après tout, vous ne pouvez pas donner de réponse valide à l’invite de mot de passe contenant un astérisque).

Dans l’exemple ci-dessus, le root et duck Les mots de passe sont définis pour les comptes à l’aide de la méthode de hachage $1$ (qui ne conviennent plus à l’usage md5crypt Algorithme – ne jamais utiliser dans la vraie vie!), Avec des sels trymemow et trymetoo respectivement.

Par exemple, lorsque vous trouvez l’entrée hachée md5crypt à r0NTYRppwVIrSnk6OjqPI0 Avec du sel trymenow (et pourquoi ne pas essayer maintenant?), vous venez de déchiffrer le mot de passe root.

Même si vous ne pouvez pas déchiffrer le mot de passe, la présence d’un mot de passe est /etc/shadow Cependant, vous recevrez une notification indiquant que le compte en question est destiné à la connexion à distance.