VNC目前已被广泛应用的一个远程控制程序,很多攻击者对VNC的攻击技术研究热情是高涨的,丝毫不亚于对Windows的远程桌面(3389)、PcAnywhere的攻击研究。从最开始爆发出来的VNC的低版本密码验证绕过漏洞,到各种版本的VNC密码破解技术的公布,再到针对各种版本VNC的专门的攻击程序出现,VNC的攻击也在网络中不断的进行着。下文将重点介绍针对各版本的VNC的攻击技术,以案例模拟的方式进行详细的操作和原理讲解,同时对不同版本的不同情况会有特别的提示。本文的目的是防微杜渐,做到预防在先,在实现功能的同时一定要注意安全!

首先我们看看VNC运行的工作流程:

(1) VNC客户端通过浏览器或VNC Viewer连接至VNC Server;

(2) VNC Server传送一个对话窗口至客户端,要求输入连接密码(可能为空),以及存取的VNC Server显示装置;

(3) 在客户端输入连接密码后,VNC Server验证客户端是否具有存取权限;

(4) 若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境;

(5) 被控端将画面显示控制权交由VNC Server负责;

(6) VNC Server将把被控端的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

一、 VNC攻击工具:vncpwdump

国内很少没有针对VNC攻击技术的专门研究团队,大部分的VNC攻击技术和相关工具都是国外攻击者推出的,所以如果要深入研究VNC的攻防技术,在国内比较难找到新的技术资料,如这里将要介绍的Vncpwdump。Vncpwdump是一个很早以前就已经推出的VNC综合性的攻击和破解工具,但是国内能下载到的基本都是vncpwdump 0.0.1版,也就是最开始公布出来的那个版本,已经古老得基本没有任何作用了。最新的可以针对各版本VNC进行密码破解和攻击的vncpwdump是1.0.6版,具有非常强悍的各项功能。Vncpwdump是个开源的程序,不但可以下载到它,还可以下载到它的源代码进行修改和增加、删除相关功能,详细的程序执行界面如图1所示。

650) this.width=650;" class="fit-image" border="0" alt="图1" width="498" height="421" src="http://images.51cto.com/files/uploadimg/20110705/1110510.jpg" />

图1

Vncpwdump的主要功能是获取VNC的密码,它提供多种获取方式,比如:从NTUSER.DAT文件中获取;从命令行输入获取;注入VNC线程获取;注册表中获取等方式。

二、 使用vncpwdump进行攻击模拟

Vncpwdump的功能很多,从它的使用界面来看,有如下的功能参数:

下面对各参数的具体含义和使用方式做简单演示。

首先是"-c"和"-s"参数,这两个参数的意义是从注册表的"HKEY_CURRENT USER"或"HKEY_LOCAL MACHINE"下读取VNC的密码,因为版本不同的关系,上述两个注册表键值中的其中一个会存在VNC的密码。其中"HKCU "是简写,代表注册表中得"HKEY_CURRENT_USER"位置。当我们打开注册表,找到相应位置得时候密码内容就逐步浮出水面,可以找到里面有一行如下显示:

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110511.jpg" width="498" height="318" />

  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4]
  3. "Password"=hex:49,40,15,f9,a3,5e,8b,22
  4. "SecurityTypes"="VncAuth"
  5. "ReverseSecurityTypes"="None"
  6. "QueryConnect"=dword:00000000
  7. "QueryOnlyIfLoggedOn"=dword:00000000
  8. "PortNumber"=dword:0000170c
  9. "IdleTimeout"=dword:00000e10
  10. "HTTPPortNumber"=dword:000016a8
  11. "LocalHost"=dword:00000000
  12. "Hosts"="+,"
  13. "AcceptKeyEvents"=dword:00000001
  14. "AcceptPointerEvents"=dword:00000001
  15. "AcceptCutText"=dword:00000001
  16. "SendCutText"=dword:00000001
  17. "DisableLocalInputs"=dword:00000000
  18. "DisconnectClients"=dword:00000001
  19. "AlwaysShared"=dword:00000000
  20. "NeverShared"=dword:00000000
  21. "DisconnectAction"="None"
  22. "RemoveWallpaper"=dword:00000000
  23. "RemovePattern"=dword:00000000
  24. "DisableEffects"=dword:00000000
  25. "UpdateMethod"=dword:00000001
  26. "PollConsoleWindows"=dword:00000001
  27. "UseCaptureBlt"=dword:00000001
  28. "UseHooks"=dword:00000001
  29. "Protocol3.3"=dword:00000000

