1. 개요
vnc 란 원격 데스크톱 제어 프로그램이다. 그 중에서 매번 접속 시 암호를 입력하기 번거로우므로 레지스트리에 암호를 하드코딩 해놓을 수 있다. 하지만 암호화 돼있기 때문에 해당 암호를 평문으로 바꾸기 위해서 vncpwd 를 이용한다.
해당 툴은 HTB Labs 의 Cascade 에서 나온다.
2. 사용법
2.1. 설치
┌──(root㉿kali)-[/home/kali/labs/Cascade/Cascade-2]
└─# git clone https://github.com/jeroennijhof/vncpwd.git
Cloning into 'vncpwd'...
remote: Enumerating objects: 28, done.
remote: Total 28 (delta 0), reused 0 (delta 0), pack-reused 28 (from 1)
Receiving objects: 100% (28/28), 22.15 KiB | 3.69 MiB/s, done.
Resolving deltas: 100% (9/9), done.
2.2. 컴파일
┌──(root㉿kali)-[/home/…/labs/Cascade/Cascade-2/vncpwd]
└─# gcc -Wall -g -o vncpwd vncpwd.c d3des.c
2.3. 파일 준비
2.3.1. 레지스트리 파일 톺아보기
레지스트리 파일은 VNC\ Install.reg 와 같은 이름을 갖고 있으며, Password 항목에 hex:6b,cf,2a,4b,6e,5a,ca,0f 와 같이 저장돼 있다.
┌──(root㉿kali)-[/home/kali/labs/Cascade/Cascade-2]
└─# cat VNC\ Install.reg
��Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC]
[HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server]
"ExtraPorts"=""
"QueryTimeout"=dword:0000001e
"QueryAcceptOnTimeout"=dword:00000000
"LocalInputPriorityTimeout"=dword:00000003
"LocalInputPriority"=dword:00000000
"BlockRemoteInput"=dword:00000000
"BlockLocalInput"=dword:00000000
"IpAccessControl"=""
"RfbPort"=dword:0000170c
"HttpPort"=dword:000016a8
"DisconnectAction"=dword:00000000
"AcceptRfbConnections"=dword:00000001
"UseVncAuthentication"=dword:00000001
"UseControlAuthentication"=dword:00000000
"RepeatControlAuthentication"=dword:00000000
"LoopbackOnly"=dword:00000000
"AcceptHttpConnections"=dword:00000001
"LogLevel"=dword:00000000
"EnableFileTransfers"=dword:00000001
"RemoveWallpaper"=dword:00000001
"UseD3D"=dword:00000001
"UseMirrorDriver"=dword:00000001
"EnableUrlParams"=dword:00000001
"Password"=hex:6b,cf,2a,4b,6e,5a,ca,0f
"AlwaysShared"=dword:00000000
"NeverShared"=dword:00000000
"DisconnectClients"=dword:00000001
"PollingInterval"=dword:000003e8
"AllowLoopback"=dword:00000000
"VideoRecognitionInterval"=dword:00000bb8
"GrabTransparentWindows"=dword:00000001
"SaveLogToAllUsersPath"=dword:00000000
"RunControlInterface"=dword:00000001
"IdleTimeout"=dword:00000000
"VideoClasses"=""
"VideoRects"=""
2.3.2. 암호 내용 파일로 저장하기
16진수 문자열을 2진으로 변경하기 위한 작업을 진행한다.
┌──(root㉿kali)-[/home/kali/labs/Cascade/Cascade-2]
└─# echo '6bcf2a4b6e5aca0f' | xxd -r -p > vnc_enc_pass
2.4. 복호화
┌──(root㉿kali)-[/home/…/labs/Cascade/Cascade-2/vncpwd]
└─# ./vncpwd ../vnc_enc_pass
Password: sT333ve2