Volver a actualizaciones
Nuevo releaseAug 20, 2026

rhabdomancer v0.10.0

Asistente de investigación de vulnerabilidades que localiza llamadas a funciones de API potencialmente inseguras en un archivo binario.

Compartir

rhabdomancer

build doc

"El camino hacia los bugs explotables está pavimentado con bugs no explotables."

-- Mark Dowd

Rhabdomancer es un plugin headless de IDA extremadamente rápido que localiza llamadas a funciones de API potencialmente inseguras en un archivo binario. Los auditores pueden hacer backtracking desde estos puntos candidatos para encontrar rutas que permitan el acceso a entradas no confiables.

Características

  • Experiencia de usuario headless extremadamente rápida gracias a IDA 9.x y los bindings de Rust idalib-rs.
  • Soporte para binarios C/C++ compilados para cualquier arquitectura implementada por IDA.
  • Las ubicaciones de llamadas a funciones de API peligrosas se imprimen en stdout y se marcan en el IDB.
  • Las funciones de API peligrosas conocidas se agrupan en niveles de peligrosidad para ayudar a priorizar el trabajo de auditoría.
    • [BAD 0] Prioridad alta - Funciones que generalmente se consideran inseguras.
    • [BAD 1] Prioridad media - Funciones interesantes que deben verificarse para casos de uso inseguros.
    • [BAD 2] Prioridad baja - Las rutas de código que involucran estas funciones deben verificarse cuidadosamente.
  • La lista de funciones de API peligrosas conocidas se puede personalizar fácilmente editando conf/rhabdomancer.toml.

Artículos

Ver también

Instalación

La forma más sencilla de obtener la última versión es a través de crates.io:

  1. Descargue, instale y configure IDA (ver https://hex-rays.com/ida-pro).
  2. Instale LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, instale de la siguiente manera:
    export IDADIR=/path/to/ida # si no está configurado, el script de compilación verificará ubicaciones comunes
    cargo install rhabdomancer --locked
    
    En Windows, en su lugar, use los siguientes comandos:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # si no está configurado, el script de compilación verificará ubicaciones comunes
    cargo install rhabdomancer --locked
    

Compilación

Alternativamente, puede compilar desde el código fuente:

  1. Descargue, instale y configure IDA (ver https://hex-rays.com/ida-pro).
  2. Instale LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, compile de la siguiente manera:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # si no está configurado, el script de compilación verificará ubicaciones comunes
    cargo build --release --locked
    
    En Windows, en su lugar, use los siguientes 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" # si no está configurado, el script de compilación verificará ubicaciones comunes
    cargo build --release --locked
    

Uso

  1. Asegúrese de que IDA esté correctamente configurado con una licencia válida.
  2. Personalice la lista de funciones de API peligrosas conocidas en conf/rhabdomancer.toml si es necesario. Puede anular la ubicación predeterminada del archivo de configuración configurando la variable de entorno RHABDOMANCER_CONFIG.
  3. Asegúrese de que la variable de entorno IDADIR esté configurada si su instalación de IDA está en una ubicación no estándar.
  4. Ejecute de la siguiente manera:
    rhabdomancer <binary_file>
    
    Cualquier archivo IDB .i64 existente se actualizará; de lo contrario, se creará un nuevo archivo IDB.
  5. Abra el archivo IDB .i64 resultante con IDA.
  6. Seleccione View > Open subviews > Bookmarks
  7. Disfrute de sus resultados convenientemente recopilados en una ventana de IDA.

[!NOTE] Rhabdomancer también agrega comentarios en las ubicaciones de llamadas marcadas.

Compatibilidad

Solo se admite oficialmente la última versión de IDA, pero las versiones anteriores también pueden funcionar. La siguiente tabla resume la última versión compatible para cada versión de IDA:

Versión de IDAÚltima versión compatible
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.6
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714versión actual

[!NOTE] Consulte la documentación de idalib-rs para obtener información adicional.

Créditos

El desarrollo de este proyecto ha sido respaldado por las siguientes organizaciones:

Registro de cambios

PENDIENTE

  • Enriquecer aún más la lista de funciones de API peligrosas conocidas (ver https://github.com/0xdea/semgrep-rules).
  • Considerar ampliar el alcance de la normalización en normalize_name para cubrir más casos.
  • Implementar un conjunto de reglas básico al estilo de VulFi y VulnFanatic.

Categorías