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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
rhabdomancer — Assistente de pesquisa de vulnerabilidades que localiza chamadas a funções de API potencialmente inseguras em um arquivo binário. | Kitploit
Ferramentas/GitHubGitHub/0xdea/rhabdomancer
Análise EstáticaAnálise de VulnerabilidadesEngenharia ReversaAnálise de Binários
GitHub0xdea/rhabdomancer

rhabdomancer

Assistente de pesquisa de vulnerabilidades que localiza chamadas a funções de API potencialmente inseguras em um arquivo binário.

Ver Repositório
1311529há 1 diaRevisado 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 →
Site
Compartilhar

rhabdomancer

build doc

"O caminho para bugs exploráveis é pavimentado com bugs não exploráveis."

-- Mark Dowd

Rhabdomancer é um plugin headless extremamente rápido para IDA que localiza chamadas a funções de API potencialmente inseguras em um arquivo binário. Auditores podem fazer backtrace a partir desses pontos candidatos para encontrar caminhos que permitam acesso a entrada não confiável.

Recursos

  • Experiência de usuário headless extremamente rápida, cortesia do IDA 9.x e dos bindings Rust idalib-rs.
  • Suporte a alvos binários C/C++ compilados para qualquer arquitetura implementada pelo IDA.
  • Locais de chamadas a funções de API ruins são impressos em stdout e marcados no IDB.
    • Locais de chamada em código de biblioteca reconhecido pelo IDA (por exemplo, um runtime estaticamente vinculado correspondido por assinaturas FLIRT) são rotulados como (lib).
    • Chamadas através de stubs (por exemplo, as entradas .plt de binários ELF ou os stubs de importação de binários PE e Mach-O, listados como thunks) são rastreadas de volta até seus chamadores.
    • Em binários ELF, uma função é deliberadamente listada duas vezes com os mesmos locais de chamada: uma vez como seu stub .plt (marcado como thunk) e uma vez como sua importação. Cada local de chamada é marcado apenas uma vez no IDB.
  • Funções de API ruins conhecidas são agrupadas em níveis de maldade para ajudar a priorizar o trabalho de auditoria.
    • [BAD 0] Alta prioridade - Funções geralmente consideradas inseguras.
    • [BAD 1] Média prioridade - Funções interessantes que devem ser verificadas quanto a casos de uso inseguros.
    • [BAD 2] Baixa prioridade - Caminhos de código envolvendo essas funções devem ser cuidadosamente verificados.
  • A lista de funções de API ruins conhecidas é embutida e pode ser facilmente personalizada com um arquivo de configuração baseado em conf/rhabdomancer.toml.
  • Nomes de funções são correspondidos sem estas decorações: pontos e sublinhados iniciais (por exemplo, _strcpy), os prefixos de aliases de biblioteca (por exemplo, __o_malloc no Universal CRT, __libc_system e __GI___snprintf na glibc) e, apenas para stubs e tais aliases, o sufixo numérico que o IDA acrescenta a nomes já em uso (por exemplo, memset_0).

[!NOTE] Funções fortificadas (por exemplo, __strcpy_chk, usada em vez de strcpy ao compilar com _FORTIFY_SOURCE) são deliberadamente não correspondidas, pois são as variantes verificadas das funções listadas. Para também marcar suas chamadas, adicione-as explicitamente a uma configuração personalizada (por exemplo, "__strcpy_chk" com a mesma prioridade que strcpy).

Artigos

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

Veja também

  • https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html

Instalação

A maneira mais fácil de obter a versão mais recente é via crates.io:

  1. Baixe, instale e configure o IDA (consulte https://hex-rays.com/ida-pro).
  2. Instale o LLVM/Clang (consulte https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. No Linux/macOS, instale da seguinte forma:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    
    No Windows, em vez disso, use os seguintes comandos:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    

Compilação

Como alternativa, você pode compilar a partir do código-fonte:

  1. Baixe, instale e configure o IDA (consulte https://hex-rays.com/ida-pro).
  2. Instale o LLVM/Clang (consulte https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. No Linux/macOS, compile da seguinte forma:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release --locked
    
    No Windows, em vez disso, use os seguintes comandos:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo build --release --locked
    

Uso

  1. Certifique-se de que o IDA esteja configurado corretamente com uma licença válida.
  2. Opcionalmente, personalize a lista de funções de API maliciosas conhecidas: copie conf/rhabdomancer.toml (escolha a tag que corresponde à sua versão instalada para obter sua lista interna exata), edite a cópia e defina a variável de ambiente RHABDOMANCER_CONFIG com o caminho dela. O arquivo deve definir os arrays high, medium e low, e nenhuma outra chave. Caso contrário, a lista interna é usada, a qual é incorporada ao binário no momento da compilação a partir de conf/rhabdomancer.toml (editar esse arquivo requer uma recompilação).
  3. Certifique-se de que a variável de ambiente IDADIR esteja definida se a sua instalação do IDA estiver em um local não padrão.
  4. Execute da seguinte forma:
    rhabdomancer <binary_file>
    
    Qualquer arquivo IDB .i64 existente será atualizado; caso contrário, um novo arquivo IDB será criado.
  5. Abra o arquivo IDB .i64 resultante com o IDA.
  6. Selecione View > Open subviews > Bookmarks
  7. Aproveite seus resultados convenientemente reunidos em uma janela do IDA.

[!NOTE] O Rhabdomancer também adiciona comentários nos locais de chamada marcados. Tanto os marcadores quanto os comentários são etiquetados como [BAD n] <function_name>, onde n é o nível de prioridade (0 = alto, 1 = médio, 2 = baixo), para que os scripts possam procurá-los nos IDBs. Este formato é estável entre versões.

Compatibilidade

Apenas a versão mais recente do IDA é oficialmente suportada, mas versões mais antigas também podem funcionar. A tabela a seguir resume a versão compatível mais recente para cada versão do IDA:

Baixar ferramenta