03/10/2024

AutresCybersécurité

CyberChef : une application web pour déchiffrer, décoder et transformer des données

I. Présentation

Je vous présente aujourd’hui l’outil CyberChef, et il y a fort à parier qu’il fera partie de votre boîte d’outils utilisés quotidiennement après la lecture de cet article !

CyberChef est une application web conçue et mise à disposition par le GCQH (les renseignements britanniques, rien que ça !). Elle permet de très facilement appliquer des fonctions d’encodage, décodage, compression, décompression, chiffrement et déchiffrement sur une donnée. Voyez plutôt :

Pratique n’est-ce pas ? Vous n’aurez ainsi plus à retenir le nom de la commande et des options pour décompresser un “.gzip”, générer un hash “bcrypt” ou chiffrer une chaîne de caractère en AES, tout cela est faisable dans CyberChef. Voyons ensemble comment y accéder et l’utiliser.

II. Installation et accès à CyberChef

CyberChef est avant tout une application web, une version accessible en ligne est hébergée sur l’instance Github.io du GCQH :

D’après les avertissements de son concepteur, et j’ai vérifié : aucune donnée n’est transmise à un quelconque serveur tiers lors de l’utilisation de la version en ligne de CyberChef. Tout se passe côté client, en JavaScript.

Néanmoins, si vous souhaitez manipuler des données métiers ou pouvant contenir des données secrètes ou sensibles (mots de passe, nom d’utilisateur ou serveurs internes), il est toujours préférable de disposer de sa propre instance en local. Le plus simple étant l’utilisation la conteneurisation via Docker :

# Téléchargement de l’image Cyberchef et démarrage d’un conteneur
docker run -it -p 8080:80 ghcr.io/gchq/cyberchef:latest

Suite à l’exécution de cette commande, une instance de CyberChef locale sera disponible et accessible sur le port 8080 de votre hôte : http://localhost:8080/

III. Utilisation de CyberChef

Nous allons maintenant passer en revue les principaux espaces de l’interface de CyberChef :

Présentation des différentes sections de l'interface CyberChef.
Présentation des différentes sections de l'interface CyberChef.

L'espace 1, nommé "Input" est l'endroit dans lequel vous allez insérer les données à chiffrer/déchiffrer, encoder/décoder, etc. Il peut s'agir de texte, mais aussi d'un fichier entier. L'espace 2 ("Output") sera le résultat du traitement de ces données selon ce que vous demandez à CyberChef de faire. Ici aussi, vous pourrez récupérer du texte ou sauvegarder le résultat dans un fichier facilement.

C'est dans l'espace 4 ("Operation") que vous allez devoir sélectionner les différentes modifications que vous souhaitez appliquer à votre chaîne de caractère, il vous suffira de les glisser-déposer dans l'espace 3 (nommé "Recipe", qui veut dire "Recette"). Dans l'environnement CyberChef, la recette est simplement la suite d'opérations (algorithmes, transformations, fonctions) que vous allez appliquer sur votre chaîne de caractère d'entrée.

Par exemple, la recette suivante va appliquer un encodage base64 sur ma chaîne de caractère, puis prendre le contenu et le convertir en hexadécimal :

 Exemple de "Recette" simple CyberChef.
Exemple de "Recette" simple CyberChef.

Noter le "To" de "To Base64" et "To Hex", il signifie "vers". Si au contraire, je veux décoder ma chaîne de caractère, je devrais utiliser "From Hex" puis "From Base64", et dans le bon ordre !

Comme une recette de cuisine, on obtiendra ce que l'on veut en sortie si l'on effectue les opérations dans le bon ordre :

 Exemple de "Recette" simple de décodage dans CyberChef.
Exemple de "Recette" simple de décodage dans CyberChef.

Il vous sera notamment possible d'intervertir les différentes opérations de votre recette en faisant glisser chacune d'entre elles à l'endroit souhaité.

Les "recettes" que vous créez peuvent être enregistrées pour être réutilisées plus tard sans avoir à reconstruire manuellement toute la chaîne.

