Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 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
Análisis EstáticoAnálisis Dinámico (Sandboxing)Frameworks de ExploitsAnálisis de VulnerabilidadesIngeniería InversaScripting y AutomatizaciónDepuradoresAnálisis de MalwareAnálisis de BinariosAprendizaje y EducaciónAnálisis de Firmware
71.1k7.8k1hace 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 →
Compartir
GitHub
nationalsecurityagency/ghidra

ghidra

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

Ver RepositorioSitio web

Ghidra Dockerizado

Construcción

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

root@kitploit:~
./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

root@kitploit:~
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 es el grupo y nombre de la imagen, y es la etiqueta.

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.

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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.

root@kitploit:~
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

root@kitploit:~
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
ghidra/ghidra
<version>
  • /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