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
xfg_analyzer — Un plugin Binary Ninja qui utilise des hachages XFG obtenus par force brute pour retrouver des prototypes de fonctions précis. | Kitploit
Outils/GitHubGitHub/ea/xfg_analyzer
Analyse StatiqueRétro-ingénierieAnalyse de Binaires
GitHubea/xfg_analyzer

xfg_analyzer

Un plugin Binary Ninja qui utilise des hachages XFG obtenus par force brute pour retrouver des prototypes de fonctions précis.

Voir le dépôt
162il y a 2 ansPas encore vérifié

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

Récupération de prototypes de fonctions par force brute des hachages XFG

Ce dépôt contient des scripts pour générer et rechercher des hachages eXtended Flow Guard.

Un article détaillé sur le fonctionnement est disponible dans le numéro 22 de l'International Jouranl Of Proof Of Concept || GTFO.

Mon travail sur cette preuve de concept a été grandement simplifié par les gens de Quarkslab qui ont effectué une ingénierie inverse approfondie des parties pertinentes du compilateur de MS. Leur article détaillé sur la façon dont les hachages XFG sont calculés peut être lu ici : https://blog.quarkslab.com/how-the-msvc-compiler-generates-xfg-function-prototype-hashes.html

Remarque : cela ne « casse » en aucun cas XFG en tant qu'atténuation d'exploitation ; cela abuse simplement de ses effets secondaires pour éclairer des fonctions sans symboles.

En bref, XFG tel qu'implémenté sur Windows étend et renforce l'atténuation d'exploitation Control Flow Guard en limitant les cibles possibles des appels de fonctions indirects non seulement à des points d'entrée de fonctions valides, mais à des fonctions ayant une signature correspondante. Pour ce faire, un hachage XFG est calculé pour chaque fonction et une vérification est effectuée lors de l'exécution. Les hachages sont basés uniquement sur le prototype de la fonction (c'est-à-dire la convention d'appel, les arguments et leurs types). Ainsi, nous pouvons les précalculer pour des types connus et les rechercher plus tard pour des fonctions dans des binaires inconnus.

Si la recherche aboutit, nous pouvons être certains à 100 % du nombre exact et des types de tous les arguments ainsi que de la valeur de retour de la fonction. Cela peut être extrêmement utile pour les binaires et les fonctions sans symboles publics.

Je vous invite à lire l'article complet dans PoC||GTFO, servi depuis un miroir proche.

Les scripts sont :

  • gen_function_prototypes.py - affiche simplement un fichier contenant tous les prototypes possibles avec les types donnés
  • gen_hash_from_ast.py - lit un fichier .c, l'analyse, calcule le hachage et l'enregistre dans une base de données (destiné à être utilisé sur des fichiers générés par gen_function_prototypes.py)
  • xfg_analyzer.py - plugin Binary Ninja qui recherche les hachages XFG dans le binaire et les cherche dans la base de données
  • find_hash.py - raccourci simple pour rechercher des hachages donnés dans la base de données

Pour utiliser ces scripts, vous devez d'abord modifier gen_function_prototypes.py pour ajouter des « types primitifs », des structures ou des énumérations spécifiques à la cible que vous examinez. Vous voudrez également choisir le nombre maximal d'arguments à bruteforcer. Jusqu'à 3 prend une minute, jusqu'à 4 une journée...

Après avoir généré les prototypes de fonctions de toutes les combinaisons, vous voudrez exécuter gen_hash_from_ast.py, qui analysera le fichier précédemment généré ligne par ligne et générera le hachage XFG correspondant. Une fois cela terminé, vous disposerez d'une base de données SQLite de prototypes de fonctions avec leurs hachages XFG correspondants. Un plugin Binary Ninja très simple est inclus dans xfg_analyzer.py. Lorsqu'il est exécuté sur un binaire protégé par XFG, il trouvera tous les hachages XFG, les recherchera dans la base de données et, si une correspondance est trouvée, appliquera le nouveau prototype de fonction à la fonction définie.

Sachez que ce n'est qu'une preuve de concept. Pour être vraiment utile, une base de données géante de hachages (éventuellement alimentée avec tous les noms de structures/énumérations des fichiers d'en-tête de Windows) devrait être générée et mise à disposition pour des recherches en ligne. De plus, étendre cette idée aux hachages XFG C++ serait un projet très amusant.

N'hésitez pas à utiliser le code de ce dépôt de quelque manière que ce soit. Si vous le trouvez utile, je serais ravi d'avoir de vos nouvelles.

  • ea
Télécharger l’outil