Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
BinAbsInspector — Scanner estático de vulnerabilidades binárias usando interpretação abstrata no Ghidra Pcode. Detecta classes CWE como estouros de buffer, use-after-free e injeção de comandos via execução simbólica com Z3. | Kitploit
Ferramentas/GitHubGitHub/keensecuritylab/binabsinspector
Análise EstáticaScanners de VulnerabilidadesEngenharia ReversaFuzzingAnálise de Binários
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

Scanner estático de vulnerabilidades binárias usando interpretação abstrata no Ghidra Pcode. Detecta classes CWE como estouros de buffer, use-after-free e injeção de comandos via execução simbólica com Z3.

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 →
Ver Repositório
1.7k24568há 2 anosRevisado pelo Kitploit
Compartilhar

O que é o BinAbsInspector?

BinAbsInspector (Binary Abstract Inspector) é um analisador estático para engenharia reversa automatizada e varredura de vulnerabilidades em binários, que é um projeto de pesquisa de longo prazo incubado no Keenlab. É baseado em interpretação abstrata com suporte do Ghidra. Ele trabalha com o Pcode do Ghidra em vez de assembly. Atualmente, suporta binários em x86, x64, armv7 e aarch64.

Instalação

  • Instale o Ghidra de acordo com a documentação do Ghidra
  • Instale o Z3 (versão testada: 4.8.15)
  • Observe que geralmente existem duas partes para a biblioteca Z3: uma é o pacote Java, a outra é a biblioteca nativa. O pacote Java já está incluído no diretório "/lib", mas sugerimos que você o substitua pelo seu próprio pacote Java para compatibilidade de versão.
    • Para Windows, baixe um pacote pré-compilado de aqui, extraia o arquivo zip e adicione uma variável de ambiente PATH apontando para z3-${version}-win/bin
    • Para Linux, a instalação com gerenciador de pacotes NÃO é recomendada, existem duas opções:
      1. Você pode baixar um pacote pré-compilado adequado de aqui, extrair o arquivo zip e copiar z3-${version}-glibc-${version}/bin/*.so para /usr/local/lib/
      2. ou você pode compilar e instalar o z3 de acordo com Compilando Z3 usando make e GCC/Clang
    • Para MacOS, é semelhante ao Linux.
  • Baixe o arquivo zip da extensão da página de releases
  • Instale a extensão de acordo com as Notas de Extensão do Ghidra

Compilação

Compile a extensão por conta própria; se quiser desenvolver um novo recurso, consulte o guia de desenvolvimento.

  • Instale o Ghidra e o Z3
  • Instale o Gradle 7.x (versão testada: 7.4)
  • Faça pull do repositório
  • Execute gradle buildExtension na raiz do repositório
  • A extensão será gerada em dist/${GhidraVersion}_${date}_BinAbsInspector.zip

Uso

Você pode executar o BinAbsInspector no modo headless, no modo GUI ou com Docker.

  • Com o modo headless do Ghidra.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"

<projectPath> -- Caminho do projeto Ghidra.
<projectName> -- Nome do projeto Ghidra.
<scriptParams> -- O argumento para nosso analisador, fornece as seguintes opções:

ParameterDescription
[-K <kElement>]Limite de tamanho do KSet K
[-callStringK <callStringMaxLen>]Comprimento máximo da string de chamada K
[-Z3Timeout <timeout>]Timeout do Z3
[-timeout <timeout>]Timeout da análise
[-entry <address>]Endereço de entrada
[-externalMap <file>]Configuração do modelo de função externa
[-json]Saída em formato json
[-disableZ3]Desabilitar Z3
[-all]Habilitar todos os verificadores
[-debug]Habilitar saída de log de depuração
[-check "<cweNo1>[;<cweNo2>...]"]Habilitar verificadores específicos
  • Com a GUI do Ghidra

    1. Execute o Ghidra e importe o binário alvo para um projeto
    2. Analise o binário com as configurações padrão
    3. Quando a análise terminar, abra Window -> Script Manager e encontre BinAbsInspector.java
    4. Clique duas vezes na entrada BinAbsInspector.java, defina os parâmetros na janela de configuração e clique em OK
    5. Quando a análise terminar, você pode ver os relatórios de CWE na janela do console; clicar duas vezes nos endereços do relatório permite saltar para o endereço correspondente
  • Com Docker

git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>

Verificadores Implementados

Até o momento, o BinAbsInspector suporta os seguintes verificadores:

  • CWE78 (Injeção de Comando do SO)
  • CWE119 (Estouro de Buffer (caso genérico))
  • CWE125 (Estouro de Buffer (Leitura fora dos limites))
  • CWE134 (Uso de string de formato controlada externamente)
  • CWE190 (Estouro de inteiro ou wraparound)
  • CWE367 (Tempo de verificação, tempo de uso (TOCTOU))
  • CWE415 (Dupla liberação)
  • CWE416 (Uso após liberação)
  • CWE426 (Caminho de pesquisa não confiável)
  • CWE467 (Uso de sizeof() em um tipo ponteiro)
  • CWE476 (Desreferência de ponteiro NULL)
  • CWE676 (Uso de função potencialmente perigosa)
  • CWE787 (Estouro de Buffer (Escrita fora dos limites))

Estrutura do Projeto

A estrutura deste projeto é a seguinte; consulte os detalhes técnicos ou o artigo em chinês para mais detalhes.

├── main
│   ├── java
│   │   └── com
│   │       └── bai
│   │           ├── checkers                       implementação de verificador
│   │           ├── env
│   │           │   ├── funcs                      modelagem de função
│   │           │   │   ├── externalfuncs          modelagem de função externa
│   │           │   │   └── stdfuncs               modelagem padrão cpp
│   │           │   └── region                     modelagem de memória
│   │           ├── solver                         núcleo de análise e módulo de gráfico
│   │           └── util                           utilitários
│   └── resources
└── test

Você também pode compilar o javadoc com gradle javadoc; a documentação da API será gerada em ./build/docs/javadoc.

Agradecimentos

Utilizamos o Ghidra como nossa base e frequentemente recorremos ao JImmutable Collections para melhor desempenho.
Aqui gostaríamos de agradecê-los pela grande ajuda!

Baixar ferramenta