
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!
Über GRAT2
GRAT2 ist ein Command and Control (C2)-Tool, geschrieben in Python3 und der Client in .NET 4.5. Die Hauptidee stammt von Georgios Koumettou, der das Projekt initiiert hat.
Warum haben wir GRAT2 entwickelt?
Wir sind uns bewusst, dass es zahlreiche C2-Tools gibt, aber wir haben dieses Tool aus Neugier entwickelt, wie C2 und andere Umgehungstechniken funktionieren. Das ist alles! ;-)
Aktuelle Funktionen:
Umgehungstechniken:
- Sandbox (Überprüft, ob der Computer in der Domäne ist, andernfalls beenden).
- Patch Event Tracing for Windows (ETW)-Protokollierung.
- Patch Antimalware Scan Interface (AMSI).
- caretrun - Befehl über cmd.exe im Caret-Format (^i^p^c^o^n^f^i^g) mit explorer.exe als Parent-PID ausführen (umgeht einige AV/EDRs).
Kommunikation:
- HTTP und HTTPS
- DNS - Unterstützt derzeit nur TXT-Einträge.
- Kodierte Kommunikation mit XOR und base64.
- Proxy-bewusst.
Module:
- startdns - DNS-Listener-Server starten.
- listagents - Aktuelle Agents auflisten.
- localip - Lokale IP-Adresse des Computers abrufen.
- uac - Versucht, UAC mit stiller Datenträgerbereinigung und Parent-PID-Spoofing zu umgehen.
- maketoken - Aktuelles Token entfernen und ein neues mit den angegebenen Anmeldeinformationen (Domäne oder lokal) erstellen.
- revtoself - Aktuelles Token entfernen.
- stealtoken - Versucht, ein Token von einem laufenden Prozess zu stehlen und Benutzer zu imitieren (Administratorrechte erforderlich).
- rportfwd - Versucht, einen Reverse-Port-Forward zu erstellen.
- whoami - Aktuellen Benutzer anzeigen.
- hostname - Hostnamen des Computers anzeigen.
- domain - FQDN der Domäne anzeigen.
- screenshot - Screenshot erstellen.
- download - Datei herunterladen.
- upload - Datei hochladen.
- cd - Verzeichnis wechseln.
- run - Befehl über cmd.exe mit explorer.exe als Parent-PID ausführen.
- caretrun - Befehl über cmd.exe im Caret-Format (^i^p^c^o^n^f^i^g) mit explorer.exe als Parent-PID ausführen (umgeht einige AV/EDRs).
- sleep - Neue Schlafzeit setzen.
- exit - Beenden.
- shell - Befehl über cmd.exe ausführen.
- powershell - PowerShell-Befehl mit Unmanaged PowerShell ausführen.
- powerscript - PowerShell-Skripte mit Unmanaged PowerShell ausführen.
- executeassembly - Versucht, .NET-Assemblys im Speicher auszuführen.
- ps - Aktuelle Prozesse anzeigen.
- pwd - Aktuelles Verzeichnis anzeigen.
- ls - Verzeichnisliste.
- pid - Aktuelle Prozess-ID anzeigen.
Prozessinjektionstechniken:
- dynamic_injectcrt - Versucht, Shellcode mit Dynamic Invoke in einen Prozess zu injizieren.
- ppid_processhollow - Versucht, Shellcode mit Process Hollowing und Parent-PID-Spoofing (explorer.exe) in einen Prozess zu injizieren.
- processhollow - Versucht, Shellcode mit Process Hollowing in einen Prozess zu injizieren.
- injectppidapc - Versucht, Shellcode mit QueueUserAPC und Parent-PID-Spoofing (explorer.exe) in einen Prozess zu injizieren.
- injectapc - Versucht, Shellcode mit QueueUserAPC in einen Prozess zu injizieren.
- injectcrt - Versucht, Shellcode mit der Create-Remote-Thread-Technik in einen entfernten Prozess zu injizieren.
Siehe GRAT2_Shellcodes zur Generierung von positionsunabhängigem Shellcode mit Donut.
TODO:
- SMB-Listener.
- DNS-Listener verbessern, indem weitere Funktionen wie A-Einträge, Wechsel von DNS zu HTTP usw. hinzugefügt werden.
- Protokollierung hinzufügen.
- SOCKS5 implementieren.
- Bekannte Probleme beheben.
Client-Profil konfigurieren:

