Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ghidra — Ghidra è un framework di reverse engineering del software (SRE) | Kitploit
Strumenti/GitHubGitHub/nationalsecurityagency/ghidra
Analisi StaticaAnalisi Dinamica (Sandboxing)Framework di ExploitAnalisi delle VulnerabilitàReverse EngineeringScripting e AutomazioneDebuggerAnalisi MalwareAnalisi di BinariApprendimento e FormazioneAnalisi del Firmware
71.1k7.8k2 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
nationalsecurityagency/ghidra

ghidra

Ghidra è un framework di reverse engineering del software (SRE)

Vedi RepositorySito web

Ghidra in Docker

Build

Dalla directory principale della tua release di Ghidra, esegui il comando seguente.

root@kitploit:~
./docker/build-docker-image.sh

Questo creerà l'immagine docker di ghidra con un tag corrispondente alla versione di release di Ghidra.

La variabile d'ambiente MODE

Il container Docker di Ghidra supporta le seguenti modalità di esecuzione MODE:

  • gui
  • headless
  • ghidra-server
  • bsim
  • bsim-server
  • pyghidra

La variabile d'ambiente MODE designa quale punto di ingresso di Ghidra eseguire.

Lo script entrypoint.sh viene eseguito all'avvio del container.

Configurazione di un Container

La configurazione di un container viene effettuata come qualsiasi altro container docker. I volumi possono essere montati, le variabili d'ambiente possono essere impostate, le porte possono essere mappate dal container all'host e così via. I passaggi di configurazione variano molto in base alla MODALITÀ con cui viene avviato il container.

La directory base per Ghidra all'interno del container si trova in /ghidra. Tutte le posizioni predefinite di ghidra per file, configurazioni, ecc., sono le stesse all'interno di essa. Ghidra viene eseguito come utente ghidra all'interno del container, con uid 1001 e guid 1001.

L'utente ghidra ha solo i permessi per le seguenti directory all'interno del container:

  • /ghidra
  • /home/ghidra

Quando un container non riceve argomenti passati con il comando docker run, la corrispondente interfaccia a riga di comando (CLI) per la MODE eseguita visualizzerà il suo messaggio di utilizzo.

Mappatura dei Volumi Locali a un Container

I volumi all'interno del container potrebbero incontrare problemi di permessi se i volumi non sono accessibili dagli utenti del gruppo id 1001.

L'uid e guid predefiniti per il container sono 1001:1001. I volumi che vengono mappati al container dovrebbero essere accessibili da questo uid/guid.

Aggiungere l'utente della macchina host al gruppo 1001 sull'host aiuta a gestire i volumi che verranno utilizzati nel container. Questo può essere facilmente fatto eseguendo sudo usermod -aG 1001 <user> su Linux.

Esempio di Modalità 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

Analizzando questo comando riga per riga:

  • docker run avvierà un container docker usando l'immagine ghidra/ghidra<:<version>
  • --env MODE=headless configura la variabile d'ambiente MODE all'interno del container al valore headless
  • --rm rimuove il container dopo il completamento del comando
  • --volume /path/to/myproject:/home/ghidra/myproject monta il volume locale /path/to/myproject sull'host in /home/ghidra/myproject all'interno del container
  • --volume /path/to/mybinary:/home/ghidra/mybinary monta il volume locale /path/to/mybinary sull'host in /home/ghidra/mybinary all'interno del container
  • ghidra/ghidra:<version> è il riferimento completo per l'immagine docker, dove è il gruppo e il nome dell'immagine, e è il tag.

Non passare argomenti comporterà la visualizzazione dell'utilizzo dell'analizzatore headless.

/path/to/myproject sull'host deve essere accessibile al guid 1001 con permessi rwx.

Esempio di Modalità GUI

Eseguire l'interfaccia grafica utente (GUI) di Ghidra nel container docker non è un metodo raccomandato per eseguire Ghidra. Le GUI non sono un caso d'uso tipico per applicazioni dockerizzate.

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