这password后得值就是加密的密码,虽然我们不能直接读懂他,我们可以使用多种方法来破解,比如VNCX4和我们下面要介绍的vncpwdump均可,如果你是高手那么用windows自带的计算器也能搞定。

以VNC 4为例,使用"-s"参数可以直接得到相关的密码,如图2所示。

650) this.width=650;" class="fit-image" border="0" alt="图2" src="http://images.51cto.com/files/uploadimg/20110705/1110512.jpg" width="498" height="89" />

图2

可以看到上面设置的密码直接被读出:"123456"。

"-r"参数后的说明是"decrypts password in <file>",也就是从文件中读出密码,通常情况下,攻击者会尝试使用"NTUSER.DAT"文件读取密码。"NTUSER.DAT"和"NTUSER.ini"都属于系统的用户配置文件,里面存储了一些用户的相关配置信息,有一些版本的VNC会将密码存储于这个文件之中,不过大家不必担心,一般情况下这个文件无法读出密码。

"-d"参数的说明是"dumps the password by injecting into running process",意思是以注入进程的方式读取密码。在实际的网络中,考虑到服务器的稳定性,一般不适用这个参数进行攻击。

"-k"参数和"-e"参数是相对应的配套参数,"-k"的作用是在获得系统中存在的加密VNC密码以后解密,"-e"参数的作用是将没有经过VNC加密的密码进行加密。

先看看"-e"是什么效果。

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110513.jpg" width="498" height="96" />

从上图中可以看到,使用命令后得到加密后的KEY是"494015F9A35E8B22",实际上,这个key如果是VNC的链接密码的话,VNC会将这个密码存放在注册表中的一个固定的地方,每当用户连接的时候都会验证,如果管理员修改密码,这个值也跟着改变。再看看使用"-k"参数进行解密的命令:

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110514.jpg" width="498" height="84" />

可以看到密码"123456"已经被破解出来。

"-s"和"-c"参数也是成对使用的,功能类似。"-s"参数用于直接修改VNCserver的链接密码,"-c"参数用户修改当前用户的密码。

举例来说,如果使用"-s"参数将vnc的链接密码改成"123",则使用如下命令

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110515.jpg" width="498" height="108" />

这里需要注意的是,vncpwdump的各个参数都是区分大小写的,大小写不同作用也不同,大家在实际使用过程中一定要注意区分。在实际的网络攻击中,当攻击者无法获得VNC密码时候,就可以使用"-s"参数来强制改变VNC密码,但这样做也会被管理员发现。

三、针对VNC的扫描

在这里我们使用的是vncscan工具。运行截图如下:

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110516.jpg" width="498" height="290" />

从上图可知,这个程序主要包含3个部分,分别是"target"、"scantype"、"option",其中"target"用于定义扫描的IP地址范围,"scantype"确定扫描的方式,"option"是附带的其他参数。

举例来说,要批量扫描内部网络中安装了VNC的计算机,确定IP地址段为192.168.0.1-192.168.0.254,VNC默认端口是5900,这样需要构造的命令如下:

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110517.jpg" width="498" height="164" />

其中有6个输出参数,分别如下:

"FOUND" :表示得到的结果数据;

"PORT":扫描的端口数;

"IP": 扫描的IP数;

"STATUS": 完成进度

"THREADS": 线程;

"TOTAL/REMAINING":用时;

从结果中我们看出192.168.0.243开放了5900端口。在实际的攻击过程中,攻击者往往都会利用自己控制的肉鸡进行大范围的扫描,如果只通过在CMD下运行并查看结果,这样比较繁琐,所以这个扫描程序会在程序目录生成一个TXT文件,里面有扫描结果的记录。例如:

650) this.width=650;" class="fit-image" border="0" alt="" src="http://images.51cto.com/files/uploadimg/20110705/1110518.jpg" width="498" height="508" />

