Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
BugId — Detecte, analise e identifique de forma única falhas em aplicativos Windows. | Kitploit
Ferramentas/GitHubGitHub/skylined/bugid
Análise de VulnerabilidadesAnálise Dinâmica de Código (DAST)DepuradoresFuzzingAnálise de Binários
GitHubskylined/bugid

BugId

Detecte, analise e identifique de forma única falhas em aplicativos Windows.

Ver Repositório
52586há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

BugId

Detecte, analise e identifique exclusivamente bugs de aplicações.

TL;DR

Você...

  • quer saber que tipo de bug está fazendo uma aplicação falhar?
  • quer saber se um bug pode ser uma vulnerabilidade de segurança?
  • quer descobrir se duas ou mais falhas são causadas pelo mesmo bug?
  • quer um relatório legível por humanos com uma análise de um bug?

...então o BugId pode ser para você!

Configuração rápida

Para usar o BugId, baixe e instale o seguinte software:

  • Última versão do Python 2.7.14
  • Última versão do Debugging Tools for Windows
  • Última versão do BugId release

Se você instalar o Python e o Debugging Tools for Windows com as configurações padrão, o BugId deve ser capaz de rodar sem precisar ajustar nenhuma configuração. Você pode descompactar o BugId em qualquer lugar do seu sistema de arquivos local.

Antes de iniciar o BugId, você deve habilitar o full page heap na aplicação alvo. Isso pode ser feito por binário, definindo certos Global Flags. A maneira mais fácil de fazer isso é usar o script pageheap.cmd que acompanha o BugId. Por exemplo, para habilitar o full page heap para o notepad, execute o seguinte comando:

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

(Observe que este comando deve ser executado em um prompt de comando elevado, com acesso administrativo à máquina).

Para facilitar ainda mais, o pageheap.cmd tem uma lista de aplicações conhecidas. Você pode habilitar ou desabilitar o full page heap para qualquer uma delas informando seu nome, ex.: pageheap msie ON habilita o full page heap para o Microsoft Internet Explorer. Use pageheap /? para obter mais informações sobre os argumentos de linha de comando.

Neste ponto, você pode querer testar se o BugId está funcionando corretamente. Podemos fazer isso executando uma aplicação no BugId e provocando uma falha para ver se o BugId relata o bug corretamente. Uma boa aplicação para usar neste teste é o rundll32.exe, que está presente em todas as instalações do Windows, na sub-pasta system32 da pasta do Windows (%WinDir%). Ele pode ser usado para carregar qualquer dll encontrada no sistema de arquivos local e chamar uma função exportada dessa dll com um determinado formato de chamada. Há muitas dlls na pasta system32 que exportam funções. A maioria dessas funções exportadas espera argumentos em um formato completamente diferente do que o rundll32 fornecerá, fazendo com que a aplicação falhe.

Primeiro, devemos ativar o full page heap no rundll32 com o seguinte comando:

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

Em seguida, iniciaremos o BugId e diremos a ele para iniciar o rundll32 com argumentos que o instruam a carregar advapi32.dll e chamar CloseThreadWaitChainSession. No momento em que este texto foi escrito, isso causa uma chamada violação de acesso de ponteiro NULL, que o BugId deve detectar e relatar.

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

Observe que há um -- entre o rundll32.exe e os argumentos passados a ele. Isso ocorre porque você pode querer fornecer argumentos tanto para o próprio BugId quanto para a aplicação que deseja testar. Esses dois conjuntos de argumentos devem ser separados por -- na linha de comando. Tudo antes de -- é tratado pelo BugId e tudo depois é ignorado pelo BugId, mas passado para a aplicação.

Se tudo estiver correto, a saída do BugId será semelhante a esta:

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)
'-------------------------------------------------------------------------------

A primeira linha informa a linha de comando que o BugId irá iniciar. A segunda linha informa que isso fez com que um novo processo fosse criado com process id 8024, executando rundll32.exe e a linha de comando para este processo (que é naturalmente a mesma da primeira linha). Logo após iniciar a aplicação, um bug foi detectado. O BugId gerou um id único (AVR@NULL a1f.904) para este bug e relatou que sua localização está na função WctRemoveEntry da dll advapi32.dll carregada por rundll32.exe. Como falhas por ponteiro NULL normalmente não são exploráveis além de derrubar a aplicação, o impacto de segurança do bug é Denial of Service. Por padrão, o BugId gera um relatório formatado em HTML para cada bug que encontra e informa o local onde esse relatório foi armazenado. Como você pode ver, o nome do arquivo do relatório é baseado no id e na localização do bug.

