
RedPeanut ist eine kleine RAT, entwickelt in .Net Core 2 und dessen Agent in .Net 3.5 / 4.0.
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
Wird derzeit getestet.
Bekannte Modulprobleme:
process -> spawnasagent
process -> spawnasshellcode
RedPeanut ist eine kleine RAT, entwickelt in .Net Core 2, und ihr Agent in .Net 3.5 / 4.0. Die Codeausführung von RedPeanut basiert auf Shellcode, der mit DonutCS generiert wurde. Es handelt sich daher um einen Hybriden, der, obwohl in .Net entwickelt, sich nicht ausschließlich auf Assembly.Load verlässt. Dies erhöht die Erkennungsoberfläche, erlaubt uns jedoch, verschiedene Umgehungstechniken im Zusammenhang mit der Dotnet-Umgebung, Prozessverwaltung und Injektion zu üben und zu experimentieren. Dieses Verhalten kann zur Laufzeit mit den Befehlen "managed" und "unmanaged" geändert werden. Wenn Sie an einem konsistenten .Net C2-Framework interessiert sind, das in einem Engagement verwendet werden kann, empfehle ich Covenant.
RedPeanut ist bewaffnet mit:
Der RedPeanut-Agent kann in .Net 3.5 und 4.0 kompiliert werden und verfügt über Pivoting-Fähigkeiten über NamedPipe. Wenn der Agent im nicht verwalteten Modus ausgeführt wird, führt er seine eigenen kritischen Aufgaben in einem separaten Prozess aus, um zu verhindern, dass die AV-Reaktion auf Erkennung oder ein Fehler während der Ausführung den gesamten Agenten verlieren lässt.
Der Ausführungsfluss ist wie folgt:
Der Agent unterstützt derzeit nur den https-Kanal.
Das Checkin-Protokoll des Agents ist sehr einfach:
Alternativ kann die Funktion des verdeckten Kanals aktiviert werden (derzeit nur ein PoC). Die Idee ist, den von einem echten Benutzer durchgeführten Webverkehr zu imitieren. Normalerweise besteht eine Webseite aus der HTML-Seite und allen für ihre Darstellung notwendigen Objekten wie CSS, Bilder usw. Auf Anfrage einer neuen Aufgabe wird die Antwort des Servers nicht direkt die verschlüsselte Aufgabe sein, sondern eine HTML-Seite, von der der Link zu dem Bild extrahiert wird, das die verschlüsselte Aufgabe eingebettet hat. Die HTTP-Anfrage für das Bild wird den Referer-Header enthalten.
Die Inhaltsauslieferung ist in 4 Kanäle organisiert:
RedPeanut ermöglicht die Anpassung des Netzwerk-Footprints sowohl serverseitig als auch clientseitig. Die Eigenschaften, die festgelegt werden können, sind:
Domain Fronting
Um die Domain-Fronting-Unterstützung zu aktivieren, muss der "Host"-Header im Client-Bereich sowohl bei Post als auch Get gesetzt werden (im Standardprofil 2 beispielhaft dargestellt).
Das PowerShellExecuter-Modul ermöglicht die Ausführung von Oneliner-Befehlen oder Dateien in einem Runspace mit bereits geladenem AMSI-Bypass, Logging-Bypass und PowerView.
Ab Version 0.3.0 unterstützt RedPeanutAgent den Befehl blockdlls. Wenn diese Option aktiviert ist, werden untergeordnete Prozesse, die zur Ausführung von Aufgaben im nicht verwalteten Modus erstellt werden, mit dem Attribut PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON erstellt. Dieses Attribut verhindert das Laden von DLLs, die nicht von Microsoft signiert sind, und kann so unsere Aufgaben vor AV- und EDR-Hooking-Techniken schützen.
RedPeanutAgent verwendet dynamisches DLL-Laden, um die Verwendung verdächtiger DLL-Importe zu vermeiden. Credits für das dynamische DLL-Laden gehen an @TheRealWover, @cobbr_io und @FuzzySec für ihre Arbeit in SharpSploit.
Einige AV- und EDR-Anbieter verwenden Hooking-Techniken, um Aktivitäten zu verfolgen. Um die Verwendung von gehockten Syscalls zu vermeiden, verwendet RedPeanutAgent direkte Syscalls und injiziert automatisch den notwendigen Code. Credits für den direkten Syscall gehen an @Cneelis
Um RedPeanut auszuführen, müssen Sie dotnet installiert haben. So installieren Sie dotnet auf Kali:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
chown root:root /etc/apt/sources.list.d/microsoft-prod.list
apt-get install apt-transport-https
apt-get update
apt-get install dotnet-sdk-2.1
git clone --recursive https://github.com/b4rtik/RedPeanut.git
Für die Funktion des verdeckten Kanals muss die libgdiplus-Bibliothek installiert werden, daher:
Für Linux-Benutzer:
apt-get install -y libgdiplus
Für OSx
brew install mono-libgdiplus
Generierung des Assembly-Signierungsschlüssels
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
Kopieren Sie dann key.snk in Workspace/KeyFile
root@kali:~# cd RedPanut
root@kali:~/RedPeanut# dotnet run
Using launch settings from /root/Projects/RedPeanut/Properties/launchSettings.json...
Enter password to encrypt serverkey:
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
[*] No profile available, creating new one...
[RP] >
DonutCS ist ein Shellcode-Generierungstool, das positionsunabhängige Shellcode-Payloads aus .NET-Assemblys erstellt. Dieser Shellcode kann verwendet werden, um die Assembly in beliebige Windows-Prozesse zu injizieren. Bei einer beliebigen .NET-Assembly, Parametern und einem Einstiegspunkt (wie Program.Main) erzeugt es positionsunabhängigen Shellcode, der sie aus dem Speicher lädt. Die .NET-Assembly kann entweder von einer URL gestaged oder unstaged sein, indem sie direkt in den Shellcode eingebettet wird.
Die CLR-Persistenztechnik wurde erstmals in diesem Post von @Am0nsec vorgestellt. Die Technik besteht darin, das Application Domain Manager Hooking durchzuführen. Wie im Beitrag beschrieben, ist die Assembly zum Durchführen des Hookings erforderlich, die im GAC verfügbar ist. Eine aus dem GAC zu verwendende Assembly muss einen starken Namen haben und dann mit einem Schlüssel signiert werden. Das CLR-Persistenzmodul benötigt einen Schlüssel, um die Assemblys signieren zu können, der mit dem Tool sn.exe wie folgt generiert werden kann:
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
Kopieren Sie die Datei key.snk in den Ordner Workspace/KeyFile. Diese Datei wird verwendet, um die Assembly für die Persistenz zu signieren.
Einige der bekannten Tools in RedPeanut, wie die GhostPack-Tools, sind vollständig integriert und werden clientseitig ausgeführt. Um die Tools, z.B. Seatbelt, zu aktualisieren, ohne das gesamte Repository zu aktualisieren, ist Folgendes erforderlich: Klonen Sie das Seatbelt-Repository, benennen Sie die "Main"-Methode in "Execute" um, fügen Sie den öffentlichen Modifikator hinzu und kompilieren Sie es als DLL neu. Die DLL muss mit dem PS-Skript von RastaMouse Get-CompressedShellcode.ps1 komprimiert und in Base64 kodiert werden.