
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>