
GRAT2 C2
(c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c)
/ ._. \ / ._. \ / ._. \ / ._. \ / ._. \
\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/
(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
|| G || || R || || A || || T || || 2 ||
_.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._
(.-./`-'\.-.)(.-./`-`\.-.)(.-./`-'\.-.)(.-./`-'\.-.)(.-./`-'\.-.)
`-' `-' `-' `-' `-' `-' `-' `-' `-' `-'
v1.1 beta!
Sobre o GRAT2
GRAT2 é uma ferramenta de Comando e Controle (C2) escrita em python3 e o cliente em .NET 4.5. A ideia principal veio de Georgios Koumettou que iniciou o projeto.
Por que desenvolvemos o GRAT2 ?
Estamos cientes de que existem inúmeras ferramentas C2 por aí, mas desenvolvemos esta ferramenta por curiosidade sobre como o C2 e outras técnicas de evasão funcionam. Só isso! ;-)
Funcionalidades Atuais:
Técnicas de Evasão:
- Sandbox (Verificar se a máquina está no domínio, caso contrário sair).
- Patch de Log do Event Tracing for Windows (ETW).
- Patch da Interface de Verificação Antimalware (AMSI).
- caretrun - Executar comando via cmd.exe em um formato de acento circunflexo (^i^p^c^o^n^f^i^g) usando explorer.exe como PID pai (Evasão de alguns AV/EDRs).
Comunicação:
- HTTP and HTTPS
- DNS - Atualmente suporta apenas registros TXT.
- Comunicação Codificada usando XOR e base64.
- Ciente de Proxy.
Módulos:
- startdns - Iniciar servidor listener DNS.
- listagents - Listar agentes atuais.
- localip - Obter o endereço IP local da máquina.
- uac - Tentar bypass do UAC usando limpeza de disco silenciosa com técnica de Spoofing de PID pai.
- maketoken - Remover o token atual e criar um novo usando as credenciais fornecidas (Domínio ou Local).
- revtoself - Remover o token atual.
- stealtoken - Tentar roubar um token de um processo em execução e impersonificar o usuário (Direitos de Administrador são necessários).
- rportfwd - Tentar criar um redirecionamento de porta reverso.
- whoami - Exibir o usuário atual.
- hostname - Exibir o hostname da máquina.
- domain - Exibir o FQDN do domínio.
- screenshot - Tirar uma captura de tela.
- download - Baixar um arquivo.
- upload - Enviar arquivo.
- cd - Alterar diretório.
- run - Executar comando via cmd.exe usando explorer.exe como PID pai.
- caretrun - Executar comando via cmd.exe em um formato de acento circunflexo (^i^p^c^o^n^f^i^g) usando explorer.exe como PID pai (Evasão de alguns AV/EDRs).
- sleep - Definir novo tempo de sleep.
- exit - Sair.
- shell - Executar comando via cmd.exe.
- powershell - Executar comando powershell usando PowerShell Não Gerenciado.
- powerscript - Executar scripts powershell usando PowerShell Não Gerenciado.
- executeassembly - Tentar executar assemblies .NET em memória.
- ps - Exibir os processos atuais.
- pwd - Exibir o diretório atual.
- ls - Listagem de diretório.
- pid - Exibir o ID do processo atual.
Técnicas de Injeção de Processo:
- dynamic_injectcrt - Tentar injetar um shellcode em um processo usando Dynamic Invoke.
- ppid_processhollow - Tentar injetar um shellcode em um processo usando Process Hollowing e técnica de Spoofing de PID pai (explorer.exe).
- processhollow - Tentar injetar um shellcode em um processo usando técnica de Process Hollowing.
- injectppidapc - Tentar injetar um shellcode em um processo usando QueueUserAPC e técnica de Spoofing de PID pai (explorer.exe).
- injectapc - Tentar injetar um shellcode em um processo usando técnica de QueueUserAPC.
- injectcrt - Tentar injetar um shellcode em um processo remoto usando técnica de Create Remote Thread.
Consulte GRAT2_Shellcodes para gerar shellcode independente de posição usando Donut.
PENDENTE:
- Listener SMB.
- Melhorar o listener DNS adicionando mais recursos como registros A, alternância de DNS para HTTP, etc.
- Adicionar Logging.
- Implementar SOCKS5.
- Corrigir problemas conhecidos.

Configurações gerais e Listener HTTP/s:
- c2 - Endereço IP ou Hostname do seu Servidor GRAT2 (Obrigatório).
- sandboxEvasion - Se ativado (1), o GRAT2 será executado apenas em um computador que faça parte do domínio, caso contrário, será encerrado. Se desativado (0), o GRAT2 será executado apenas em um computador que não faça parte do domínio, caso contrário, será encerrado (Padrão: Desativado).
- patchEtw - Se ativado (1), o Event Tracing for Windows será corrigido (Padrão: Ativado).
- patchAmsi - Se ativado (1), a Antimalware Scan Interface será corrigida (Padrão: Ativado).
- sleep - Definir tempo de sleep (Padrão: 3 segundos).
- UserAgent - Definir UserAgent (Padrão: "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko").
- initialUrl - Requisição HTTP GET inicial do GRAT2 (Padrão: jquery.js).
- sendResults - Requisição HTTP POST de resultados do GRAT2 (Padrão: login.aspx).
NOTA se você alterar qualquer string de initialUrl ou sendResults, deve atualizar a string em GRAT2_Server/handlers.py nas linhas 49 e 84 respectivamente.
Listener DNS:
- DNSListener - Ativar (1) ou Desativar (0). Se ativado, configure o Servidor GRAT2 (veja abaixo) adequadamente.
- DNSServer - Seu Servidor DNS GRAT2.
- dnsMaxTXT - Tamanho máximo dos Registros TXT (Padrão: 255).
- maxDNSChar - O tamanho máximo em caracteres para cada subdomínio DNS (Padrão: 63).

Listener HTTP/s e DNS:
- HOST_NAME - Endereço IP ou Hostname do seu Servidor GRAT2.
- PORT_NUMBER - Porta de escuta. (80 ou 443)
- server_pem - Localização do seu arquivo PEM.
- dnsDomainName - Seu Servidor DNS GRAT2.
Uso:
- Abra o projeto do Cliente GRAT2 (GRAT2_Client.sln) usando o Visual Studio, altere a configuração da solução de Debug para Release e então compile a Solução.
- Instale as duas dependências (dnslib e termcolor) no Servidor GRAT2: pip3 install -r requirements.txt
- Inicie o Servidor GRAT2:

- Execute o executável do Cliente GRAT2 - GRAT2_Client\bin\Release\GRAT2_Client.exe
- Interaja com o agente:

Notas de Lançamento:
Versão 1.0 - 05 Set 2020
Versão 1.1 - 13 Dez 2020
- Adicionado Listener DNS
- Adicionado Listener HTTPS
- Adicionada Funcionalidade de Listar Agentes
- Adicionado módulo localip, onde você pode obter o endereço IP local da máquina
- Reescrito o PowerShell Não Gerenciado
- Alterado de .NET 4.0 para .NET 4.5
Créditos:
Além disso, o reconhecimento de cada autor e o link de referência estão destacados no código fonte.
Aviso Legal:
Este projeto só pode ser usado para fins de teste autorizados ou educacionais. Usar este software contra sistemas alvo sem permissão prévia é ilegal, e quaisquer danos decorrentes do uso indevido deste software não serão de responsabilidade do autor.