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
ghidra — Ghidra es un framework de ingeniería inversa de software (SRE) | Kitploit
Herramientas/GitHubGitHub/nationalsecurityagency/ghidra
Seguridad AndroidSeguridad de Sistemas EmbebidosAnálisis EstáticoAnálisis Dinámico (Sandboxing)Frameworks de ExploitsForensia de MemoriaAnálisis de VulnerabilidadesAnálisis de CódigoPentesting de Apps MóvilesIngeniería InversaScripting y Automatización
71.1k7.8k117hace 1 díaRevisado 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 →
Depuradores
Análisis de Malware
CTF
Seguridad Móvil
Análisis de Binarios
Aprendizaje y Educación
Reversing Asistido por IA
Análisis de Firmware
Explotación de Binarios
Top en Reversing Asistido por IA #5
Top en Seguridad Android #15
Top en Análisis de Binarios #1
Top en Explotación de Binarios #8
Top en Análisis de Código #5
Top en CTF #13
Top en Depuradores #8
Top en Análisis Dinámico (Sandboxing) #18
Top en Seguridad de Sistemas Embebidos #8
Top en Análisis de Firmware #8
Top en Análisis de Malware #7
Top en Forensia de Memoria #18
Top en Pentesting de Apps Móviles #18
Top en Seguridad Móvil #18
Top en Ingeniería Inversa #1
Top en Análisis Estático #1
GitHubnationalsecurityagency/ghidra

ghidra

Ghidra es un framework de ingeniería inversa de software (SRE)

Ver RepositorioSitio web
Compartir
# Ghidra Dockerizado

## Construcción

Desde el directorio raíz de tu versión de Ghidra, ejecuta el siguiente comando.

```
./docker/build-docker-image.sh
```

Esto construirá la imagen docker de Ghidra con una etiqueta correspondiente a la versión de Ghidra.

## La variable de entorno MODE

El Contenedor Docker de Ghidra soporta los siguientes `MODE` de ejecución:
- gui
- headless
- ghidra-server
- bsim
- bsim-server
- pyghidra

La variable de entorno `MODE` designa qué punto de entrada de Ghidra ejecutar.

El script `entrypoint.sh` se ejecuta al iniciar el contenedor.

## Configuración de un Contenedor

La configuración de un contenedor se realiza igual que cualquier otro contenedor docker.
Se pueden montar volúmenes, establecer variables de entorno, mapear puertos del contenedor al host, etc.
Los pasos de configuración varían mucho según el `MODE` con el que se inicie el contenedor.

El directorio base de Ghidra dentro del contenedor se encuentra en `/ghidra`.
Todas las ubicaciones predeterminadas de Ghidra para archivos, configuraciones, etc., son las mismas dentro de ese directorio.
Ghidra se ejecuta como el usuario `ghidra` dentro del contenedor, con uid `1001` y guid `1001`.

El usuario `ghidra` solo tiene permisos sobre los siguientes directorios dentro del contenedor:
- `/ghidra`
- `/home/ghidra`

Cuando un contenedor no recibe ningún argumento pasado con el comando `docker run`,
la Interfaz de Línea de Comandos (CLI) correspondiente al `MODE` ejecutado mostrará su declaración de uso.

### Mapeo de Volúmenes Locales a un Contenedor

Los volúmenes dentro del contenedor pueden tener problemas de permisos si no son accesibles por usuarios del grupo id `1001`.

El uid y guid predeterminados para el contenedor son `1001:1001`. Los volúmenes que se mapeen al contenedor deben ser accesibles por este uid/guid.

Agregar el usuario de la máquina host al grupo `1001` en el host ayuda a gestionar los volúmenes que se usarán en el contenedor.
Esto se puede hacer fácilmente ejecutando `sudo usermod -aG 1001 <usuario>` en Linux.

### Ejemplo del Modo Headless

```
docker run \
    --env MODE=headless \
    --rm \
    --volume /path/to/myproject:/home/ghidra/myproject \
    --volume /path/to/mybinary:/home/ghidra/mybinary \
    ghidra/ghidra:<version> \
    /home/ghidra/myproject programFolder -import /home/ghidra/mybinary
```

Desglosando esto línea por línea:
- `docker run` va a iniciar un contenedor docker usando la imagen `ghidra/ghidra<:<version>`
- `--env MODE=headless` configura la variable de entorno `MODE` dentro del contenedor con el valor `headless`
- `--rm` elimina el contenedor después de que el comando se complete
- `--volume /path/to/myproject:/home/ghidra/myproject` monta el volumen local
	`/path/to/myproject` en el host a `/home/ghidra/myproject` dentro del contenedor
- `--volume /path/to/mybinary:/home/ghidra/mybinary` monta el volumen local
	`/path/to/mybinary` en el host a `/home/ghidra/mybinary` dentro del contenedor
- `ghidra/ghidra:<version>` es la referencia completa de la imagen docker, donde `ghidra/ghidra` es el grupo y nombre de la imagen, y `<version>` es la etiqueta.
- `/home/ghidra/myproject programFolder -import /home/ghidra/mybinary` son argumentos que se pasan a la interfaz de línea de comandos del analizador headless de Ghidra

No pasar argumentos resultará en que se muestre el uso del analizador headless.

`/path/to/myproject` en el host debe ser accesible para el guid `1001` con permisos `rwx`.

### Ejemplo del Modo Gui

Ejecutar la Interfaz Gráfica de Usuario (GUI) de Ghidra en el contenedor docker no es un método recomendado para ejecutar Ghidra.
Las GUI no son un caso de uso típico para aplicaciones dockerizadas.

