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
Outils/GitHubGitHub/skylined/bugid
Analyse des VulnérabilitésAnalyse Dynamique de Code (DAST)DébogueursFuzzingAnalyse de Binaires
GitHubskylined/bugid

BugId

Détecter, analyser et identifier de manière unique les plantages dans les applications Windows

Voir le dépôt
52586il 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
Site web

BugId

Détecter, analyser et identifier de manière unique les bugs d'applications.

TL;DR

Voulez-vous...

  • savoir quel type de bug provoque le crash d'une application ?
  • savoir si un bug peut être une vulnérabilité de sécurité ?
  • déterminer si deux crashs ou plus sont causés par le même bug ?
  • disposer d'un rapport lisible par un humain avec une analyse d'un bug ?

...alors BugId est peut-être fait pour vous !

Installation rapide

Pour utiliser BugId, veuillez télécharger et installer les logiciels suivants :

  • Dernière version de Python 2.7.14
  • Dernière version de Debugging Tools for Windows
  • Dernière version de BugId

Si vous installez Python et Debugging Tools for Windows avec leurs paramètres par défaut, BugId devrait pouvoir s'exécuter sans que vous ayez à ajuster un paramètre. Vous pouvez décompresser BugId où vous voulez sur votre système de fichiers local.

Avant de lancer BugId, vous devez activer full page heap dans l'application cible. Cela peut être fait par binaire en définissant certains Global Flags. Le moyen le plus simple de le faire est d'utiliser le script pageheap.cmd fourni avec BugId. Par exemple, pour activer full page heap pour notepad, exécutez la commande suivante :

root@kitploit:~
C:\BugId>pageheap notepad.exe ON

(Notez que cette commande doit être exécutée depuis une invite de commandes élevée avec un accès administrateur à la machine).

Pour rendre les choses encore plus faciles, pageheap.cmd contient une liste d'applications connues. Vous pouvez activer ou désactiver full page heap pour chacune d'elles en fournissant son nom, par ex. pageheap msie ON active full page heap pour Microsoft Internet Explorer. Utilisez pageheap /? pour obtenir plus d'informations sur les arguments de la ligne de commande.

À ce stade, vous voudrez peut-être tester si BugId fonctionne correctement. Nous pouvons le faire en exécutant une application avec BugId et en la faisant planter pour voir si BugId signale correctement le bug. Une bonne application à utiliser pour ce test est rundll32.exe, que l'on trouve sur toutes les installations Windows dans le sous-dossier system32 du dossier Windows (%WinDir%). Elle peut être utilisée pour charger n'importe quelle dll présente sur le système de fichiers local et appeler une fonction exportée de cette dll avec un format d'appel spécifique. Il y a de nombreuses dll dans le dossier system32 qui exportent des fonctions. La plupart de ces fonctions exportées attendent des arguments dans un format complètement différent de celui fourni par rundll32, ce qui provoque le crash de l'application.

Tout d'abord, nous devons activer full page heap dans rundll32 avec la commande suivante :

root@kitploit:~
C:\BugId>pageheap rundll32.exe ON

Ensuite, nous allons démarrer BugId et lui demander de lancer rundll32 avec des arguments qui lui ordonnent de charger advapi32.dll et d'appeler CloseThreadWaitChainSession. Au moment de la rédaction de ce document, cela provoque une violation d'accès dite par pointeur NULL, que BugId devrait détecter et signaler.

root@kitploit:~
C:\BugId>BugId.cmd %WinDir%\system32\rundll32.exe -- advapi32 CloseThreadWaitChainSession

Remarquez qu'il y a un -- entre rundll32.exe et les arguments qui lui sont passés. Cela vient du fait que vous pouvez vouloir fournir des arguments à la fois à BugId lui-même et à l'application que vous voulez tester. Ces deux ensembles d'arguments doivent être séparés par -- sur la ligne de commande. Tout ce qui précède -- est géré par BugId et tout ce qui suit est ignoré par BugId mais transmis à l'application.

Si tout se passe bien, la sortie de BugId ressemblera à ceci :

root@kitploit:~
* Command line: C:\WINDOWS\system32\rundll32.exe advapi32 CloseThreadWaitChainSession
+ Main process 8024/0x1F58 (rundll32.exe): Attached; command line = C:\WINDOWS\system32\rundll32.exe advapi32 CloseThreadWaitChainSession.
,-- A bug was detect in the application ----------------------------------------
| Id @ Location:    AVR@NULL a1f.904 @ rundll32.exe!advapi32.dll!WctRemoveEntry
| Description:      Access violation while reading memory at 0x0 using a NULL pointer.
| Security impact:  Denial of Service
| Version:          rundll32.exe 10.0.16299.15 (x64)
|                   advapi32.DLL 10.0.16299.15 (x64)
| Bug report:       AVR@NULL a1f.904 @ rundll32.exe!advapi32.dll!WctRemoveEntry.html (60703 bytes)
'-------------------------------------------------------------------------------

