Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
BugId — Detecta, analiza e identifica de forma única los bloqueos en aplicaciones de Windows. | Kitploit
Herramientas/GitHubGitHub/skylined/bugid
Análisis de VulnerabilidadesAnálisis Dinámico de Código (DAST)DepuradoresFuzzingAnálisis de Binarios
GitHubskylined/bugid

BugId

Detecta, analiza e identifica de forma única los bloqueos en aplicaciones de Windows.

Ver Repositorio
52586hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

BugId

Detecta, analiza e identifica de forma única los errores de las aplicaciones.

TL;DR

¿Quieres...

  • saber qué tipo de error está causando que una aplicación se bloquee?
  • saber si un error podría ser una vulnerabilidad de seguridad?
  • averiguar si dos o más bloqueos son causados por el mismo error?
  • un informe legible por humanos con un análisis de un error?

...entonces BugId puede ser para ti.

Configuración rápida

Para usar BugId, descarga e instala el siguiente software:

  • La última versión de Python 2.7.14
  • La última versión de Debugging Tools for Windows
  • La última versión de BugId

Si instalas Python y Debugging Tools for Windows con sus ajustes predeterminados, BugId debería poder ejecutarse sin necesidad de ajustar ninguna configuración. Puedes descomprimir BugId en cualquier lugar que quieras de tu sistema de archivos local.

Antes de iniciar BugId, deberías habilitar full page heap en la aplicación objetivo. Esto se puede hacer por binario estableciendo ciertos Global Flags. La forma más fácil de hacerlo es usar el script pageheap.cmd que viene con BugId. Por ejemplo, para habilitar full page heap para el Bloc de notas, ejecuta el siguiente comando:

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

(Ten en cuenta que este comando debe ejecutarse desde un símbolo del sistema elevado con acceso administrativo a la máquina).

Para hacer las cosas aún más fáciles, pageheap.cmd tiene una lista de aplicaciones conocidas. Puedes habilitar o deshabilitar full page heap para cualquiera de ellas proporcionando su nombre, p. ej. pageheap msie ON habilita full page heap para Microsoft Internet Explorer. Usa pageheap /? para obtener más información sobre los argumentos de línea de comandos.

En este punto, es posible que quieras probar si BugId funciona correctamente. Podemos hacerlo ejecutando una aplicación en BugId y provocando su bloqueo para ver si BugId informa del error correctamente. Una buena aplicación para usar en esta prueba es rundll32.exe, que se encuentra en todas las instalaciones de Windows en la subcarpeta system32 de la carpeta de Windows (%WinDir%). Se puede usar para cargar cualquier dll que se encuentre en el sistema de archivos local y llamar a una función exportada en ese dll con un formato de llamada determinado. Hay muchos dlls en la carpeta system32 que exportan funciones. La mayoría de estas funciones exportadas esperan argumentos en un formato completamente diferente al que rundll32 proporcionará, lo que provoca que la aplicación se bloquee.

Primero debemos activar full page heap en rundll32 con el siguiente comando:

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

A continuación, iniciaremos BugId y le indicaremos que inicie rundll32 con argumentos que le instruyan cargar advapi32.dll y llamar a CloseThreadWaitChainSession. En el momento de escribir esto, eso causa la llamada violación de acceso por puntero NULL, que BugId debería detectar e informar.

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

Observa que hay un -- entre rundll32.exe y los argumentos que se le pasan. Esto se debe a que es posible que quieras proporcionar argumentos tanto a BugId como a la aplicación que quieres probar. Estos dos conjuntos de argumentos deben separarse por -- en la línea de comandos. Todo lo que esté antes de -- lo gestiona BugId y todo lo que esté después lo ignora BugId pero se pasa a la aplicación.

Si todo va bien, la salida de BugId tendrá este aspecto:

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 primera línea te indica la línea de comandos que BugId va a iniciar. La segunda línea te dice que esto provocó la creación de un nuevo proceso con process id 8024, ejecutando rundll32.exe y la línea de comandos para este proceso (que, por supuesto, es la misma que en la primera línea). Poco después de iniciar la aplicación, se detectó un error. BugId generó una identificación única (AVR@NULL a1f.904) para este error e informó que su ubicación está en la función WctRemoveEntry del dll advapi32.dll cargado por rundll32.exe. Dado que los bloqueos por puntero NULL normalmente no son explotables salvo para bloquear la aplicación, el impacto de seguridad del error es Denial of Service. De forma predeterminada, BugId genera un informe con formato HTML para cada error que encuentra y te dice la ubicación donde se almacenó este informe. Como puedes ver, el nombre del archivo del informe se basa en el id y la ubicación del error.