Les deux grandes forces de cyberChef sont sa simplicité d’utilisation, comme nous venons de le voir, mais aussi le nombre d’algorithmes, manipulations, transformations et fonctions de hashage, chiffrement, encodage et compression qu’il prend en charge. Il vous suffit pour le constater de regarder toutes les catégories et possibilités qui sont présentes dans le menu "Operation" de gauche :

  • Data format : permet de convertir des données entre différents formats, comme JSON, XML, CSV, YAML, etc.
  • Encryption / Encoding : fournit des outils pour chiffrer et encoder des données, incluant AES, DES, ROT13, Base64, URL encoding, etc.
  • Public Key : Contient des opérations liées à la cryptographie à clé publique, comme RSA, ECDSA, génération de clés, chiffrement et déchiffrement.
  • Arithmetic / Logic : permet de réaliser des opérations arithmétiques et logiques, telles que l'addition, la soustraction, les opérations bit à bit, les calculs de CRC, etc.
  • Network : offre des outils pour analyser et manipuler des données réseau, telles que la conversion IP, les requêtes DNS, l'analyse des paquets, etc.
  • Language : inclut des opérations de conversion de texte entre différents formats (unicode, UTF-8, etc.).
  • Utils : divers utilitaires comme la génération de nombres aléatoires, les opérations de remplacement de texte, de comptage d’occurrence, les conversions de bases, etc.
  • Date / Time : permet de manipuler des dates et des heures, inclut des convertisseurs de timestamp, le calcul de différences entre dates, etc.
  • Extractors : outils pour extraire des informations spécifiques des données, comme les adresses e-mail, les numéros de téléphone, les URL, les IP, etc.
  • Compression : fournit des outils pour compresser et décompresser des données avec des algorithmes comme gzip, zip, bzip2, etc.
  • Hashing : contient un grand nombre d'algorithmes de hashage pour générer des hashs à partir des chaînes de caractères fournies (ne fait pas de cassage de hash). On y trouve également une fonction qui analyse les hashs pour tenter d'en déterminer le type.
  • Code tidy : permet de nettoyer et de formater du code pour le rendre plus lisible, incluant le minify et beautify de HTML, CSS, JavaScript, etc.
  • Forensics : outils pour l’investigation numérique, comme l'extraction de métadonnées, l'analyse de fichiers, l’identification d’un format de fichier, etc.
  • Multimedia : contient des outils pour manipuler des fichiers multimédias, comme la conversion d'images, l'extraction de métadonnées de fichiers audio/vidéo, etc.
  • Other : contient les outils qui ne rentrent pas dans les autres catégories, comme les générateurs de QR codes, les tests de regex, etc.
  • Flow Control : permet de créer des flux de travail avec des opérations conditionnelles, des boucles, et la gestion de l'exécution des différentes étapes.

On peut littéralement passer des heures simplement à parcourir, comprendre et tester les différentes opérations présentes dans CyberChef, il y en a pour tous les usages et tous les métiers : administrateur système, pentester, analyste forensic, développeur, etc. En laissant votre souris sur chaque opération, vous pourrez avoir un bref descriptif de celle-ci :

Affichage d'une bulle info pour chaque opération présente dans CyberChef.
Affichage d'une bulle info pour chaque opération présente dans CyberChef.

L'intérêt est bien sûr d'avoir tout au même endroit, sans avoir à se rappeler des options de tel outil, de l'URL du site qui permet de minifier du code HTML et JavaScript, etc.

Vous pourrez aussi facilement accéder aux opérations rapidement en utilisant la section "Favourites" dans laquelle il suffit de glisser-déposer les opérations auxquels vous souhaitez accéder rapidement, ou alors en utilisant l'espace de recherche :

Espaces de recherche et des favoris de CyberChef.
Espaces de recherche et des favoris de CyberChef.

L'outil regorge également de fonctionnalités et de possibilités de customisation (thème sombre notamment). L'important avec cet outil est de découvrir toutes ses possibilités pour ensuite savoir que l'on peut faire appel à lui pour nos besoins quotidiens.

IV. Exemple de fonctions super utiles

A. Réorganiser et améliorer la structure d’un code

Il arrive souvent que l’on tombe sur des blocs de code mal indentés, voire complètement minifiés. Débugger ce type de code peut être très complexe, car il est difficile d’isoler les éléments intéressants, la structure et l’ordre des instructions, etc.

Cyberchef propose différentes opérations permettant de réorganiser et d'indenter différents langages de programmation ou code source, voici un exemple avec une requête SQL complexe :

Réorganisation d’une requête SQL complexe.

Ici, j’ai fourni à Cyberchef une requête SQL complexe écrite sur une seule ligne. En utilisant l’opération “Cody Tidy > SQL Beautify”, je me retrouve avec une requête beaucoup plus lisible et facile à débugger.

B. Extraire les adresses IP d’un texte

CyberChef contient un tas d’expressions régulières qui permettent de facilement extraire ou isoler des items spécifiques dans un bloc de texte. L’exemple suivant permet d’extraire toutes les adresses IP présentes dans un texte :

Extraction des adresses IP d’un texte.

Ici, j’ai utilisé l’opération “Extractors > Extract IP addresses”, notez les options de cette opération qui permettent de les trier, de supprimer les adresses localhost, etc.

C. Analyser un certicat x.509

CyberChef peut également être utilisé pour lire et trier les informations de différents types de certificats, clés, etc. Je l'utilise dans l'exemple suivant pour m'afficher de manière lisible les détails d'un certificat x.509. J'ai notamment utilisé l'option permettant de fournir un fichier en entrée à CyberChef plutôt qu'un bloc de texte :

Analyse et affichage du contenu d'un certificat x.509
Analyse et affichage du contenu d'un certificat x.509

Grâce à l'opération "Public Key > Parse X.509 certificate", plus besoin dans cet exemple de retenir les options de la commande "openssl" pour réaliser cette opération dans un terminal.

IV. Conclusion

CyberChef est un outil polyvalent et utile pour les pros de la cybersécurité, les développeurs, les analystes forensic, les administrateurs système et plus encore. Son interface intuitive et ses nombreuses fonctionnalités permettent de traiter efficacement des données, de l'encodage au chiffrement, de la conversion de formats à la compression, en passant par le hashage, etc.

D’après mon expérience, il devient très vite indispensable une fois que l’on se rappelle que l’outil existe et qu’il faut plutôt passer par une interface web que par la ligne de commande.

Je vous encourage à tester cette solution, et n'hésitez pas à nous faire vos retours dans les commentaires ou sur notre Discord !

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.