
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>
FLAGS:
-a, --all Acquire evidence from Windows machine using all supported methods (PsExec, PsRemote,
WMI, RDP).
--no-events-search Disables Windows event logs acquisition.
--no-evidence-search Disables acquisition of evidence that can be usually downloaded quickly (like ipconfig,
firewall status etc..)
--no-registry-search Disables target registry acquisition.
-h, --help Prints help information
-m, --mem-image Optional: Memory dump of a target Windows machine.
--local Acquire evidence from local machine.
--nla Optional: Use network level authentication when using RDP. (Windows targets only)
--no-7z Optional: Disable 7zip compression for registry & memory images.This will significantly
decrease the running time, but WMI and RDP connections will probably not work properly.
(Windows targets only)
--psexec Acquire evidence from Windows machine using PsExec. Requires both PsExec64.exe and
paexec.exe in the current directory or in the path.
--psrem Acquire evidence from Windows machine using PowerShell. Requires both PsExec64.exe and
paexec.exe in the current directory or in the path.
--rdp Acquire evidence from Windows machine using RDP. Requires SharpRDP.exe in the current
directory or in the path.
--ssh Acquire evidence from Linux machine using SSH. Requires both plink.exe and pscp.exe in
the current directory or in the path.
-V, --version Prints version information
--wmi Acquire evidence from Windows machine using WMI. Requires WMImplant.ps1 in the current
directory or in the path and PowerShell 3.0+ on the host machine.Note: It is necessary
to disable Windows Defender real-time protection (other AVs not tested).
OPTIONS:
-c, --computer <computer> Remote computer address/name. [default: 127.0.0.1]
-u, --user <user> Remote user name
-d, --domain <domain> Optional: Remote Windows domain
-o, --output <local-store-directory>
Name of local directory to store the evidence [default: evidence-output]
-p, --password <password>
Optional: Remote user password. Skipping this option will prompt a possibility to put a password in hidden
way.To specify an empty password use `-p ""`
--redownload <re-download>
Optional: Download and DELETE specified file from target computer. Use this in case of previous failed
partially completed operation. For just downloading a file (without deleting it) please use a `search`
switch. If you specify a 7zip chunk (.7z.[chunk-number], e.g. .7z.004), then it will also automatically try to
download subsequent chunks.Use also with --psexec --psrem, --rdp, --wmi, --all
-r, --remote-storage <remote-store-directory>
Name of remote directory to be used as a temporary storage. (Windows targets only) [default:
C:\Users\Public]
-e, --commands <custom-command-path> Optional: File with custom commands to execute on remote computer
-s, --search <search-files-path>
Optional: File with files names to be searched on remote computer. File names supports also `*` and `?`
wildcards on file names (but not yet parent directories).
--key <ssh-key> Optional: Name/path of SSH private key file. (Linux target only)
--timeout <timeout>
Optional: Timeout in seconds for long running operations.This option is a workaround for a bug in
WMImplant.ps1 amd SharpRDP.exe where finishing of a long running operation cannot sometimes properly close
the connection leaving the Gargamel in seemingly frozen state or executing the next operation with the
previous one unfinished on target site.Increasing this timeout may solve issues when acquiring registry or
memory image from target machine. [default: 300]
_ nel suo percorso/nome.Copyright (C) 2020 LIFARS LLC
Tutti i diritti riservati.