
Cobalt Strike용 HVNC
Hidden Desktop(종종 HVNC라고 불림)는 사용자가 모르게 원격 데스크탑 세션과 상호 작용할 수 있도록 하는 도구입니다. VNC 프로토콜은 사용되지 않지만 결과는 유사한 경험을 제공합니다. 이 Cobalt Strike BOF 구현은 C++로 작성된 TinyNuke/포크에 대한 대안으로 만들어졌습니다.
Hidden Desktop은 네 가지 구성 요소로 이루어져 있습니다:
BOF 초기화 도구: Beacon 프로세스에 HVNC 코드를 주입하는 작은 프로그램.
HVNC 셸코드: TinyNuke HVNC의 PIC 구현.
서버 및 운영자 UI: HVNC 셸코드의 연결을 수신하는 서버와 운영자가 원격 데스크탑과 상호 작용할 수 있는 UI. 현재 Windows만 지원합니다.
애플리케이션 런처 BOF: 새 데스크탑에서 애플리케이션을 실행하는 Beacon Object Files 세트.
최신 릴리스를 다운로드하거나 make를 사용하여 직접 컴파일하세요. 팀서버에서 접근 가능한 Windows 머신에서 HVNC 서버를 시작하세요. 그런 다음 클라이언트를 실행합니다:
HiddenDesktop <server> <port>
서버 머신에 새 빈 창이 나타납니다. BOF는 기본적으로 어떤 애플리케이션도 실행하지 않습니다. 애플리케이션 런처 BOF를 사용하여 새 데스크탑에서 일반적인 프로그램을 실행할 수 있습니다:
hd-launch-edge
hd-launch-explorer
hd-launch-run
hd-launch-cmd
hd-launch-chrome
파일 탐색기를 통해 마우스와 키보드를 사용하여 프로그램을 실행할 수도 있습니다. 다른 애플리케이션은 다음 명령을 사용하여 실행할 수 있습니다:
hd-launch <command> [args]
https://github.com/WKL-Sec/HiddenDesktop/assets/9327972/82f73393-ba44-42b4-8eae-b36b7181fac0
rportfwd를 사용하여 팀 서버로 전달됩니다. 상태 업데이트는 명명된 파이프를 통해 Beacon으로 다시 전송됩니다.InputHandler 함수에 전달됩니다. BeaconInjectProcess를 사용하여 셸코드를 실행하므로, Malleable C2 프로필 또는 프로세스 인젝션 BOF에서 동작을 사용자 정의할 수 있습니다. 원격 프로세스를 대상으로 Hidden Desktop을 수정할 수 있지만 현재는 지원되지 않습니다. 이는 BOF가 종료되고 HVNC 셸코드가 계속 실행될 수 있도록 하기 위함입니다.InputHandler는 Beacon이 연결할 새로운 명명된 파이프를 생성합니다. 연결이 설정되면 지정된 데스크탑이 열리거나(OpenDesktopA) 생성됩니다(CreateDesktopA). 역방향 포트 포워드(rportfwd)를 통해 HVNC 서버에 새로운 소켓이 설정됩니다. 입력 핸들러는 아래 설명된 DesktopHandler 함수를 위한 새 스레드를 생성합니다. 이 스레드는 HVNC 서버로부터 마우스 및 키보드 입력을 수신하여 데스크탑으로 전달합니다.DesktopHandler는 역방향 포트 포워드를 통해 HVNC 서버에 추가 소켓 연결을 설정합니다. 이 스레드는 창의 변경 사항을 모니터링하고 HVNC 서버로 전달합니다.HiddenDesktop BOF는 example.profile을 사용하여 다음 Windows 버전/아키텍처에서 테스트되었습니다: