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
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.

Ver Repositório

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 →
1.7k24514há 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/
  • 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.
    root@kitploit:~
    $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

    root@kitploit:~
    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.

    root@kitploit:~
    ├── 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