Cada id de error generado por BugId consta de dos partes separadas por un espacio. La primera parte describe el tipo de error. En el ejemplo anterior, AVR@NULL, esto significa Access Violation Reading memory at address NULL. La segunda parte describe la ubicación del error; consta de dos hashes cortos separados por un punto. Estos hashes se calculan a partir de las funciones superiores de la pila que se consideran relevantes para el error. En el ejemplo, a1f.904 consta de a1f (calculado a partir de advapi32.dll!WctRemoveEntry) y 904 (calculado a partir de advapi32.dll!CloseThreadWaitChainSession).

Si vuelves a ejecutar ese mismo comando, BugId informará exactamente el mismo BugId, ya que esto debería causar exactamente el mismo error en exactamente el mismo código.

¡Felicidades! Ya estás listo para probar tus propios bloqueos con BugId, pero es posible que quieras ejecutar BugId.cmd --help en algún momento para obtener información sobre las muchas opciones de línea de comandos que BugId soporta.

Notas

BugId ha sido desarrollado para y probado en un gran número de aplicaciones durante fuzzing para analizar cientos de miles de bloqueos causados por cientos de errores diferentes. En este rol, ha demostrado ser extremadamente preciso en el análisis de errores, con una tasa de falsos positivos y negativos muy baja; ambos son menores al 1%.

Por supuesto, no todos los tipos de errores son fáciles de detectar y analizar. Algunos errores no se pueden detectar de manera fiable en el momento en que ocurren, pero causan un bloqueo mucho más tarde en código completamente no relacionado, lo que lleva a un análisis completamente incorrecto. En tales casos, reproducir repetidamente el mismo error conducirá a varios ids de error diferentes, ya que la aplicación se bloquea de diferentes maneras en diferentes momentos. Para asegurarte de que este no es el caso, se te recomienda ejecutar tu caso de prueba en BugId varias veces para ver si el id de error sigue siendo el mismo.

Otros errores causan bloqueos que parecen ser causados por un tipo diferente de error. Esto puede resultar en análisis e ids de error incorrectos. En particular, los errores que son el resultado de bad casts (conversiones incorrectas) en código C/C++ son actualmente imposibles de detectar e informar por BugId. Pueden resultar en varios tipos diferentes de bloqueos; más comúnmente violaciones de acceso cuando valores almacenados en propiedades de un objeto se usan incorrectamente como punteros. Si sospechas que los bad casts podrían ser la causa de un bloqueo, deberías verificar dos veces el análisis realizado por BugId para asegurarte de que sea correcto.

BugId depende en gran medida de que la aplicación use full page heap para poder detectar y analizar una gran cantidad de errores relacionados con el heap. Esto significa que será mucho menos efectivo para detectar y analizar errores en aplicaciones que usan su propio administrador de heap interno que no depende del heap estándar de Windows.

Licencia

Creative Commons License BugId tiene un período de prueba gratuito de 30 días para uso comercial y no comercial. Durante este período de prueba, este trabajo está licenciado bajo una [Licencia Creative Commons Atribución-NoComercial 4.0 Internacional](http://creativecommons.org/licenses/by-nc/4.0/).

Después del período de prueba, se debe adquirir una licencia de pago en license.skylined.nl si deseas continuar usando BugId.

Las licencias no comerciales están disponibles por una tarifa muy pequeña; lo suficiente para cubrir mis gastos. Las licencias comerciales para investigadores de seguridad individuales también están disponibles con un gran descuento.

Si tienes alguna pregunta sobre las licencias o deseas hablar sobre un descuento por volumen, por favor contacta con [email protected].

BugId tiene un período de prueba para permitirte evaluar su utilidad. Si deseas continuar usando BugId después de que finalice el período de prueba, te pido que contribuyas con una pequeña tarifa para pagar mi trabajo en BugId y la gestión de la solicitud de licencia. Si estás usando BugId comercialmente, te pido que pagues una tarifa de licencia regular para compartir parte de las ganancias que obtienes de tu uso de BugId.

Descargar herramienta