Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!
BokuLoader — Ein Proof-of-Concept Cobalt Strike Reflective Loader, der darauf abzielt, Cobalt Strikes Evasion-Funktionen nachzubilden, zu integrieren und zu verbessern! | Kitploit
Ein Proof-of-Concept Cobalt Strike Reflective Loader, der darauf abzielt, Cobalt Strikes Evasion-Funktionen nachzubilden, zu integrieren und zu verbessern!
Ein Proof-of-Concept User-Defined Reflective Loader (UDRL), der darauf abzielt, die Evasion-Funktionen von Cobalt Strike nachzubilden, zu integrieren und zu verbessern!
Der integrierte Cobalt Strike-Reflective-Loader ist robust und unterstützt alle Malleable-PE-Evasion-Funktionen, die Cobalt Strike bietet. Der größte Nachteil bei der Verwendung eines benutzerdefinierten UDRL besteht darin, dass Malleable-PE-Evasion-Funktionen möglicherweise nicht out-of-the-box unterstützt werden.
Das Ziel des öffentlichen BokuLoader-Projekts ist es, Red Teams bei der Erstellung eines eigenen Cobalt-Strike-UDRL zu unterstützen. Das Projekt soll alle sinnvollen CS-Malleable-PE-Evasion-Funktionen unterstützen. Einige Evasion-Funktionen nutzen die CS-Integration, andere wurden komplett neu erstellt, und einige werden nicht unterstützt.
Bevor Sie dieses Projekt in irgendeiner Form verwenden, sollten Sie testen, ob die Evasion-Funktionen wie erwartet funktionieren. Zwischen dem C-Code und dem Aggressor-Skript können unterschiedliche Betriebssystemversionen, Compiler und Java zu unterschiedlichen Ergebnissen führen.
HTTP/S-Beacons werden durch BokuLoader-Implementierung unterstützt. SMB/TCP wird derzeit für obfuscate true nicht unterstützt. Details im Issue. Hilfe wird angenommen, wenn du es beheben kannst :)
entry_point
RVA als Dezimalzahl
Unterstützt durch BokuLoader-Implementierung
cleanup
true
Unterstützt durch CS-Integration
userwx
true/false
Unterstützt durch BokuLoader-Implementierung
sleep_mask
(true/false) oder (Sleepmask Kit+true)
Unterstützt. Bei Verwendung des Standard-„sleepmask true“ (ohne Sleepmask Kit) setze „userwx true“. Bei Verwendung des Sleepmask Kits, das RX-Beacon.text-Speicher unterstützt (src47/Ekko), setze „sleepmask true“ && „userwx false“.
magic_mz_x64
4-Zeichen-String
Unterstützt durch CS-Integration
magic_pe
2-Zeichen-String
Unterstützt durch CS-Integration
transform-x64 prepend
escaped hex string
BokuLoader.cna Aggressor-Skript-Modifikation
transform-x64 strrep
string string
BokuLoader.cna Aggressor-Skript-Modifikation
stomppe
true/false
Nicht unterstützt. BokuLoader kopiert keine Beacon-DLL-Header. Die ersten 0x1000 Bytes der virtuellen Beacon-DLL sind 0x00
Importiere innerhalb von Cobalt Strike das Aggressor-Skript BokuLoader.cna
Generiere den x64-Beacon (Angriffe -> Pakete -> Windows Executable (S))
Verwende die Skript-Konsole, um sicherzustellen, dass BokuLoader in den Beacon-Build implementiert wurde
Unterstützt keine x86-Option. Die x86-Binärdatei ist die ursprüngliche Reflective-Loader-Objektdatei.
Die Erzeugung von RAW-Beacons funktioniert sofort. Bei Verwendung des Artifact-Kits für den Beacon-Loader muss die Variable stagesize größer als der Standardwert sein.
BokuLoader ändert einige häufig erkannte Zeichenfolgen in neue hartcodierte Werte. Diese Zeichenfolgen können zur Signatur von BokuLoader verwendet werden:
Ursprünglicher Cobalt-Strike-String
BokuLoader-Cobalt-Strike-String
ReflectiveLoader
BokuLoader
Microsoft Base Cryptographic Provider v1.0
12367321236742382543232341241261363163151d
(admin)
(tomin)
beacon
bacons
Speicherzuweiser
DLL-Modul-Stomping
Kernel32.LoadLibraryExA wird aufgerufen, um die DLL von der Festplatte abzubilden.
Das 3. Argument für Kernel32.LoadLibraryExA ist DONT_RESOLVE_DLL_REFERENCES (0x00000001)
Erkennbar durch Scannen des Prozessspeichers mit dem Tool pe-sieve
Heap-Zuweisung
Ausführbarer RX- oder RWX-Speicher wird im Heap vorhanden sein, wenn kein Sleepmask-Kit verwendet wird.
Mapped-Allocator
Kernel32.CreateFileMappingA & Kernel32.MapViewOfFile werden aufgerufen, um Speicher für die virtuelle Beacon-DLL zuzuweisen.
Sleepmask-Erkennung
Wenn ein Sleepmask-Kit verwendet wird, gibt es Erkennungsmethoden für diese unabhängige Speicherzuweisung, wie von MDSec hier beschrieben
Indirekte Syscalls
BokuLoader ruft die folgenden NT-Systemaufrufe auf, um den ausführbaren Beacon-Speicher einzurichten: NtAllocateVirtualMemory, NtProtectVirtualMemory
Diese werden indirekt aus dem ausführbaren BokuLoader-Speicher aufgerufen.
Das Setzen von Userland-Hooks in ntdll.dll wird diese Systemaufrufe nicht erkennen.
Es könnte möglich sein, Kernel-Callbacks mit einem Kernel-Treiber zu registrieren, um die oben genannten Systemaufrufe zu überwachen und ihre Verwendung zu erkennen.
Der BokuLoader selbst enthält die Assembly-Anweisungen mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 in seinem ausführbaren Speicher.
Virtueller Beacon-DLL-Header
Die ersten 0x1000 Bytes der virtuellen Beacon-DLL sind Nullen.
Quellcode verfügbar
Der Quellcode von BokuLoader ist im Repository enthalten und kann zur Erstellung von Speichersignaturen verwendet werden.
Wenn du weitere Erkennungshinweise hast, kannst du gerne einen Pull-Request einreichen.