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 trazar hacia atrás desde estos puntos candidatos para encontrar rutas que permitan el acceso a entradas no confiables.

Características

  • Experiencia de usuario headless y extremadamente rápida gracias a IDA 9.x y los bindings de Rust de 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 la 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 deberían revisarse para detectar casos de uso inseguros.
    • [BAD 2] Prioridad baja - Las rutas de código que involucran estas funciones deben revisarse 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. Descarga, instala y configura IDA (consulta https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (consulta https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, instala de la siguiente manera:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer
    
    En Windows, por el contrario, usa los siguientes 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
    

Compilación

Alternativamente, puedes compilar desde el código fuente:

  1. Descarga, instala y configura IDA (consulta https://hex-rays.com/ida-pro).
  2. Instala LLVM/Clang (consulta https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. En Linux/macOS, compila de la siguiente manera:
    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
    
    En Windows, por el contrario, usa 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" # if not set, the build script will check common locations
    cargo build --release
    

Uso

  1. Asegúrate de que IDA esté correctamente configurado con una licencia válida.
  2. Personaliza la lista de funciones de API peligrosas conocidas en conf/rhabdomancer.toml si es necesario. Puedes anular la ubicación predeterminada del archivo de configuración estableciendo la variable de entorno RHABDOMANCER_CONFIG.
  3. Asegúrate de que la variable de entorno IDADIR esté definida si tu instalación de IDA se encuentra en una ubicación no estándar.
  4. Ejecuta de la siguiente manera:
    rhabdomancer <binary_file>
    
    Cualquier archivo IDB .i64 existente se actualizará; de lo contrario, se creará un nuevo archivo IDB.
  5. Abre el archivo IDB .i64 resultante con IDA.
  6. Selecciona View > Open subviews > Bookmarks
  7. Disfruta de tus resultados recopilados cómodamente en una ventana de IDA.

[!NOTE] Rhabdomancer también añade 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 versión compatible más reciente 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.260714current release

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

Créditos

El desarrollo de este proyecto ha contado con el apoyo de las siguientes organizaciones:

Registro de cambios

TODO

  • Ampliar aún más la lista de funciones de API peligrosas conocidas (consulta 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