```
docker run \
    --env MODE=gui \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume "$HOME/.Xauthority:/home/ghidra/.Xauthority" \
    ghidra/ghidra:<version>
```

En este modo, el contenedor depende del reenvío X11 para mostrar la GUI. La configuración de X11 puede variar, pero en este caso,
el archivo Xauthority del host se monta dentro del contenedor, el contenedor está configurado para usar la red del host, y la variable
de entorno DISPLAY se pasa al contenedor. Esto permite reenviar la GUI de vuelta a la pantalla de la máquina host. Los volúmenes
que contengan binarios aún deberán montarse en el contenedor, así como los volúmenes para los proyectos de Ghidra.

El archivo `.Xauthority` del host debe tener permisos apropiados - asignado al grupo `:1001` con permisos de grupo `rw`.

### Ejemplo del Modo Ghidra Server

```
docker run \
    --env MODE=ghidra-server \
    --rm \
    -it \
    --volume /path/to/my/repositories:/ghidra/repositories \
    --volume /path/to/my/configs/server.conf:/ghidra/server/server.conf \
    -p 13100:13100 \
    -p 13101:13101 \
    -p 13102:13102 \
    ghidra/ghidra:<version>
```

Sería necesario montar volúmenes en el contenedor del servidor para guardar los repositorios, usuarios, y también para configurar el servidor.

Para utilizar svrAdmin, ejecuta exec en el contenedor del servidor ghidra en funcionamiento (`docker exec -it <id-contenedor> bash`) para obtener un shell bash en el contenedor.
Después de ejecutar exec en el contenedor, la administración y gestión del servidor Ghidra es la misma que fuera de un entorno contenerizado.

Para detener el contenedor, ejecuta el comando `docker stop <id-contenedor>`.

NOTA: los puertos que mapees del host al contenedor docker deben coincidir. Puedes cambiar el puerto base del servidor predeterminado (por ejemplo, `13100`) en el archivo `server.conf` usando la opción `-p<puerto>`.

## Ejemplo del Modo BSIM Server

```
docker run \
    --env MODE=bsim-server \
    --rm \
    -it \
    --volume /path/to/my/datadir:/ghidra/bsim_datadir \
    -p 5432:5432 \
    ghidra/ghidra:<version> \
    /ghidra/bsim_datadir
```

`/ghidra/bsim_datadir` es el directorio utilizado para almacenar los datos de bsim en el contenedor. Se podrían usar otros directorios en el contenedor,
pero asegúrate de que la carpeta en la máquina host tenga permisos apropiados, asignada al grupo `:1001`.

Este ejemplo simplemente inicia un servidor bsim. Configurar el servidor bsim y poblarlo con datos
se podría hacer después del inicio dentro del contenedor de manera similar a como se realiza la administración del servidor ghidra.
Un administrador tendría que ejecutar exec en el contenedor del servidor bsim en funcionamiento (`docker exec -it <id-contenedor> bash`),
y después de ejecutar exec en el contenedor, la administración y gestión del servidor Bsim es la misma que fuera de un entorno contenerizado.

Para detener el contenedor, ejecuta el comando `docker stop <id-contenedor>`.

## Ejemplo del Modo BSIM CLI

```
docker run \
		--env MODE=bsim \
		--rm \
		 -it \
		 ghidra/ghidra:<version> \
		 generatesigs ghidra://ghidrasvr/demo /home/ghidra \
			 --bsim postgresql://bsimsvr/demo \
			 --commit --overwrite \
			 --user ghidra
```

En este ejemplo, la CLI de bsim se utiliza para conectarse a un servidor ghidra alojado en `ghidrasvr`,
generar firmas para el repositorio `demo` en ese servidor ghidra y guardarlas en `/home/ghidra`,
y luego enviar las firmas al servidor BSIM alojado en `bsimsvr` en la base de datos `demo`.

## Ejemplo del Modo Pyghidra Gui

Ejecutar la Interfaz Gráfica de Usuario (GUI) de Ghidra en el contenedor docker no es un método recomendado para ejecutar Ghidra.
Las GUI no son un caso de uso típico para aplicaciones dockerizadas.

```
docker run \
    --env MODE=pyghidra \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume="$HOME/.Xauthority:/home/ghidra/.Xauthority:rw" \
    ghidra/ghidra:<version> -c
```

En este modo, el contenedor depende del reenvío X11 para mostrar la GUI. La configuración de X11 puede variar, pero en este caso,
el archivo Xauthority del host se monta dentro del contenedor, el contenedor está configurado para usar la red del host, y la variable
de entorno DISPLAY se pasa al contenedor. Esto permite reenviar la GUI de vuelta a la pantalla de la máquina host. Los volúmenes
que contengan binarios aún deberán montarse en el contenedor, así como los volúmenes para los proyectos de Ghidra.

El archivo `.Xauthority` del host debe tener permisos apropiados - propiedad de `:1001` con permisos de grupo `rw`.

## Ejemplo del Modo Pyghidra Headless

```
docker run \
    --env MODE=pyghidra \
    --rm \
    --volume /path/to/myproject:/myproject \
    --volume /path/to/mybinary:/mybinary \
    ghidra/ghidra:<version> -H \
    /myproject programFolder -import /mybinary
```

No pasar argumentos al analizador headless de pyghidra resultará en que se muestre el menú de ayuda, igual que con el analizador headless.

Este caso de uso es muy similar al ejemplo del modo headless con el beneficio adicional de poder utilizar python3 para Scripts de Ghidra.

Nuevamente, en este ejemplo, son necesarios permisos apropiados y asignación de grupo para `/path/to/myproject` y `/path/to/mybinary`
para no encontrarse con problemas de permisos.
Descargar herramienta