Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
yaralyzer — Inspectez visuellement et forcez le décodage des correspondances YARA et regex trouvées dans les données binaires et textuelles avec des couleurs. Beaucoup de couleurs. | Kitploit
Outils/GitHubGitHub/michelcrypt4d4mus/yaralyzer
Rétro-ingénierieAnalyse ForensiqueAnalyse de MalwareAnalyse de Binaires
GitHubmichelcrypt4d4mus/yaralyzer

yaralyzer

Inspectez visuellement et forcez le décodage des correspondances YARA et regex trouvées dans les données binaires et textuelles avec des couleurs. Beaucoup de couleurs.

Voir le dépôt
15215il y a 6 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

GithubRelease Release Downloads Tests Python Version

LE YARALYZER

Correspondance YARA

Inspectez visuellement toutes les correspondances d'expressions régulières (et leurs cousins plus sexy et plus ésotériques, les correspondances YARA) trouvées dans des données binaires et/ou du texte. Voyez ce qui se passe lorsque vous forcez différents encodages de caractères sur ces octets correspondants. Avec des couleurs.

Démarrage rapide

root@kitploit:~
pipx install yaralyzer

# Analyser avec des définitions YARA dans un fichier :
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf

# Analyser avec une expression régulière arbitraire :
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe

# Analyser avec un motif hexadécimal YARA arbitraire
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin

Ce qu'il fait

  1. Voir les octets réels que vos règles YARA correspondent. Fini le temps perdu à copier-coller les positions de début signalées par YARA dans votre éditeur hexadécimal préféré. Affiche à la fois les octets correspondant à YARA ainsi qu'un nombre configurable d'octets avant et après chaque correspondance en représentation hexadécimale et en chaîne Python "brute".
  2. Faire de même avec des motifs d'octets et des expressions régulières sans écrire de fichier YARA. Si vous êtes trop paresseux pour écrire un fichier YARA mais que vous essayez de déterminer, par exemple, s'il y a une expression régulière cachée quelque part dans le fichier, vous pouvez rechercher le motif '/.+/' et obtenir immédiatement une fenêtre sur tous les octets du fichier qui se trouvent entre des barres obliques. Même histoire pour les guillemets, les BOM, etc. Toute expression régulière que YARA peut gérer est supportée, donc le ciel est la limite.
  3. Détecter les encodages possibles de chaque ensemble d'octets correspondants. chardet est une bibliothèque sophistiquée pour deviner les encodages de caractères et elle est utilisée ici.
  4. Afficher le résultat du forçage de divers encodages de caractères sur les zones correspondantes. Plusieurs encodages de caractères par défaut seront forcément essayés dans la région autour de la correspondance. chardet sera également utilisé pour voir si les octets correspondent au motif d'un encodage connu. Si chardet est suffisamment confiant (configurable), une tentative de décodage des octets avec cet encodage sera affichée.
  5. Exporter les régions correspondantes / décodages vers des fichiers SVG, HTML et texte coloré. Montrez votre art ASCII.

Pourquoi il le fait

La fonctionnalité du Yaralyzer a été extraite de The Pdfalyzer lorsqu'il est devenu évident que visualiser et décoder les correspondances de motifs dans les binaires avait plus d'utilité que simplement dans un outil d'analyse de PDF.

YARA, pour ceux qui ne le savent pas1, est présenté comme un outil d'analyse/d'alerte de logiciels malveillants, mais c'est en réalité à la fois beaucoup plus et beaucoup moins que cela. Une façon de le considérer est que YARA est un moteur de correspondance d'expressions régulières amélioré. Il peut localiser des correspondances regex dans des binaires comme n'importe quel moteur regex, mais il peut aussi faire des choses bien plus farfelues comme combiner des regex en groupes logiques, comparer des regex contre les 256 versions XORées d'un binaire, vérifier la présence d'encodages base64 et autres du motif, et plus encore. Peut-être le plus important, YARA fournit un format textuel standard pour que les gens partagent leurs regex 'roidées avec le monde. Toutes ces fonctionnalités sont particulièrement utiles lors de l'analyse ou du rétro-ingénierie de logiciels malveillants, dont les auteurs ont tendance à investir beaucoup de temps à rendre les choses difficiles à trouver.