In questa modalità, il container si basa sul forwarding X11 per visualizzare la GUI. La configurazione di X11 può variare, ma in questo caso, il file Xauthority dell'host viene montato nel container, il container è configurato per utilizzare la rete dell'host, e la variabile d'ambiente DISPLAY viene passata al container. Ciò consente di reindirizzare la GUI al display della macchina host. I volumi contenenti binari dovrebbero comunque essere montati nel container, così come i volumi per i progetti ghidra.

Il file .Xauthority dell'host deve avere i permessi appropriati - assegnati al gruppo :1001 con permessi di gruppo rw.

Esempio di Modalità 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>

I volumi dovrebbero essere montati nel container del server per salvare i repository, gli utenti e anche per configurare il server.

Per utilizzare svrAdmin, esegui exec nel container del server ghidra in esecuzione (docker exec -it <container-id> bash) per una shell bash nel container. Dopo aver eseguito exec nel container, l'amministrazione e la gestione del server Ghidra sono le stesse di un ambiente non containerizzato.

Per fermare il container, esegui il comando docker stop <container-id>.

NOTA: le porte che mappi dall'host al container docker devono corrispondere. Puoi cambiare la porta base del server predefinita (es. 13100) nel file server.conf usando l'opzione -p<port>.

Esempio di Modalità 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 è la directory utilizzata per memorizzare i dati di bsim nel container. Altre directory potrebbero essere usate sul container, ma assicurati che la cartella sulla macchina host abbia i permessi appropriati, assegnati al gruppo :1001.

Questo esempio avvia semplicemente un server bsim. Configurare il server bsim e popolarlo con dati potrebbe essere fatto dopo l'avvio all'interno del container in modo simile a come viene fatta l'amministrazione del server ghidra. Un amministratore dovrebbe eseguire exec nel container del server bsim in esecuzione (docker exec -it <container-id> bash), e dopo aver eseguito exec nel container, l'amministrazione e la gestione del server Bsim sono le stesse di un ambiente non containerizzato.

Per fermare il container, esegui il comando docker stop <container-id>.

Esempio di Modalità 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

In questo esempio, la CLI bsim viene utilizzata per connettersi a un server ghidra ospitato su ghidrasvr, generare firme per il repository demo in quel server ghidra e salvarle in /home/ghidra, e poi inviare le firme al server BSIM ospitato su bsimsvr nel database demo.

Esempio di Modalità Pyghidra GUI

Eseguire l'interfaccia grafica utente (GUI) di Ghidra nel container docker non è un metodo raccomandato per eseguire Ghidra. Le GUI non sono un caso d'uso tipico per applicazioni dockerizzate.

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

In questa modalità, il container si basa sul forwarding X11 per visualizzare la GUI. La configurazione di X11 può variare, ma in questo caso, il file Xauthority dell'host viene montato nel container, il container è configurato per utilizzare la rete dell'host, e la variabile d'ambiente DISPLAY viene passata al container. Ciò consente di reindirizzare la GUI al display della macchina host. I volumi contenenti binari dovrebbero comunque essere montati nel container, così come i volumi per i progetti ghidra.

Il file .Xauthority dell'host deve avere i permessi appropriati - di proprietà di :1001 con permessi di gruppo rw.

Esempio di Modalità 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

Non passare argomenti all'analizzatore headless pyghidra comporterà la visualizzazione del menu di aiuto, proprio come per l'analizzatore headless.

Questo caso d'uso è molto simile all'esempio della modalità headless con il vantaggio aggiuntivo di poter utilizzare python3 per gli script di Ghidra.

Ancora, in questo esempio, permessi appropriati e assegnazione del gruppo per /path/to/myproject e /path/to/mybinary sono necessari per non incontrare problemi di permessi.

Scarica lo strumento
ghidra/ghidra
<version>
  • /home/ghidra/myproject programFolder -import /home/ghidra/mybinary sono argomenti passati all'interfaccia a riga di comando dell'analizzatore headless di Ghidra