
HVNC für Cobalt Strike
Hidden Desktop (oft als HVNC bezeichnet) ist ein Tool, das es Operateuren ermöglicht, mit einer Remote-Desktop-Sitzung zu interagieren, ohne dass der Benutzer davon erfährt. Das VNC-Protokoll ist nicht beteiligt, aber das Ergebnis ist eine ähnliche Erfahrung. Diese Cobalt Strike BOF-Implementierung wurde als Alternative zu TinyNuke/Forks erstellt, die in C++ geschrieben sind.
Es gibt vier Komponenten von Hidden Desktop:
BOF-Initialisierer: Kleines Programm, das für das Injizieren des HVNC-Codes in den Beacon-Prozess verantwortlich ist.
HVNC-Shellcode: PIC-Implementierung von TinyNuke HVNC.
Server- und Operator-UI: Server, der auf Verbindungen vom HVNC-Shellcode wartet, und eine UI, die es dem Operator ermöglicht, mit der Remote-Desktop-Sitzung zu interagieren. Unterstützt derzeit nur Windows.
Anwendungsstarter-BOFs: Satz von Beacon-Object-Dateien, die Anwendungen auf dem neuen Desktop ausführen.
Laden Sie die neueste Version herunter oder kompilieren Sie sie selbst mit make. Starten Sie den HVNC-Server auf einem Windows-Rechner, der vom Teamserver aus erreichbar ist. Sie können dann den Client mit folgendem Befehl ausführen:
HiddenDesktop <server> <port>
Sie sollten ein neues leeres Fenster auf dem Server-Rechner sehen. Der BOF führt standardmäßig keine Anwendungen aus. Sie können die Anwendungsstarter-BOFs verwenden, um gängige Programme auf dem neuen Desktop auszuführen:
hd-launch-edge
hd-launch-explorer
hd-launch-run
hd-launch-cmd
hd-launch-chrome
Sie können Programme auch über den Datei-Explorer mit Maus und Tastatur starten. Andere Anwendungen können mit folgendem Befehl ausgeführt werden:
hd-launch <command> [args]
https://github.com/WKL-Sec/HiddenDesktop/assets/9327972/82f73393-ba44-42b4-8eae-b36b7181fac0
rportfwd zurück an den Teamserver weitergeleitet. Statusaktualisierungen werden über eine Named Pipe an Beacon gesendet.InputHandler im HVNC-Shellcode übergeben. Es verwendet BeaconInjectProcess, um den Shellcode auszuführen, was bedeutet, dass das Verhalten in einem Malleable-C2-Profil oder mit Prozessinjektions-BOFs angepasst werden kann. Sie könnten Hidden Desktop so modifizieren, dass es auf entfernte Prozesse abzielt, dies wird jedoch derzeit nicht unterstützt. Dies geschieht, damit der BOF beenden kann und der HVNC-Shellcode weiterlaufen kann.InputHandler erstellt eine neue Named Pipe, mit der Beacon eine Verbindung herstellen kann. Sobald eine Verbindung hergestellt wurde, wird der angegebene Desktop geöffnet (OpenDesktopA) oder erstellt (CreateDesktopA). Ein neuer Socket wird über einen Reverse-Port-Forward (rportfwd) zum HVNC-Server hergestellt. Der Eingabehandler erstellt einen neuen Thread für die weiter unten beschriebene Funktion DesktopHandler. Dieser Thread empfängt Maus- und Tastatureingaben vom HVNC-Server und leitet sie an den Desktop weiter.Der HiddenDesktop-BOF wurde mit example.profile auf den folgenden Windows-Versionen/Architekturen getestet:
DesktopHandler stellt eine zusätzliche Socket-Verbindung zum HVNC-Server über den Reverse-Port-Forward her. Dieser Thread überwacht Fenster auf Änderungen und leitet sie an den HVNC-Server weiter.