Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
VulFi — Plugin IDA Pro pour la recherche basée sur des requêtes dans le binaire, utile principalement pour la recherche de vulnérabilités. | Kitploit
Outils/GitHubGitHub/accenture/vulfi
Analyse StatiqueAnalyse des VulnérabilitésRétro-ingénierieAnalyse de Binaires
GitHubaccenture/vulfi

VulFi

Plugin IDA Pro pour la recherche basée sur des requêtes dans le binaire, utile principalement pour la recherche de vulnérabilités.

Voir le dépôt
6697415il y a 1 anVé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

VulFi v3.0

Introduction

L'outil VulFi (Vulnerability Finder) est un plugin pour IDA Pro qui peut être utilisé pour aider lors de la chasse aux bugs dans les binaires. Son objectif principal est de fournir une vue unique avec toutes les références croisées vers les fonctions les plus intéressantes (telles que strcpy, sprintf, system, etc.). Pour les cas où un décompilateur Hexrays peut être utilisé, il tente d'écarter les appels à ces fonctions qui ne sont pas intéressants du point de vue de la recherche de vulnérabilités (pensez à quelque chose comme strcpy(dst,"Hello World!")). Sans le décompilateur, les règles sont beaucoup plus simples (pour ne pas dépendre de l'architecture) et n'écartent donc que les cas les plus évidents.

Voir Changelog pour plus d'informations sur les mises à jour.

Installation

Placez les fichiers vulfi.py, vulfi_prototypes.json et vulfi_rules.json dans le dossier des plugins IDA (cp vulfi* <IDA_PLUGIN_FOLDER>).

Préparation du fichier de base de données

Avant d'exécuter VulFi, assurez-vous de bien comprendre le binaire avec lequel vous travaillez. Essayez d'identifier toutes les fonctions standard (strcpy, memcpy, etc.) et nommez-les en conséquence. Le plugin est insensible à la casse, donc MEMCPY, Memcpy et memcpy sont tous des noms valides. Cependant, notez que la recherche de la fonction nécessite une correspondance exacte. Cela signifie que memcpy? ou std_memcpy (ou toute autre variante) ne seront pas détectés comme une fonction standard et ne seront donc pas pris en compte lors de la recherche de vulnérabilités potentielles. Si vous travaillez avec un binaire inconnu, vous devez d'abord définir les options du compilateur Options > Compiler. Ensuite, VulFi fera de son mieux pour filtrer tous les faux positifs évidents (comme un appel à printf avec une chaîne constante comme premier paramètre). Veuillez noter que même si le plugin est conçu sans lien avec une architecture spécifique, certains processeurs ne prennent pas entièrement en charge la spécification des types et dans ce cas, VulFi marquera simplement toutes les références croisées aux fonctions standard potentiellement dangereuses pour vous permettre de procéder à une analyse manuelle. Dans ces cas, vous pouvez bénéficier des fonctionnalités de suivi du plugin.

Utilisation

Analyse

Pour lancer l'analyse, sélectionnez l'option Search > VulFi dans la barre de menu supérieure. Cela lancera soit une nouvelle analyse, soit lira les résultats précédents stockés dans le fichier idb/i64. Les données sont automatiquement sauvegardées chaque fois que vous sauvegardez la base de données.

Une fois l'analyse terminée ou une fois les résultats précédents chargés, un tableau sera présenté avec une vue contenant les colonnes suivantes :

  • IssueName - Utilisé comme titre pour le problème suspecté.
  • FunctionName - Nom de la fonction.
  • FoundIn - La fonction qui contient la référence potentiellement intéressante.
  • Address - L'adresse de l'appel détecté.
  • Status - Le statut de révision, initialement Not Checked est attribué à chaque nouvel élément. Les autres statuts sont False Positive, Suspicious et Vulnerable. Ceux-ci peuvent être définis à l'aide d'un menu contextuel (clic droit) sur un élément donné et doivent refléter les résultats de la révision manuelle de l'appel de fonction donné.
  • Priority - Une tentative de priorisation des appels les plus intéressants par rapport aux moins intéressants. Les valeurs possibles sont High, Medium et Low (également Info pour les cas où le scanner n'a pas pu identifier correctement tous les paramètres). Les priorités sont définies avec d'autres règles dans le fichier vulfi_rules.json.
  • Comment - Un commentaire défini par l'utilisateur pour l'élément donné.

Dans le cas où il n'y a pas de données dans le fichier idb/i64 ou si l'utilisateur décide d'effectuer une nouvelle analyse, le plugin demandera s'il doit exécuter l'analyse en utilisant les règles incluses par défaut ou s'il doit utiliser un fichier de règles personnalisé. Veuillez noter que lancer une nouvelle analyse avec des données déjà existantes n'écrase pas les éléments précédemment trouvés identifiés par la règle portant le même nom que celui des résultats précédemment stockés. Par conséquent, relancer l'analyse ne supprime pas les commentaires existants ni les mises à jour de statut.

basic

Dans le menu contextuel du clic droit dans la vue VulFi, vous pouvez également supprimer l'élément des résultats ou supprimer tous les éléments. Veuillez noter que tous les commentaires ou mises à jour de statut seront perdus après cette opération. Depuis la version 2.1, VulFi prend également en charge les opérations effectuées sur plusieurs éléments sélectionnés à la fois. Cela permet de marquer plusieurs éléments avec un certain statut, de les supprimer ou d'ajouter le même commentaire à plusieurs lignes. Il arrive parfois que l'opération ne se rafraîchisse pas correctement. Lorsque cela se produit, rafraîchissez l'interface utilisateur (Ctrl+U) plusieurs fois jusqu'à ce que vous voyiez les changements reflétés.

Investigation

Lorsque vous souhaitez inspecter l'instance détectée d'une fonction potentiellement vulnérable, double-cliquez simplement n'importe où dans la ligne souhaitée et IDA vous amènera à l'emplacement mémoire identifié comme potentiellement intéressant. En utilisant le clic droit et l'option Set Vulfi Comment, vous pouvez saisir un commentaire pour l'instance donnée (pour justifier le statut par exemple).

Ajout de fonctions supplémentaires

Le plugin permet également de créer des règles personnalisées. Ces règles peuvent être définies dans l'interface IDA (idéal pour des fonctions uniques) ou fournies sous la forme d'un fichier de règles personnalisé (idéal pour des règles visant à couvrir plusieurs fonctions).

Dans l'interface

Lorsque vous souhaitez suivre une fonction personnalisée, identifiée au cours de l'analyse, faites un clic droit n'importe où dans son corps et sélectionnez Add <name> function to VulFi. Vous pouvez également surligner et faire un clic droit sur un nom de fonction dans la vue de désassemblage/décompilation actuelle pour éviter de passer dans le corps de la fonction.

add custom

Ensemble de règles personnalisé

Il est également possible de charger un fichier personnalisé avec un ensemble de plusieurs règles. Pour créer un fichier de règles personnalisé avec la structure ci-dessous, vous pouvez utiliser le fichier modèle inclus ici.

[   // Un tableau de règles
    {
        "name": "NOM DE LA RÈGLE", // Le nom de la règle
        "function_names":[
            "nom_de_la_fonction_à_rechercher" // Liste de tous les noms de fonctions qui doivent correspondre aux conditions définies dans cette règle
        ],
        "wrappers":true,    // Rechercher également les wrappers des fonctions ci-dessus (notez que la fonction wrappée doit également correspondre à la règle)
        "mark_if":{
            "High":"True",  // Si évalue à True, marquer avec priorité High (voir Règles ci-dessous)
            "Medium":"False", // Si évalue à True, marquer avec priorité Medium
            "Low": "False" // Si évalue à True, marquer avec priorité Low
        }
    }
]

Un exemple de règle qui recherche toutes les références croisées à la fonction malloc et vérifie si son paramètre n'est pas constant et si la valeur de retour de la fonction est vérifiée est présenté ci-dessous :

Télécharger l’outil