作者:杨哲 / Christopher Yang [ZerOne]
(欢迎转载,转载 时请注明作者及出处)
大多数管理员及用户对于VPN的看法都是:VPN环境已经属于高级别安全防护,足以保证企业内部信息通信的安全与 稳定。那么,事实真的是这样么?VPN真的是如此无敌么?下面笔者就带大家来揭开VPN薄弱的面纱,看看黑客们是如何进行VPN攻击的。
首先要强调的是,VPN类型有很多分类,但对于大多数中小型企业,为了便于工作及部署,基本
都是采用PPTP及强化
的IPSec VPN,至于大型企业及分支众多的分店型企业,则较多使用SSL VPN。而针对VPN的恶意攻击,常见的有中间人攻击、D.O.S攻击等。作为无线领域的延伸,无线VPN在带来便捷的同时,也面临着和有线网络VPN一样的威胁。下面我就以攻击Windows 2003环境的PPTP
VPN为例,下次给大家带来IPSec VPN 的攻击。
1.攻击相关工具介绍
Zenmap
Zenmap其实只是nmap的图形版本,作为同样免费的工具,zenmap提供了很好的界面帮助用户进行nmap常见的扫描选项,并能够将结果用不同颜色标 识,以便用户查看所需的内容。BackTrack2/3内置为其命令行版。
Asleap
这 是一款用于恢复LEAP和PPTP加 密密码的 免费工具,其原理主要是基于LEAP验 证漏洞,但由于PPTP同 样使用了和LEAP一 样的MSCHAPv2加 密,所以这款工具也可用于破解PPTP帐 户及密码。有Linux和Windows两 个版本,大家可根据需要选择。 BackTrack2/3内置
Ettercap
这是一款以太网环境下的网 络监视、拦载和记录工具,支持多种主动或被动的协议分析,比如加 密相关的SSH、HTTPS等,有数据插入、过滤、保持连接同步等多种功能,也有一个能 支持多种嗅探模式的、强大而完整的嗅探套件,支持插件,能够检查 网络环境是否是交换局域网,并且能使用主动或被动的操作系统指纹识别技术让你了解当前 局域网的情况。这款工具也有Linux和Windows两个版本。BackTrack2/3内置。
2.VPN攻击实战步骤
步骤1:扫描并确定VPN服务器目标
在对VPN设备进行攻击前,需要 先对预攻击目标进行确认,这就需要扫描来发现及识别目标。对于最常见的PPTP VPN,攻击者常会使用nmap这款在命令提示符下工作的扫描器来进行探测。不过,在本书修订时(嘿嘿,我的书),nmap已经有了自己的图形化版本zenmap,对于一些习惯使用鼠标的用户,也许是个福音。
如下图所示,通过采用Full version Detection Scan完整版本探测模式,作为新版本的zenmap,成功扫描出目标开放了1723端口,此为PPTP VPN服务器标准开放端口。在这里可以看到,zenmap同时识别出目标操作系统为Windows 2003 ,以及该系统对应的内部版本号,非常准确。

步骤2:准备Asleap
对于 BackTrack Linux环境的用户,已经内置了Asleap

步骤3:准备ettercap
和上面asleap的准备工作一样,对于Windows或Linux环境,安装对应的ettercap版本即可,需要说明的是,对于Windows环境,在安装ettercap前,应当先安装WinPcap驱动,该驱动可支持网卡模式切换为混杂模式,以便进行中间人攻
击所必需的嗅探及监听。
安装完毕后,就可以打开ettercap,打开后先指定该工具工作的网卡,对于Linux环境,这里选择为eth0。对于Windows环境,则选择当前连接外网的网卡。
下图为Linux下在ettercap里指定工作网卡

步骤4:设定完毕工作网卡,会出现载入界面,此时ettercap会将监听及攻击模块依次载入。
步骤5:载入完毕后,需要打开Hosts栏—Scan hosts选 项,进行扫描网段内开启主机的步骤。经过很短时间的等待,在扫描结果中,ettercap会列出所有该网段内开启主机IP及对应MAC的列表,如下图,可以在Host List里查看该主机列表。

步骤6:在上面的扫描结果中,点选对应的VPN服务器主机,将其添加到Target1里,将预嗅探的其它客户端主机添 加Target2里。当然,也可以直接添加网关地址。此步骤为选择Arp欺骗目标。关于Arp欺骗原理及其它攻击内容,大家可以察看网上的文章,这里就不再反复讲述。
步骤7:目标选定后,就可以开始进行Arp欺骗式中间人攻击,点选MITM栏里的ARP
Poisoning选
项,在如下图的窗口中选择Sniff remote connections,即嗅探远程连接内容。此时,ettercap就开始进行Arp双向欺骗,以截获双方通信内容了。

步骤8:接下来,经过耐心的等待,即可截获VPN交互数据包。对于没有耐心的攻击者,也会使用诸如D.O.S等方式强制断开目标VPN连接,来达到迫使远程VPN客户端重新登录的目的。如下图,在Ettercap里就可以直接过滤出采用MSCHAPv2加密的VPN用户登陆Hash值,里面包含了VPN用户登录帐户名及对应密码。

步骤9:先使用asleap附带的genkeys工具来将字典文件转换成攻击程序可以识别的格式,字典可以事 先根据需要制作,比如生日、常用单词等,这个在网上有很多文章介绍,此处也不再多言,请大家自行建立字典。如下图,将 字典中30多 万key转 换成可以识别的Hash只花费了2秒,转换速率为14.6万密码/秒。

具体命令如下
genkeys –r wordlist.txt –f wordlist.dat -n wordlist.idx
参数解释:
-r wordlist wordlist为事先制作的字典文件;
-f word.dat 将事先制作的字典文件转换成dat文件,文件名可相同;
-n word.idx 将事先制作的字典文件转换成idx文件,文件名可相同;
步骤10:下来,就可以使用asleap对截获到的PPTP
VPN交互Hash进行破解了。
命令如下:
asleap -C Challenge -R Response -f wordlist.dat –n wordlist.idx –v
参数解释:
-C Challenge Hash 此处输入截获到的VPN Challenge Hash内 容
-R Response Hash 此处输入截获到的VPN Response Hash 内容
-f wordlist.dat 跟上前面生成的字典转换dat文件
-n wordlist.idx 跟上前面生成的字典转化idx文件
-v 该参数为显示详细破解过程,可选
这里就会用到在步骤8中捕获到的Hash,提取后如下:
Tunnel
PPTP: 192.168.113.78 -> 192.168.113.3
PPP
: MS-CHAP Password:
admin:"":"":000000000000000000000000000000000000000000000000:51F79B60C8D68BD9DE5D31E4EB92F3F59D058011FE21A06A:CF06BFA79F8ADC3E
其中:
Chanllenge挑战Hash为 51F79B60C8D68BD9DE5D31E4EB92F3F59D058011FE21A06A
Response 响应Hash为CF06BFA79F8ADC3E
如下图,可以看到,直接破解出当前VPN用户登陆密码为haha23#,


我 是ZerOne 安全小组组长 Christopher Yang,以上为ZerOne Security Team无 线研究技术成果的VPN方面基础内容,此为吸引更多具备真正研究、探讨精神及交流之心的朋友进 入无线安全领域所发,也希望此文可加深大家体会无线安全领域发展形势。呵呵,这也是对一些有所 期待的朋友们的一个回馈,希望大家喜欢。拒绝口水,欢迎据理力争。