Mais... c'est aussi tout ce que fait YARA. Tout le reste dépend de l'utilisateur. YARA n'est qu'un moteur de correspondance et si vous ne savez pas quoi chercher (ou même quel encodage de caractères vous pourriez utiliser pour chercher), il ne vous mène pas très loin. Je me suis retrouvé un peu frustré en essayant d'utiliser YARA pour examiner toutes les correspondances de quelques motifs critiques :

  1. Octets entre guillemets échappés (\".+\" et \'.+\')
  2. Octets entre barres obliques (/.+/). Les barres obliques délimitent une expression régulière dans de nombreuses implémentations et j'essayais de voir si certains des octets correspondant à ce motif étaient réellement des regex.

YARA vous donne juste la position de l'octet et la chaîne correspondante, mais il ne peut pas vous dire si ces octets sont en UTF-8, UTF-16, Latin-1, etc. (ou rien de tout cela). Je voulais aussi comprendre ce qui se passait dans la région des octets correspondants et pas seulement dans les octets correspondants. En d'autres termes, je voulais délimiter les octets immédiatement avant et après ce qui a été trouvé.

C'est là qu'intervient Le Yaralyzer, qui vous permet de scanner rapidement les régions autour des correspondances tout en vous montrant à quoi ressembleraient ces régions si elles étaient forcées dans divers encodages de caractères.

Le Yaralyzer n'est pas un outil de rétro-ingénierie de logiciels malveillants. Il ne peut pas faire les choses qu'un outil comme CyberChef fait et il n'essaie pas. Il vise plutôt à vous donner un aperçu visuel rapide des régions suspectes dans le binaire afin que vous puissiez cibler les zones que vous souhaitez inspecter avec un outil plus sérieux.

Installation

Installez-le avec pipx ou pip3. pipx est une solution légèrement meilleure car elle garantit que tous les paquets installés avec celui-ci seront isolés du reste de votre environnement Python local. Bien sûr, si vous n'avez pas vraiment d'environnement Python local, ce point est sans objet et vous pouvez librement installer avec pip/pip3.

root@kitploit:~
pipx install yaralyzer

Utilisation

Exécutez yaralyze -h pour voir les options de ligne de commande (capture d'écran ci-dessous).

Pour des informations sur l'exportation d'images SVG, HTML, etc., voir Exemple de sortie.

Configuration

Si vous placez un fichier nommé .yaralyzer dans votre répertoire personnel ou le répertoire de travail courant, les variables d'environnement spécifiées dans ce fichier .yaralyzer seront ajoutées à l'environnement à chaque invocation de yaralyzer. Cela fournit un mécanisme pour configurer en permanence diverses options de ligne de commande afin d'éviter de devoir les taper encore et encore. Consultez les commentaires dans le fichier exemple .yaralyzer.example pour plus d'informations.

Un seul fichier .yaralyzer sera chargé et le .yaralyzer du répertoire de travail prime sur celui du répertoire personnel.

En tant que bibliothèque

Yaralyzer est la classe principale. La documentation auto-générée pour les différentes classes et méthodes de Yaralyzer se trouve ici. Elle dispose d'une variété de constructeurs alternatifs supportant :

  1. Règles YARA précompilées
  2. Création d'une règle YARA à partir d'une chaîne
  3. Chargement de règles YARA à partir de fichiers
  4. Chargement de toutes les règles YARA d'un répertoire (fichiers .yara)
  5. Analyse d'octets (bytes)
  6. Analyse d'un fichier

Si vous souhaitez itérer sur les objets BytesMatch (comme un objet re.Match pour une correspondance YARA) et BytesDecoder (suit les statistiques des tentatives de décodage) utilisés par le Yaralyzer, vous pouvez le faire ainsi :

root@kitploit:~
from yaralyzer.yaralyzer import Yaralyzer

yaralyzer = Yaralyzer.for_rules_files(['/secret/rule.yara'], 'lacan_buys_the_dip.pdf')

for bytes_match, bytes_decoder in yaralyzer.match_iterator():
    do_stuff()

Dépannage

Si vous obtenez une yara.Error avec un code d'erreur numérique, vous pouvez vérifier ce que ce code peut signifier ici.

Exemple de sortie

Le Yaralyzer peut exporter des visualisations vers HTML, texte ANSI coloré, et des images vectorielles PNG et SVG en utilisant la fonctionnalité d'exportation de fichiers fournie par Rich ainsi qu'un format JSON texte brut (quelque peu limité).

Si vous souhaitez exporter des images .png comme celles ci-dessous directement depuis Yaralyzer, vous devrez faire l'une de ces choses :

  1. Installer Inkscape (les utilisateurs de homebrew peuvent l'installer avec brew install --cask inkscape)
  2. Demander l'extra img lors de l'installation de Yaralyzer, ce qui installera cairosvg : pipx install yaralyzer[img]. Vous devrez également installer manuellement l'exécutable CairoSVG de différentes manières selon votre système d'exploitation, voir la documentation CairoSVG pour les détails.

Dans notre expérience, Inkscape et CairoSVG fonctionnent tous deux, bien que nous ayons observé quelques problèmes d'affichage dans la sortie rendue avec CairoSVG sur les SVG rendus par Yaralyzer, donc Inkscape est l'option recommandée.

Résultat brut d'une correspondance YARA :

Afficher l'hexadécimal, la chaîne Python brute, et diverses tentatives de décodage de la correspondance ainsi que des octets avant et après (configurable) :

Bonus : voir ce que chardet.detect() pense de la probabilité que vos octets soient dans un encodage/langue donné :

Contribution

Les contributions sont plus que bienvenues ; voir CONTRIBUTING.md pour les détails sur la configuration de l'environnement, l'exécution de la suite de tests, etc. Il y a aussi une liste de tâches à faire (TODO) sur le travail nécessaire.

Footnotes

  1. Comme je l'étais jusqu'à récemment. ↩

Télécharger l’outil