
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!
À propos de GRAT2
GRAT2 est un outil de commande et de contrôle (C2) écrit en python3 et le client en .NET 4.5. L'idée principale vient de Georgios Koumettou qui a initié le projet.
Pourquoi avons-nous développé GRAT2 ?
Nous sommes conscients qu'il existe de nombreux outils C2, mais nous avons développé celui-ci par curiosité sur le fonctionnement des C2 et des techniques d'évasion. C'est tout ! ;-)
Fonctionnalités actuelles :
Techniques d'évasion :
- Sandbox (Vérifier si la machine est dans le domaine, sinon quitter).
- Correction de l'enregistrement ETW (Event Tracing for Windows).
- Correction de l'interface AMSI (Antimalware Scan Interface).
- caretrun - Exécuter une commande via cmd.exe dans un format caret (^i^p^c^o^n^f^i^g) en utilisant explorer.exe comme PID parent (Éviter certains AV/EDR).
Communication :
- HTTP et HTTPS
- DNS - Prend actuellement en charge uniquement les enregistrements TXT.
- Communication encodée utilisant XOR et base64.
- Conscient du proxy.
Modules :
- startdns - Démarrer le serveur d'écoute DNS.
- listagents - Lister les agents actuels.
- localip - Obtenir l'adresse IP locale de la machine.
- uac - Tenter de contourner l'UAC en utilisant un nettoyage de disque silencieux avec une technique de falsification du PID parent.
- maketoken - Supprimer le jeton actuel et en créer un nouveau avec les informations d'identification fournies (Domaine ou Local).
- revtoself - Supprimer le jeton actuel.
- stealtoken - Tenter de voler un jeton d'un processus en cours et d'usurper l'identité de l'utilisateur (droits Administrateur requis).
- rportfwd - Tenter de créer un transfert de port inverse.
- whoami - Afficher l'utilisateur actuel.
- hostname - Afficher le nom d'hôte de la machine.
- domain - Afficher le FQDN du domaine.
- screenshot - Prendre une capture d'écran.
- download - Télécharger un fichier.
- upload - Télécharger un fichier.
- cd - Changer de répertoire.
- run - Exécuter une commande via cmd.exe en utilisant explorer.exe comme PID parent.
- caretrun - Exécuter une commande via cmd.exe dans un format caret (^i^p^c^o^n^f^i^g) en utilisant explorer.exe comme PID parent (Éviter certains AV/EDR).
- sleep - Définir un nouveau temps de pause.
- exit - Quitter.
- shell - Exécuter une commande via cmd.exe.
- powershell - Exécuter une commande powershell en utilisant PowerShell non managé.
- powerscript - Exécuter des scripts powershell en utilisant PowerShell non managé.
- executeassembly - Tenter d'exécuter des assemblies .NET en mémoire.
- ps - Afficher les processus en cours.
- pwd - Afficher le répertoire actuel.
- ls - Liste des répertoires.
- pid - Afficher l'ID du processus actuel.
Techniques d'injection de processus :
- dynamic_injectcrt - Tenter d'injecter une shellcode dans un processus en utilisant Dynamic Invoke.
- ppid_processhollow - Tenter d'injecter une shellcode dans un processus en utilisant Process Hollowing et la falsification du PID parent (explorer.exe).
- processhollow - Tenter d'injecter une shellcode dans un processus en utilisant la technique Process Hollowing.
- injectppidapc - Tenter d'injecter une shellcode dans un processus en utilisant QueueUserAPC et la falsification du PID parent (explorer.exe).
- injectapc - Tenter d'injecter une shellcode dans un processus en utilisant la technique QueueUserAPC.
- injectcrt - Tenter d'injecter une shellcode dans un processus distant en utilisant la technique Create Remote Thread.
Référez-vous à GRAT2_Shellcodes pour générer une shellcode indépendante de la position en utilisant Donut.
À FAIRE :
- Écouteur SMB.
- Améliorer l'écouteur DNS en ajoutant d'autres fonctionnalités comme les enregistrements A, passer du DNS à HTTP, etc.
- Ajouter la journalisation.
- Implémenter SOCKS5.
- Corriger les problèmes connus.

Paramètres généraux et écouteur HTTP/s :
-
c2 - Adresse IP ou nom d'hôte de votre serveur GRAT2 (Requis).
-
sandboxEvasion - Si activé (1), GRAT2 s'exécutera uniquement sur un ordinateur joint à un domaine, sinon GRAT2 se terminera. Si désactivé (0), GRAT2 s'exécutera uniquement sur un ordinateur non joint à un domaine, sinon il se terminera (Par défaut : Désactivé).
-
patchEtw - Si activé (1), l'ETW sera corrigé (Par défaut : Activé).
-
patchAmsi - Si activé (1), l'AMSI sera corrigé (Par défaut : Activé).
-
sleep - Définir le temps de pause (Par défaut : 3 secondes).
-
UserAgent - Définir le UserAgent (Par défaut : "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko").
-
initialUrl - Requête HTTP GET initiale de GRAT2 (Par défaut : jquery.js).
-
sendResults - Requête HTTP POST des résultats de GRAT2 (Par défaut : login.aspx).
REMARQUE si vous modifiez la chaîne initialUrl ou sendResults, vous devez mettre à jour la chaîne dans GRAT2_Server/handlers.py aux lignes 49 et 84 respectivement.
Écouteur DNS :
- DNSListener - Activer (1) ou Désactiver (0). Si activé, configurer le serveur GRAT2 en conséquence (voir ci-dessous).
- DNSServer - Votre serveur DNS GRAT2.
- dnsMaxTXT - Longueur maximale des enregistrements TXT (Par défaut : 255).
- maxDNSChar - Taille maximale en caractères pour chaque sous-domaine DNS (Par défaut : 63).

Écouteur HTTP/s et DNS :
- HOST_NAME - Adresse IP ou nom d'hôte de votre serveur GRAT2.
- PORT_NUMBER - Port d'écoute. (80 ou 443)
- server_pem - Emplacement de votre fichier PEM.
- dnsDomainName - Votre serveur DNS GRAT2.
Utilisation :
- Ouvrez le projet client GRAT2 (GRAT2_Client.sln) avec Visual Studio, modifiez la configuration de la solution de Debug à Release, puis générez la solution.
- Installez les deux dépendances (dnslib et termcolor) sur le serveur GRAT2 : pip3 install -r requirements.txt
- Démarrez le serveur GRAT2 :

- Exécutez l'exécutable client GRAT2 - GRAT2_Client\bin\Release\GRAT2_Client.exe
- Interagissez avec l'agent :

Notes de version :
Version 1.0 - 05 sept. 2020