Allgemeine Einstellungen und HTTP/s-Listener:
-
c2 - Ihre GRAT2-Server-IP-Adresse oder Hostname (Erforderlich).
-
sandboxEvasion - Wenn aktiviert (1), wird GRAT2 nur auf einem domänengebundenen Computer ausgeführt, andernfalls wird GRAT2 beendet. Wenn deaktiviert (0), wird GRAT2 nur auf einem nicht domänengebundenen Computer ausgeführt, andernfalls wird es beendet (Standard: Deaktiviert).
-
patchEtw - Wenn aktiviert (1), wird Event Tracing for Windows gepatcht (Standard: Aktiviert).
-
patchAmsi - Wenn aktiviert (1), wird das Antimalware Scan Interface gepatcht (Standard: Aktiviert).
-
sleep - Schlafzeit einstellen (Standard: 3 Sekunden).
-
UserAgent - UserAgent setzen (Standard: "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko").
-
initialUrl - Erste GRAT2-HTTP-GET-Anfrage (Standard: jquery.js).
-
sendResults - GRAT2-HTTP-POST-Ergebnisanfrage (Standard: login.aspx).
HINWEIS Wenn Sie entweder den InitialUrl- oder SendResults-String ändern, müssen Sie den String unter GRAT2_Server/handlers.py in den Zeilen 49 bzw. 84 aktualisieren.
DNS-Listener:
- DNSListener - Aktivieren (1) oder Deaktivieren (0). Wenn aktiviert, konfigurieren Sie den GRAT2-Server (siehe unten) entsprechend.
- DNSServer - Ihr GRAT2-DNS-Server.
- dnsMaxTXT - Maximale Länge von TXT-Einträgen (Standard: 255).
- maxDNSChar - Maximale Größe in Zeichen für jede DNS-Subdomäne (Standard: 63).
Server-Profil konfigurieren:

HTTP/s- und DNS-Listener:
- HOST_NAME - Ihre GRAT2-Server-IP-Adresse oder Hostname.
- PORT_NUMBER - Lauschender Port. (80 oder 443)
- server_pem - Ihr PEM-Datei-Pfad.
- dnsDomainName - Ihr GRAT2-DNS-Server.
Verwendung:
- Öffnen Sie das GRAT2-Client-Projekt (GRAT2_Client.sln) mit Visual Studio, ändern Sie die Projektmappenkonfiguration von Debug auf Release und erstellen Sie dann die Projektmappe.
- Installieren Sie die zwei Abhängigkeiten (dnslib und termcolor) auf dem GRAT2-Server: pip3 install -r requirements.txt
- GRAT2-Server starten:

- Führen Sie die GRAT2-Client-Ausführungsdatei aus - GRAT2_Client\bin\Release\GRAT2_Client.exe
- Mit dem Agent interagieren:

Versionshinweise:
Version 1.0 - 05 Sep 2020
Version 1.1 - 13 Dec 2020
- DNS-Listener hinzugefügt
- HTTPS-Listener hinzugefügt
- Funktion zum Auflisten von Agenten hinzugefügt
- Modul localip hinzugefügt, mit dem Sie die lokale IP-Adresse des Computers abrufen können
- Unmanaged PowerShell neu geschrieben
- Von .NET 4.0 auf .NET 4.5 geändert
Danksagungen:
Außerdem wird jeder Autor und der Referenzlink im Quellcode hervorgehoben.
Haftungsausschluss:
Dieses Projekt darf nur für autorisierte Tests oder Bildungszwecke verwendet werden. Die Verwendung dieser Software gegen Zielsysteme ohne vorherige Genehmigung ist illegal, und der Autor übernimmt keine Haftung für Schäden durch Missbrauch dieser Software.