Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
rhabdomancer — Asistente de investigación de vulnerabilidades que localiza llamadas a funciones de API potencialmente inseguras en un archivo binario. | Kitploit
Herramientas/GitHubGitHub/0xdea/rhabdomancer
Análisis EstáticoAnálisis de VulnerabilidadesIngeniería InversaAnálisis de Binarios
GitHub0xdea/rhabdomancer

rhabdomancer

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

Ver Repositorio
1311531hace 4 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web
Compartir
# rhabdomancer

[![](https://img.shields.io/github/stars/0xdea/rhabdomancer.svg?style=flat&color=yellow)](https://github.com/0xdea/rhabdomancer)
[![](https://img.shields.io/crates/v/rhabdomancer?style=flat&color=green)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/crates/d/rhabdomancer?style=flat&color=red)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/badge/ida-9.4-violet)](https://hex-rays.com/ida-pro)
[![](https://img.shields.io/badge/[email protected])](https://twitter.com/0xdea)
[![](https://img.shields.io/badge/[email protected])](https://infosec.exchange/@raptor)
[![build](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml)
[![doc](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml)

> "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 un backtrace desde estos puntos candidatos para encontrar
rutas que permitan el acceso a entrada no confiable.

![](https://assets.kitploit.com/production/public/readmes/49813/668212019df8d7b843ca6bcd0e68432321528d6d1a229ce774358fa80fbecfb2.png)

## Características

- Experiencia de usuario headless y extremadamente rápida gracias a IDA 9.x y los bindings de Rust idalib-rs.
- Soporte para objetivos binarios C/C++ compilados para cualquier arquitectura implementada por IDA.
- Las ubicaciones de llamadas a funciones de API maliciosas se imprimen en stdout y se marcan en el IDB.
  - Las ubicaciones de llamadas en código de biblioteca reconocido por IDA (por ejemplo, un runtime enlazado
    estáticamente que coincide con firmas FLIRT) se etiquetan como `(lib)`.
  - Las llamadas a través de stubs (por ejemplo, las entradas `.plt` de binarios ELF o los stubs de importación de
    binarios PE y Mach-O, listados como thunks) se rastrean hasta sus llamadores.
  - En binarios ELF, una función se lista deliberadamente dos veces con las mismas ubicaciones de llamada: una vez como
    su stub `.plt` (marcado como thunk) y otra como su importación. Cada ubicación de llamada se marca solo una vez en
    el IDB.
- Las funciones de API maliciosas 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 en busca de casos de uso inseguros.
  - [BAD 2] Prioridad baja - Las rutas de código que involucran estas funciones deberían revisarse cuidadosamente.
- La lista de funciones de API maliciosas conocidas está integrada y puede personalizarse fácilmente con un archivo de
  configuración basado en `conf/rhabdomancer.toml`.
- Los nombres de funciones se comparan sin estas decoraciones: puntos y guiones bajos iniciales (por ejemplo,
  `_strcpy`), los prefijos de alias de biblioteca (por ejemplo, `__o_malloc` en el Universal CRT, `__libc_system` y
  `__GI___snprintf` en glibc) y, solo para stubs y dichos alias, el sufijo numérico que IDA añade a los nombres ya en
  uso (por ejemplo, `memset_0`).

> [!NOTE]
> Las funciones fortificadas (por ejemplo, `__strcpy_chk`, usada en lugar de `strcpy` al compilar con
> `_FORTIFY_SOURCE`) deliberadamente no se comparan, ya que son las variantes verificadas de las funciones listadas.
> Para marcar también sus llamadas, añádelas explícitamente a una configuración personalizada (por ejemplo,
> `"__strcpy_chk"` con la misma prioridad que `strcpy`).

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

## Véase 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](https://crates.io/crates/rhabdomancer):

1. Descargue, instale y configure IDA (consulte <https://hex-rays.com/ida-pro>).
2. Instale LLVM/Clang (consulte <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. En Linux/macOS, instale de la siguiente manera:
   ```sh
   export IDADIR=/path/to/ida # if not set, the build script will check common locations
   cargo install rhabdomancer --locked
   ```
   En Windows, en su lugar, utilice los siguientes comandos:
   ```powershell
   $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
   ```

## Compilación

Alternativamente, puedes compilar desde el [código fuente](https://github.com/0xdea/rhabdomancer):

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:
   ```sh
   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
   ```
   En Windows, en su lugar, utilice los siguientes comandos:
   ```powershell
   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. Asegúrate de que IDA esté configurado correctamente con una licencia válida.
2. Opcionalmente, personaliza la lista de funciones API maliciosas conocidas: copia
   [`conf/rhabdomancer.toml`](https://github.com/0xdea/rhabdomancer/blob/master/conf/rhabdomancer.toml) (elige la etiqueta
   que coincida con tu versión instalada para obtener su lista integrada exacta), edita la copia y establece la variable de entorno `RHABDOMANCER_CONFIG`
   con su ruta. El archivo debe definir los arrays `high`, `medium` y `low`, y ninguna otra clave.
   De lo contrario, se utiliza la lista integrada, que se incrusta en el binario en el momento de la compilación desde `conf/rhabdomancer.toml`
   (editar ese archivo requiere recompilar).
3. Asegúrate de que la variable de entorno `IDADIR` esté establecida si tu instalación de IDA se encuentra en una ubicación no estándar.
4. Ejecútalo de la siguiente manera:
   ```sh
   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 añade comentarios en las ubicaciones de llamadas marcadas. Tanto los marcadores como los comentarios se etiquetan como
> `[BAD n] <function_name>`, donde `n` es el nivel de prioridad (0 = alto, 1 = medio, 2 = bajo), de modo que los scripts puedan
> buscarlos en los IDB. Este formato es estable entre versiones.

## 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            |
| v9.4.260915 | versión actual            |

> [!NOTE]
> Consulte la documentación de [idalib-rs](https://github.com/idalib-rs/idalib) para obtener información adicional.

## Créditos

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

- [HN Security](https://hnsecurity.it)
- [Hex-Rays](https://hex-rays.com) a través de su [Contributor Program](https://hex-rays.com/contributor-program)

## Registro de cambios

- [CHANGELOG.md](https://github.com/0xdea/rhabdomancer/blob/master/CHANGELOG.md)

## TODO

- Enriquecer aún más la lista conocida de funciones API maliciosas (consulte <https://github.com/0xdea/semgrep-rules>).
- Seguir las llamadas a través de thunks fuera de los segmentos `.plt` (por ejemplo, thunks `j_` de enlace incremental de MSVC).
- Considerar omitir el marcado de ubicaciones de llamadas en código de biblioteca reconocido por IDA (actualmente solo etiquetado como `(lib)`).
- Implementar salida serializada para facilitar el análisis y el parseo automatizados.
- Implementar un conjunto de reglas básico al estilo de [VulFi](https://github.com/Accenture/VulFi)
  y [VulnFanatic](https://github.com/Martyx00/VulnFanatic).
Descargar herramienta