La première ligne vous indique la ligne de commande que BugId va démarrer. La deuxième ligne vous indique que cela a conduit à la création d'un nouveau processus avec l'identifiant de processus 8024, exécutant rundll32.exe, ainsi que la ligne de commande de ce processus (qui est bien sûr la même que celle de la première ligne). Peu après le démarrage de l'application, un bug a été détecté. BugId a généré un identifiant unique (AVR@NULL a1f.904) pour ce bug et a indiqué que son emplacement se trouve dans la fonction WctRemoveEntry de la dll advapi32.dll chargée par rundll32.exe. Étant donné que les crashs par pointeur NULL ne sont normalement pas exploitables autrement que pour faire planter l'application, l'impact sur la sécurité du bug est Denial of Service. Par défaut, BugId génère un rapport au format HTML pour chaque bug qu'il trouve et vous indique l'emplacement où ce rapport a été stocké. Comme vous pouvez le voir, le nom de fichier du rapport est basé sur l'identifiant du bug et son emplacement.

Chaque identifiant de bug généré par BugId se compose de deux parties séparées par un espace. La première partie décrit le type de bug. Dans l'exemple ci-dessus, AVR@NULL signifie Access Violation Reading memory at address NULL. La deuxième partie décrit l'emplacement du bug ; elle se compose de deux courts hachages séparés par un point. Ces hachages sont calculés à partir des fonctions en haut de la pile qui sont considérées comme pertinentes pour le bug. Dans l'exemple, a1f.904 se compose de a1f (calculé à partir de advapi32.dll!WctRemoveEntry) et de 904 (calculé à partir de advapi32.dll!CloseThreadWaitChainSession).

Si vous exécutez à nouveau cette même commande, BugId signalera exactement le même BugId, car cela devrait provoquer exactement le même bug dans exactement le même code.

Félicitations ! Vous êtes maintenant prêt à tester vos propres crashs avec BugId, mais vous voudrez peut-être exécuter BugId.cmd --help à un moment donné pour obtenir des informations sur les nombreuses options de ligne de commande prises en charge par BugId.

Remarques

BugId a été développé pour et testé sur un grand nombre d'applications lors de campagnes de fuzzing afin d'analyser des centaines de milliers de crashs causés par des centaines de bugs différents. Dans ce rôle, il s'est avéré extrêmement précis pour analyser les bugs, avec un très faible taux de faux positifs et de faux négatifs ; les deux sont inférieurs à 1 %.

Bien sûr, tous les types de bugs ne sont pas faciles à détecter et à analyser. Certains bugs ne peuvent actuellement pas être détectés de manière fiable au moment où ils se produisent, mais provoquent un crash bien plus tard dans un code complètement sans rapport, ce qui conduit à une analyse complètement incorrecte. Dans de tels cas, reproduire à plusieurs reprises le même bug conduira à un certain nombre d'identifiants de bug différents, car l'application plante de différentes manières à différents moments. Pour vous assurer que ce n'est pas le cas, il est conseillé d'exécuter votre cas de test avec BugId plusieurs fois pour voir si l'identifiant du bug reste le même.

D'autres bugs provoquent des crashs qui semblent être causés par un type de bug différent. Cela peut entraîner une analyse et des identifiants de bug incorrects. Plus particulièrement, les bugs résultant de bad casts dans du code C/C++ sont actuellement impossibles à détecter et à signaler par BugId. Ils peuvent entraîner différents types de crashs ; le plus souvent des violations d'accès lorsque des valeurs stockées dans les propriétés d'un objet sont utilisées à tort comme des pointeurs. Si vous pensez que des bad casts pourraient être la cause d'un crash, vous devriez revérifier l'analyse effectuée par BugId pour vous assurer qu'elle est correcte.

BugId dépend fortement de l'utilisation de full page heap par l'application pour pouvoir détecter et analyser un grand nombre de bugs liés au tas (heap). Cela signifie qu'il sera beaucoup moins efficace pour détecter et analyser les bugs dans les applications qui utilisent leur propre gestionnaire de tas interne ne reposant pas sur le tas Windows standard.

Licence

Licence Creative Commons BugId dispose d'une période d'essai gratuite de 30 jours pour une utilisation commerciale et non commerciale. Pendant cette période d'essai, ce travail est sous licence [Creative Commons Attribution - Pas d'Utilisation Commerciale 4.0 International](http://creativecommons.org/licenses/by-nc/4.0/).

Après la période d'essai, une licence payante doit être acquise sur license.skylined.nl si vous souhaitez continuer à utiliser BugId.

Des licences non commerciales sont disponibles pour une somme très modique ; juste de quoi couvrir mes dépenses. Des licences commerciales pour les chercheurs en sécurité individuels sont également disponibles à prix fortement réduit.

Si vous avez des questions sur les licences ou si vous souhaitez discuter d'une remise sur volume, veuillez contacter [email protected].

BugId a une période d'essai pour vous permettre d'évaluer son utilité. Si vous souhaitez continuer à utiliser BugId après la fin de la période d'essai, je vous demande de contribuer par une petite somme pour rémunérer mon travail sur BugId et le traitement des demandes de licence. Si vous utilisez BugId à des fins commerciales, je vous demande de payer des frais de licence réguliers afin de partager une partie des bénéfices que vous tirez de votre utilisation de BugId.

Télécharger l’outil