
Ein forensischer Beweissammler

Kompiliert und getestet mit Rust 1.50+. Öffnen Sie ein Terminal im Projektverzeichnis und geben Sie zum Kompilieren eines Release-Builds Folgendes ein:
cargo build --release
Ein Debug-Build kann mit folgendem Befehl kompiliert werden:
cargo build
Die kompilierte ausführbare Datei befindet sich in target/release/gargamel.exe bzw. target/debug/gargamel.exe.
Wenn Sie die Protokollierungsebene ändern möchten:
src/main.rsLevelFilter::Info in (beispielsweise) LevelFilter::Trace für detailliertere Protokollierung.
LevelFilter::Trace alles protokolliert, einschließlich Passwörter.Derzeit funktioniert diese App nur unter Windows und der Zielcomputer muss Windows oder Linux verwenden.
Stellen Sie sicher, dass sich die folgenden Programme im selben Verzeichnis wie Gargamel befinden.
psexec, Downloadpaexec, eine Open-Source-Alternative zu PsExec, Downloadwinpmem, ein Open-Source-Tool für Arbeitsspeicherabbilder, Download.
plink und pscp, Open-Source-CLI-SSH/SCP-Clients, DownloadSharpRDP, ein Open-Source-Befehlsausführer mit RDP, DownloadWMImplant, ein Open-Source-PowerShell-WMI-Befehlsausführer, Download7za.exe, eine eigenständige Konsolenversion des 7zip-Archivierers, DownloadHinweis: Wir benötigen sowohl psexec als auch paexec. Obwohl beide Anwendungen funktional äquivalent sein sollen, verhalten sie sich unter bestimmten Umständen tatsächlich unterschiedlich.
Gargamel muss von einer erhöhten Eingabeaufforderung gestartet werden, um voll funktionsfähig zu sein. Derzeit wird weder der UAC-Dialog noch eine Benachrichtigung bei der Ausführung mit eingeschränkten Berechtigungen unterstützt. Wenn das Programm mit eingeschränkten Benutzerrechten ausgeführt wird, funktionieren einige Vorgänge wie das Erstellen von Speicherabbildern des Ziels nicht.
Angenommen, Sie möchten eine Verbindung zu einem Computer mit den folgenden Parametern herstellen:
192.168.42.47Janonbusr123Der folgende Befehl erfasst den Firewall-Status, den Netzwerkstatus, angemeldete Benutzer, laufende Prozesse,
aktive Netzwerkverbindungen, Registrierung, System- und Anwendungsereignisprotokolle mithilfe der PsExec-Methode.
Die Beweise werden im Verzeichnis testResults relativ zum Speicherort von Gargamel gespeichert.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
Gargamel fragt nach dem Passwort des entfernten Benutzers – in unserem Beispiel lautet das Passwort nbusr123.
Beachten Sie, dass das Passwort bei der Eingabe verborgen wird.
Es ist auch möglich, das Passwort direkt als Programmargument anzugeben.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
Angenommen, Sie möchten eine Verbindung zu einem Computer in einer Domäne mit den folgenden Parametern herstellen:
WORKSPACEJanovPCJanonbusr123Der folgende Befehl erfasst den Firewall-Status, den Netzwerkstatus, angemeldete Benutzer, laufende Prozesse, aktive Netzwerkverbindungen, Registrierung, System- und Anwendungsereignisprotokolle mithilfe der PsExec-Methode.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
Oder geben Sie das Passwort direkt an, um die Passwortabfrage zu überspringen.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec ist eine der 5 unterstützten Verbindungsmethoden.
Sie können --psexec durch die folgenden Optionen ersetzen:
--psexec--psrem, wenn PowerShell-Remoting auf dem Zielcomputer konfiguriert ist.--rdp, wenn RDP auf dem Zielcomputer aktiviert ist.--wmi.--ssh, wenn der Zielcomputer Linux verwendet.Es ist möglich, mehrere Methoden gleichzeitig zu verwenden. Um beispielsweise sowohl PsExec als auch RDP zu verwenden, kann der folgende Befehl verwendet werden.
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
Es gibt auch einen speziellen Schalter --all, der der Angabe von --psexec --rdp --psrem --wmi entspricht.
Hinweis: Die Startparameter sind reihenfolgeunabhängig, d. h. es spielt keine Rolle, in welcher Reihenfolge die Parameter angegeben werden.
Um auch ein Speicherabbild zu erfassen, fügen Sie einfach das Flag -m zu den Programparametern hinzu, d. h.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
Wenn Sie NUR das Speicherabbild erfassen möchten, ohne andere Beweise, verwenden Sie den folgenden Befehl.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
Diese Funktionalität ist nur für Windows-Ziele verfügbar.
Gargamel kann benutzerdefinierte Windows-CMD- oder Linux-Shell-Befehle auf dem entfernten Computer ausführen.
Erstellen Sie zunächst eine Datei custom-commands.txt mit folgendem Inhalt.
# Wird mit jeder Methode ausgeführt
ipconfig
# Wird nur ausgeführt, wenn mit mindestens einer der Methoden --all, --psexec, --wmi gestartet wird
:psexec:wmi ipconfig -all
Die Ergebnisse der obigen Befehle werden im durch die Option -o angegebenen Verzeichnis gespeichert.
Um die oben in custom-commands.txt geschriebenen Befehle auszuführen, verwenden Sie den Schalter -e, d. h.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
Gargamel kann entfernte Dateien herunterladen.
Erstellen Sie zunächst eine Datei custom-files.txt mit folgendem Inhalt.
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# Diese Zeile und die nächste werden ignoriert
# C:\Users\Jano\somBajecny.pptx
C:\Users\J*\danove.pdf wird höchstwahrscheinlich nicht funktionieren.Die Ergebnisse der obigen Befehle werden im durch die Option -o angegebenen Verzeichnis gespeichert.
Um die oben in custom-files.txt geschriebenen Befehle auszuführen, verwenden Sie den Schalter -s, d. h.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
Alle unterstützten Schalter werden unten beschrieben.
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]
_ in ihrem Pfad/Namen schreiben.Copyright (C) 2020 LIFARS LLC
Alle Rechte vorbehalten.