
Inspectez visuellement tous les matchs regex (et leurs cousins plus sexy, plus creux et poignards, les matchs Yara) trouvés dans les données binaires et / ou le texte. Voyez ce qui se passe lorsque vous forcez divers encodages de caractères sur ces octets assortis. Avec des couleurs.
pipx install yaralyzer
# Scan against YARA definitions in a file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scan against an arbitrary regular expression:
yaralyze --regex-pattern ' good and evil.*ofs+w+byte ' the_crypto_archipelago.exe
# Scan against an arbitrary YARA hex pattern
yaralyze --hex-pattern ' d0 93 d0 a3 d0 [-] 9b d0 90 d0 93 ' one_day_in_the_life_of_ivan_cryptosovich.bin'/.+/' et obtenir immédiatement une fenêtre dans tous les octets du fichier qui vivent entre les barres obliques. La même histoire pour les citations, les notes, etc. Tout regex yara peut gérer est pris en charge, donc le ciel est la limite.chardet est une bibliothèque sophistiquée pour deviner les encodages de personnages et il est exploité ici.chardet sera également exploitée pour voir si les octets correspondent au modèle de tout encodage connu. Si chardet est suffisamment confiante (configurable), une tentative de décodage des octets à l'aide de ce codage sera affichée.La fonctionnalité de Yaralyzer a été extraite du pdfalyzer lorsqu'il est devenu évident que la visualisation et le décodage des correspondances dans les binaires avaient plus d'utilité que dans un outil d'analyse PDF.
Yara, pour ceux qui ne sont pas au courant 1 , est marqué comme un outil d'analyse / alerte de logiciels malveillants, mais il est en fait à la fois beaucoup plus et beaucoup moins que cela. Une façon d'y penser est que Yara est un moteur de correspondance d'expression régulière sur les stéroïdes. Il peut localiser des matchs regex dans des binaires comme n'importe quel moteur regex, mais il peut également faire des choses beaucoup plus sauvages comme combiner regexxe dans des groupes logiques, comparer les regex réguliers avec les 256 versions Xored d'un binaire, vérifier base64 et d'autres encodages du motif, et plus encore. Peut-être que le plus important de tout Yara fournit un format de texte standard pour que les gens partagent leurs exploits ROIDED avec le monde. Toutes ces fonctionnalités sont particulièrement utiles lors de l'analyse ou de la rétro-ingénierie des logiciels malveillants, dont les auteurs ont tendance à investir beaucoup de temps pour rendre les choses difficiles à trouver.
Mais ... c'est aussi tout Yara. Tout le reste appartient à l'utilisateur. Yara est juste un moteur de match et si vous ne savez pas quoi faire correspondre (ou même quel codage de personnage, vous pourriez être en mesure de faire correspondre), cela ne vous mène que jusqu'à présent. Je me suis retrouvé un peu frustré à essayer d'utiliser Yara pour regarder tous les matchs de quelques modèles critiques:
".+" Et '.+' )/.+/ ). Les barres obliques frontales délimitent une expression régulière dans de nombreuses implémentations et j'essayais de voir si l'un des octets correspondant à ce modèle était en fait regex.Yara vous dit simplement la position d'octets et la chaîne appariée, mais elle ne peut pas vous dire si ces octets sont UTF-8, UTF-16, Latin-1, etc. etc. (ou aucune de ce qui précède). Je me suis également retrouvé à vouloir comprendre ce qui se passait dans la région des octets assortis et pas seulement dans les octets assortis. En d'autres termes, je voulais élaborer les octets immédiatement avant et après tout ce qui a été apparié.
Entrez le Yaralyzer , qui vous permet de scanner rapidement les régions autour des matchs tout en vous montrant à quoi ressemblerait ces régions si elles étaient forcées dans divers codages de personnages.
Il est important de noter que le Yaralyzer n'est pas un outil de renversement de logiciels malveillants. Il ne peut pas faire tout ce que fait un outil comme CyberChef et il n'essaie pas. Il est plus destiné à vous donner un aperçu visuel rapide des régions suspectes dans le binaire afin que vous puissiez vous concentrer sur les domaines que vous voudrez peut-être inspecter avec un outil plus sérieux comme CyberChef.
Installez-le avec pipx ou pip3 . pipx est une solution légèrement meilleure car elle garantit que tous les packages installés avec lui seront isolés du reste de votre environnement python local. Bien sûr, si vous n'avez pas vraiment un environnement Python local, c'est un point discutable et vous pouvez vous sentir libre d'installer avec pip / pip3 .
pipx install yaralyzer
Exécutez yaralyze -h pour voir les options de ligne de commande (capture d'écran ci-dessous).

Pour plus d'informations sur l'exportation d'images SVG, HTML, etc., consultez l'exemple de sortie.
Si vous placez un fichier appelé .yaralyzer dans votre répertoire domestique ou dans le répertoire de travail actuel, les variables d'environnement spécifiées dans ce fichier .yaralyzer seront ajoutées à l'environnement chaque fois que Yaralyzer est invoqué. Cela fournit un mécanisme pour configurer définitivement diverses options de ligne de commande afin d'éviter de les taper encore et encore. Voir l'exemple de fichier .yaralyzer.example pour voir quelles options peuvent être configurées de cette façon.
Un seul fichier .yaralyzer sera chargé et le .yaralyzer du répertoire de travail a priorité sur .yaralyzer du répertoire domestique.
Yaralyzer est la classe principale. Il a une variété de constructeurs soutenus:
.yara dans un répertoirebytes Si vous souhaitez itérer sur les objets BytesMatch (comme un objet re.Match pour un match Yara) et les objets BytesDecoder (Tracks Decoding Tenty Statts) renvoyé par le yaralyzer, vous pouvez le faire comme ceci:
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 () Le Yaralyzer peut exporter des visualisations vers HTML, du texte coloré ANSI et des images vectorielles SVG en utilisant la fonctionnalité d'exportation de fichiers qui est riche. Les SVG peuvent être transformés en images de format png avec un outil comme Inkscape ou cairosvg . D'après notre expérience, ils travaillent tous les deux, bien que nous ayons vu un problème avec cairosvg .
Utilisateurs de PYPI: Si vous lisez ce document sur PYPI, sachez qu'il rend beaucoup mieux sur GitHub. Jolies photos, notes de bas de page qui fonctionnent, etc.


chardet.detect() pense à la probabilité que vos octets soient dans un codage / langue donné: 
rich d'une manière ou d'une autre. Pour l'instant, la sortie de la console est la "plus correcte", donc c'est généralement OK. Voir issue_with_output_to_console_correct contre issue_with_output_to_txt_file_incorrect.pngchardetComme je l'étais jusqu'à récemment. ↩