
Un acquéreur de preuves médico-légales

Compilé et testé avec Rust 1.50+. Ouvrez un terminal dans le répertoire du projet et pour compiler une version release, tapez
cargo build --release
La version debug peut être compilée en utilisant
cargo build
L'exécutable compilé se trouve respectivement dans target/release/gargamel.exe ou target/debug/gargamel.exe.
Si vous souhaitez changer le niveau de journalisation :
src/main.rsLevelFilter::Info par (par exemple) LevelFilter::Trace pour une journalisation plus détaillée.
LevelFilter::Trace journalisera tout, y compris les mots de passe.Pour l'instant, cette application fonctionne uniquement sur Windows et l'ordinateur cible doit utiliser Windows ou Linux.
Assurez-vous d'avoir les programmes suivants dans le même répertoire que Gargamel.
psexec, téléchargementpaexec, une alternative open source à PsExec, téléchargementwinpmem, un outil open source d'image mémoire, téléchargement.
plink et pscp, des clients open source en ligne de commande SSH/SCP, téléchargementSharpRDP, un exécuteur de commandes open source utilisant RDP, téléchargementWMImplant, un exécuteur de commandes open source PowerShell WMI, téléchargement7za.exe, une version console autonome de l'archiveur 7zip, téléchargementRemarque : Nous avons besoin à la fois de psexec et paexec. Bien que ces deux applications soient censées être fonctionnellement équivalentes, elles ont en réalité des comportements différents dans certaines circonstances.
Gargamel doit être lancé depuis un terminal élevé pour être pleinement fonctionnel. Actuellement, il ne supporte pas la boîte de dialogue UAC ni aucun type de notification lorsqu'il est exécuté avec des privilèges limités. Lorsqu'il est exécuté avec des privilèges utilisateur limités, certaines opérations comme le dump mémoire de la cible ne fonctionneront pas.
Supposons que vous souhaitiez vous connecter à un ordinateur avec les paramètres suivants :
192.168.42.47Janonbusr123La commande suivante acquerra l'état du pare-feu, l'état du réseau, les utilisateurs connectés, les processus en cours,
les connexions réseau actives, le registre, les journaux d'événements système et application en utilisant la méthode PsExec.
Les preuves seront stockées dans le répertoire testResults relatif à l'emplacement de Gargamel.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
Gargamel vous demandera le mot de passe de l'utilisateur distant, dans notre exemple le mot de passe est nbusr123.
Notez que le mot de passe sera masqué lors de la saisie.
Il est également possible de spécifier le mot de passe directement comme argument du programme.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
Supposons que vous souhaitiez vous connecter à un ordinateur dans un domaine avec les paramètres suivants :
WORKSPACEJanovPCJanonbusr123La commande suivante acquerra l'état du pare-feu, l'état du réseau, les utilisateurs connectés, les processus en cours, les connexions réseau actives, le registre, les journaux d'événements système et application en utilisant la méthode PsExec.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
Ou pour éviter la demande de mot de passe, spécifiez le mot de passe directement.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec est l'une des 5 méthodes de connexion prises en charge.
Vous pouvez remplacer --psexec par les options suivantes :
--psexec--psrem, si PowerShell Remoting est configuré sur la machine cible.--rdp, si RDP est activé sur la machine cible.--wmi.--ssh, si la machine cible utilise Linux.Il est possible d'utiliser plusieurs méthodes à la fois. Par exemple, pour utiliser à la fois PsExec et RDP, on peut utiliser la commande suivante.
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
Il y a aussi un commutateur spécial --all qui équivaut à spécifier --psexec --rdp --psrem --wmi.
Note : Les paramètres de lancement sont indépendants de l'ordre, c'est-à-dire que l'ordre dans lequel les paramètres sont spécifiés n'a pas d'importance.
Pour acquérir également un dump mémoire, ajoutez simplement le drapeau -m aux paramètres du programme, c'est-à-dire
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
Si vous souhaitez acquérir UNIQUEMENT le dump mémoire sans autres preuves, utilisez la commande suivante.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
Cette fonctionnalité est disponible uniquement pour les cibles Windows.
Gargamel peut exécuter des commandes personnalisées Windows CMD ou Linux shell sur la machine distante.
Créez d'abord un fichier custom-commands.txt avec le contenu suivant.
# 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
Les résultats des commandes ci-dessus seront stockés dans le répertoire spécifié par l'option -o.
Pour exécuter les commandes ci-dessus écrites dans custom-commands.txt, utilisez le commutateur -e, c'est-à-dire
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
Gargamel est capable de télécharger des fichiers distants.
Créez d'abord un fichier custom-files.txt avec le contenu suivant.
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# This line and the next one will be ignored
# C:\Users\Jano\somBajecny.pptx
Les résultats des commandes ci-dessus seront stockés dans le répertoire spécifié par l'option -o.
Pour exécuter les commandes ci-dessus écrites dans custom-files.txt, utilisez le commutateur -s, c'est-à-dire
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
Tous les commutateurs pris en charge sont décrits ci-dessous.
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]
_ dans son chemin ou son nom.Copyright (C) 2020 LIFARS LLC
Tous droits réservés.