
rhabdomancer v0.10.0
Asistente de investigación de vulnerabilidades que localiza llamadas a funciones de API potencialmente inseguras en un archivo binario.
rhabdomancer
"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
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
Ver también
- 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
Instalación
La forma más sencilla de obtener la última versión es a través de crates.io:
- Descargue, instale y configure IDA (ver https://hex-rays.com/ida-pro).
- Instale LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
- En Linux/macOS, instale de la siguiente manera:
En Windows, en su lugar, use los siguientes comandos:
export IDADIR=/path/to/ida # si no está configurado, el script de compilación verificará ubicaciones comunes cargo install rhabdomancer --locked$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:
- Descargue, instale y configure IDA (ver https://hex-rays.com/ida-pro).
- Instale LLVM/Clang (ver https://rust-lang.github.io/rust-bindgen/requirements.html).
- En Linux/macOS, compile de la siguiente manera:
En Windows, en su lugar, use los siguientes comandos:
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 --lockedgit 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
- Asegúrese de que IDA esté correctamente configurado con una licencia válida.
- Personalice la lista de funciones de API peligrosas conocidas en
conf/rhabdomancer.tomlsi es necesario. Puede anular la ubicación predeterminada del archivo de configuración configurando la variable de entornoRHABDOMANCER_CONFIG. - Asegúrese de que la variable de entorno
IDADIResté configurada si su instalación de IDA está en una ubicación no estándar. - Ejecute de la siguiente manera:
Cualquier archivo IDB
rhabdomancer <binary_file>.i64existente se actualizará; de lo contrario, se creará un nuevo archivo IDB. - Abra el archivo IDB
.i64resultante con IDA. - Seleccione
View>Open subviews>Bookmarks - 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.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | versió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:
- HN Security
- Hex-Rays a través de su Programa de Colaboradores
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_namepara cubrir más casos. - Implementar un conjunto de reglas básico al estilo de VulFi y VulnFanatic.