
Um coletor de evidências forenses

Compilado e testado com Rust 1.50+. Abra o terminal no diretório do projeto e para compilar uma versão de lançamento digite
cargo build --release
A compilação de depuração pode ser compilada usando
cargo build
O executável compilado está localizado em target/release/gargamel.exe ou target/debug/gargamel.exe, respectivamente.
Se desejar alterar o nível de log:
src/main.rsLevelFilter::Info para (por exemplo) LevelFilter::Trace para um log mais detalhado.
LevelFilter::Trace registrará tudo, incluindo senhas.No momento, este aplicativo funciona apenas no Windows e o computador alvo deve usar Windows ou Linux.
Certifique-se de ter os seguintes programas no mesmo diretório que o Gargamel.
psexec, baixarpaexec, uma alternativa de código aberto ao PsExec, baixarwinpmem, uma ferramenta de imagem de memória de código aberto, baixar.
plink e pscp, clientes SSH/SCP de linha de comando de código aberto, baixarSharpRDP, um executor de comandos de código aberto usando RDP, baixarWMImplant, um executor de comandos WMI em PowerShell de código aberto, baixar7za.exe, uma versão console independente do arquivador 7zip, baixarNota: Precisamos tanto do psexec quanto do paexec. Embora ambos os aplicativos sejam supostamente funcionalmente equivalentes, eles realmente têm comportamentos diferentes em algumas circunstâncias.
O Gargamel precisa ser iniciado de um terminal elevado para ser totalmente funcional. Atualmente, ele não suporta a caixa de diálogo UAC nem qualquer tipo de notificação quando executado com privilégios limitados. Ao executar com privilégios de usuário limitados, algumas operações como despejo de memória alvo não funcionarão.
Suponha que você queira conectar a um computador com os seguintes parâmetros:
192.168.42.47Janonbusr123O seguinte comando irá adquirir estado do firewall, estado da rede, usuários logados, processos em execução,
conexões de rede ativas, registro, logs de eventos do sistema e aplicativos usando o método PsExec.
As evidências serão armazenadas no diretório testResults relativo à localização do Gargamel.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
O Gargamel solicitará a senha do usuário remoto, no nosso exemplo a senha é nbusr123.
Note que a senha será oculta ao digitar.
Também é possível especificar a senha diretamente como argumento do programa.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
Suponha que você queira conectar a um computador em um domínio com os seguintes parâmetros:
WORKSPACEJanovPCJanonbusr123O seguinte comando irá adquirir estado do firewall, estado da rede, usuários logados, processos em execução, conexões de rede ativas, registro, logs de eventos do sistema e aplicativos usando o método PsExec.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
Ou para pular a solicitação de senha, especifique a senha diretamente.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec é um dos 5 métodos de conexão suportados.
Você pode substituir o --psexec pelas seguintes opções:
--psexec--psrem, se o PowerShell remoto estiver configurado na máquina alvo.--rdp, se o RDP estiver habilitado na máquina alvo.--wmi.--ssh, se a máquina alvo usa Linux.É possível usar vários métodos de uma vez. Por exemplo, para usar tanto PsExec quanto RDP, pode-se usar o seguinte comando.
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
Há também uma opção especial --all que equivale a especificar --psexec --rdp --psrem --wmi.
Nota: Os parâmetros de lançamento são independentes de ordem, ou seja, não importa a ordem em que os parâmetros são especificados.
Para adquirir também o dump de memória, basta adicionar a opção -m aos parâmetros do programa, ou seja,
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
Se desejar adquirir APENAS o dump de memória sem outras evidências, use o seguinte comando.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
Esta funcionalidade está disponível apenas para alvos Windows.
O Gargamel pode executar comandos personalizados do Windows CMD ou shell Linux na máquina remota.
Primeiro crie um arquivo custom-commands.txt com o seguinte conteúdo.
# 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
Os resultados dos comandos acima serão armazenados no diretório especificado pela opção -o.
Para executar os comandos acima escritos em custom-commands.txt, use a opção -e, ou seja,
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
O Gargamel é capaz de baixar arquivos remotos.
Primeiro crie um arquivo custom-files.txt com o seguinte conteúdo.
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# This line and the next one will be ignored
# C:\Users\Jano\somBajecny.pptx
Os resultados dos comandos acima serão armazenados no diretório especificado pela opção -o.
Para executar os comandos acima escritos em custom-files.txt, use a opção -s, ou seja,
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
Todas as opções suportadas são descritas abaixo.
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]
_ em seu caminho/nome.Copyright (C) 2020 LIFARS LLC
Todos os direitos reservados.