上图中实际IP地址已处理,VNC_bypauth.txt文件会记录开放5900端口的IP地址及VNC状态。其中只有"VULNERABLE"是存在直接可以利用的漏洞,可以被攻击者利用的,而"patched,banned"这两种状态没有用。

这样一个典型的VNC的漏洞攻击模拟就完成了。

本文出自 “李晨光原创技术博客” 博客,谢绝转载!

VNC Server模拟攻击实战的更多相关文章

  1. Windows Server 2012 虚拟化实战:网络(二)

    关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Window ...

  2. CentOS 安装VNC Server

    环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装VNC [root@Nginx canyouNgx]# rpm -q vn ...

  3. ubuntu VNC server 黑屏 yum源更新(ubuntu16.04)

    更新yum源,备份/etc/apt/sources.list root@mgw-virtual-machine:~# nano /etc/apt/sources.list   #添加源 # deb c ...

  4. Droid VNC Server

    这个app可以在Android开启VNC Server,让其他的VNC Client远程连接手机,不过前提是要ROOT.哎,可惜了. 当然还有另一款替代品Total Control http://ww ...

  5. VNC Server 配置

    1. 检查vnc客户端和服务器是否已经安装: [gavin@centos ~]$ rpm -q vnc vnc-server package vnc is not installed vnc-serv ...

  6. Centos自动登录系统并自动打开VNC Server

    系统自动登录 修改配置文件 sudo vim /etc/gdm/custom.conf 增加配置 [daemon] AutomaticLogin=spark AutomaticLoginEnable= ...

  7. Ubuntu 下安装VNC server

    尽管我们在大部分情况下用ssh登录Ubuntu服务器就好了,但是有时候我们的程序需要在图形界面下运行,这时我们就要用到vnc server这个软件了.在Ubuntu下安装vnc server很简单的, ...

  8. ArcGIS Server 10.2 实战(二)动态修改要素数据的地理处理服务

    上一篇<ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层>介绍了如何用JSON转要素的地理处理服务,实现了动态创建点要素并加载到 ...

  9. (总结)CentOS Linux下VNC Server远程桌面配置详解

    一.安装相应桌面环境与vnc服务端和客户端: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME桌面环 ...

随机推荐

  1. 已知二叉树的中序序列为DBGEAFC,后序序列为DGEBFCA,给出相应的二叉树

    面对这种问题时我们该怎么解决? 今天写数据结构题.发现了一道总是碰见问题的题在这里我写了一种求解方法我自己称它为分层递归求解. 第一步通过观察我们知道后序遍历时最后一个是根节点A 在中序序列中A的左边 ...

  2. Android插件实例——360 DroidPlugin具体解释

    在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿 ...

  3. (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

    题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  4. Unity multiplayer

    using UnityEngine; using System.Collections; public class multiplayer_Button : MonoBehaviour { void ...

  5. thinkphp5项目--企业单车网站(七)

    thinkphp5项目--企业单车网站(七) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  6. C++中explicit关键字作用

    explicit是c++中不太常用的一个关键字,其作用是用于修饰构造函数,告诉编译器定义对象时不做隐式转换. 举例说明: include <iostream> include <st ...

  7. Excel 文本内容拆分

    1.首先把文本数据粘贴到excel-->在旁边插入空白列..选择数据-->分列-->固定宽度 2.数据预览点击下一步 3.最后分好的数据就在 归去来兮,田园将芜胡不归?既自以心为形役 ...

  8. java command not found

    INSTALLATION PROCEDURE ON RASPBERRY PI The remaining steps should be performed directly on the conso ...

  9. Atcoder Grand Contest 107 A Biscuits

    A - Biscuits Time limit : 2sec / Memory limit : 256MB Score : 200 points Problem Statement There are ...

  10. 联想 Thinkserver TS250服务器RAID1 重建测试

    1.RAID1状态下,拨掉其中一块硬盘后,RAID1即失效. 2.重新插入后,在进行系统后会自动重建 *RAID1 提示Rebuild *进入桌面后软件,显示重建进度 软件下载地址:https://p ...