Todo id de bug gerado pelo BugId consiste em duas partes separadas por um espaço. A primeira parte descreve o tipo de bug. No exemplo acima, AVR@NULL, isso significa Access Violation Reading memory at address NULL (violação de acesso lendo memória no endereço NULL). A segunda parte descreve a localização do bug; ela consiste em dois hashes curtos separados por um ponto. Esses hashes são calculados a partir das funções no topo da pilha consideradas relevantes para o bug. No exemplo, a1f.904 consiste em a1f (calculado a partir de advapi32.dll!WctRemoveEntry) e 904 (calculado a partir de advapi32.dll!CloseThreadWaitChainSession).

Se você executar o mesmo comando novamente, o BugId relatará exatamente o mesmo BugId, pois isso deve causar exatamente o mesmo bug no mesmo código.

Parabéns! Você agora está pronto para testar suas próprias falhas com o BugId, mas pode querer executar BugId.cmd --help em algum momento para obter informações sobre as muitas opções de linha de comando diferentes que o BugId suporta.

Notas

O BugId foi desenvolvido e testado em um grande número de aplicações durante fuzzing para analisar centenas de milhares de falhas causadas por centenas de bugs diferentes. Nesse papel, ele provou ser extremamente preciso ao analisar bugs, com uma taxa muito baixa de falsos positivos e negativos; ambos são inferiores a 1%.

Naturalmente, nem todos os tipos de bugs são fáceis de detectar e analisar. Alguns bugs atualmente não podem ser detectados de forma confiável no momento em que ocorrem, mas causam uma falha muito mais tarde, em código completamente não relacionado, levando a uma análise completamente incorreta. Nesses casos, reproduzir repetidamente o mesmo bug levará a vários ids de bug diferentes, pois a aplicação falha de maneiras diferentes em momentos diferentes. Para garantir que esse não seja o caso, você é aconselhado a executar seu caso de teste no BugId várias vezes para ver se o id do bug permanece o mesmo.

Outros bugs causam falhas que parecem ser causadas por um tipo diferente de bug. Isso pode resultar em análises e ids de bug incorretos. Principalmente, bugs que resultam de bad casts (conversões inválidas) em código C/C++ são atualmente impossíveis de detectar e relatar pelo BugId. Eles podem resultar em vários tipos diferentes de falhas; mais comumente, violações de acesso quando valores armazenados em propriedades de um objeto são usados incorretamente como ponteiros. Se você suspeitar que bad casts podem ser a causa de uma falha, você deve verificar novamente a análise feita pelo BugId para garantir que ela está correta.

O BugId depende fortemente do full page heap estar sendo usado pela aplicação para conseguir detectar e analisar um grande número de bugs relacionados ao heap. Isso significa que ele será muito menos eficaz na detecção e análise de bugs em aplicações que usam seu próprio gerenciador de heap interno, que não depende do heap padrão do Windows.

Licença

Creative Commons License O BugId tem um período de teste gratuito de 30 dias para uso comercial e não comercial. Durante esse período de teste, este trabalho é licenciado sob uma [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/).

Após o período de teste, uma licença paga deve ser adquirida em license.skylined.nl se você quiser continuar a usar o BugId.

Licenças Não Comerciais estão disponíveis por uma taxa muito pequena; apenas o suficiente para pagar minhas despesas. Licenças comerciais para pesquisadores de segurança individuais também estão disponíveis com um grande desconto.

Se você tiver alguma dúvida sobre licenciamento, ou quiser discutir um desconto por volume, entre em contato com [email protected].

O BugId tem um período de teste para permitir que você avalie sua utilidade. Se você quiser continuar a usar o BugId após o término do período de teste, peço que contribua com uma pequena taxa para pagar pelo meu trabalho no BugId e pelo gerenciamento do pedido de licença. Se você estiver usando o BugId comercialmente, peço que pague uma taxa de licença regular para compartilhar parte do lucro que você está obtendo com o uso do BugId.

Baixar ferramenta