
Acquisitore di prove forensi

Compilato e testato con Rust 1.50+. Apri il terminale nella directory del progetto e per compilare una build di release digita
cargo build --release
La build di debug può essere compilata usando
cargo build
L'eseguibile compilato si trova rispettivamente in target/release/gargamel.exe o target/debug/gargamel.exe.
Se desideri cambiare il livello di logging:
src/main.rsLevelFilter::Info in (ad esempio) LevelFilter::Trace per un logging più dettagliato.
LevelFilter::Trace registrerà tutto, comprese le password.Al momento, questa app funziona solo su Windows e il computer di destinazione deve utilizzare Windows o Linux.
Assicurati di avere i seguenti programmi nella stessa directory di Gargamel.
psexec, downloadpaexec, un'alternativa open source a PsExec, downloadwinpmem, uno strumento open source per immagini di memoria, download.
plink e pscp, client CLI SSH/SCP open source, downloadSharpRDP, un esecutore di comandi open source tramite RDP, downloadWMImplant, un esecutore di comandi PowerShell WMI open source, download7za.exe, una versione console standalone dell'archiviatore 7zip, downloadNota: sono necessari sia psexec che paexec. Sebbene entrambe le applicazioni siano considerate funzionalmente equivalenti, in realtà hanno comportamenti diversi in alcune circostanze.
Gargamel deve essere avviato da un terminale con privilegi elevati per essere completamente funzionale. Attualmente non supporta la finestra di dialogo UAC né alcun tipo di notifica quando viene eseguito con privilegi limitati. Quando viene eseguito con privilegi utente limitati, alcune operazioni come il dump della memoria di destinazione non funzioneranno.
Supponiamo di voler connettere un computer con i seguenti parametri:
192.168.42.47Janonbusr123Il seguente comando acquisirà lo stato del firewall, lo stato della rete, gli utenti connessi, i processi in esecuzione,
le connessioni di rete attive, il registro, i log degli eventi di sistema e applicazioni utilizzando il metodo PsExec.
Le evidenze verranno memorizzate nella directory testResults relativa alla posizione di Gargamel.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
Gargamel ti chiederà la password dell'utente remoto, nel nostro esempio la password è nbusr123.
Nota che la password sarà nascosta durante la digitazione.
È anche possibile specificare la password direttamente come argomento del programma.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
Supponiamo di voler connettere un computer in un dominio con i seguenti parametri:
WORKSPACEJanovPCJanonbusr123Il seguente comando acquisirà lo stato del firewall, lo stato della rete, gli utenti connessi, i processi in esecuzione, le connessioni di rete attive, il registro, i log degli eventi di sistema e applicazioni utilizzando il metodo PsExec.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
Oppure per saltare la richiesta della password specificare la password direttamente.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec è uno dei 5 metodi di connessione supportati.
Puoi sostituire --psexec con le seguenti opzioni:
--psexec--psrem, se il remoting PowerShell è configurato sulla macchina di destinazione.--rdp, se RDP è abilitato sulla macchina di destinazione.--wmi.--ssh, se la macchina di destinazione utilizza Linux.È possibile utilizzare più metodi contemporaneamente. Ad esempio, per utilizzare sia PsExec che RDP si può usare il seguente comando.
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
Esiste anche un'opzione speciale --all che equivale a specificare --psexec --rdp --psrem --wmi.
Nota: I parametri di avvio sono indipendenti dall'ordine, cioè non importa in quale ordine vengono specificati.
Per acquisire anche il dump della memoria, aggiungi semplicemente il flag -m ai parametri del programma, ad esempio
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
Se desideri acquisire SOLO il dump della memoria senza altre evidenze, usa il seguente comando.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
Questa funzionalità è disponibile solo per destinazioni Windows.
Gargamel può eseguire comandi personalizzati di Windows CMD o shell Linux sulla macchina remota.
Per prima cosa crea un file custom-commands.txt con il seguente contenuto.
# Will be run using any method
ipconfig
# Will run only when launching with at least one of --all, --psexec, --wmi methods
:psexec:wmi ipconfig -all
I risultati dei comandi precedenti verranno memorizzati nella directory specificata dall'opzione -o.
Per eseguire i comandi sopra scritti in custom-commands.txt usa l'opzione -e, ad esempio
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
Gargamel è in grado di scaricare file remoti.
Per prima cosa crea un file custom-files.txt con il seguente contenuto.
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# This line and the next one will be ignored
# C:\Users\Jano\somBajecny.pptx
Nota: I caratteri jolly * e ? sono supportati ma attualmente solo nei nomi dei file, non nelle directory principali, ad esempio C:\Users\J*\danove.pdf molto probabilmente non funzionerà.
I risultati dei comandi precedenti verranno memorizzati nella directory specificata dall'opzione -o.
Per eseguire i comandi sopra scritti in custom-files.txt usa l'opzione -s, ad esempio
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
Tutte le opzioni supportate sono descritte di seguito.
USAGE:
gargamel.exe [FLAGS] [OPTIONS] --user <user>