
HVNC para Cobalt Strike
Escritorio Oculto (a menudo denominado HVNC) es una herramienta que permite a los operadores interactuar con una sesión de escritorio remoto sin que el usuario lo sepa. El protocolo VNC no está involucrado, pero el resultado es una experiencia similar. Esta implementación BOF de Cobalt Strike se creó como una alternativa a TinyNuke/forks que están escritos en C++.
Hay cuatro componentes de Escritorio Oculto:
Inicializador BOF: Pequeño programa responsable de inyectar el código HVNC en el proceso Beacon.
Shellcode HVNC: Implementación PIC del HVNC de TinyNuke.
Servidor e interfaz de operador: Servidor que escucha conexiones del shellcode HVNC y una interfaz de usuario que permite al operador interactuar con el escritorio remoto. Actualmente solo es compatible con Windows.
BOFs lanzadores de aplicaciones: Conjunto de archivos de objeto Beacon que ejecutan aplicaciones en el nuevo escritorio.
Descargue la última versión o compile usted mismo usando make. Inicie el servidor HVNC en una máquina Windows accesible desde el teamserver. Luego puede ejecutar el cliente con:
HiddenDesktop <server> <port>
Debería ver una nueva ventana en blanco en la máquina servidora. El BOF no ejecuta ninguna aplicación por defecto. Puede usar los BOFs lanzadores de aplicaciones para ejecutar programas comunes en el nuevo escritorio:
hd-launch-edge
hd-launch-explorer
hd-launch-run
hd-launch-cmd
hd-launch-chrome
También puede iniciar programas a través del Explorador de Archivos usando el ratón y el teclado. Otras aplicaciones se pueden ejecutar con el siguiente comando:
hd-launch <command> [args]
rportfwd. Las actualizaciones de estado se envían de vuelta a Beacon a través de una tubería con nombre.InputHandler en el shellcode HVNC. Utiliza BeaconInjectProcess para ejecutar el shellcode, lo que significa que el comportamiento se puede personalizar en un perfil Malleable C2 o con BOFs de inyección de procesos. Puede modificar Hidden Desktop para apuntar a procesos remotos, pero esto no es compatible actualmente. Esto se hace para que el BOF pueda salir y el shellcode HVNC continúe ejecutándose.InputHandler crea una nueva tubería con nombre para que Beacon se conecte. Una vez establecida una conexión, el escritorio especificado se abre (OpenDesktopA) o se crea (CreateDesktopA). Se establece un nuevo socket a través de un reenvío de puerto inverso (rportfwd) al servidor HVNC. El controlador de entrada crea un nuevo hilo para la función DesktopHandler descrita a continuación. Este hilo recibirá la entrada del ratón y del teclado del servidor HVNC y la reenviará al escritorio.DesktopHandler establece una conexión de socket adicional al servidor HVNC a través del reenvío de puerto inverso. Este hilo monitoreará las ventanas en busca de cambios y los reenviará al servidor HVNC.El BOF de HiddenDesktop se probó usando example.profile en las siguientes versiones/arquitecturas de Windows: