本文发表于《网管员世界》2012年8A期

 

寻找VPN内网登陆外网的秘密通道

刘志勇

 

 

笔者所在某分公司,有两条网络线路,一条是帧中继到公司本部,这条线路是2M的带宽;另一条就是普通的ADSL宽带,仅为512K。整个分公司都通过那条512K的宽带共享互联网,这样分摊到每个用户,可用带宽就变得非常小,网络应用体验不甚顺畅。

笔者听说本部的互联网出口带宽高达50M,但他们的代理不对分公司提供互联网权限,加之听说本部的代理服务器部署了上网行为控制,本部同事上网体验其实也不佳

后来笔者无意得到本部的VPN账户,地址是218.*.*.*,就试着设置然后登陆按照缺省的设置连上以后能访问内网,但与此同时外网就断开了。当然,如果不勾选在远程网络上使用默认网关就可以避免外网无法访问的现象,但这不是笔者希望的。

笔者就思考,能否从这个VPN入手,寻找内网登外网的途径呢?这样就能好好利用那条2M的线路了。

笔者先从ADSL线路登陆上本部的VPN,键入ipconfig /all查看,得知分配到的内网IP是属于10.152.40这个网段。

笔者猜测VPN有可能在这个网段内。随手用了某款扫描软件看看这个网段都有哪几个活动主机,只有三个,这不符合常理,有可能是做了某种设置,使主机不响应ping操作。

笔者想到,如果从外网扫描出那个VPN的机器名,开放端口等信息,再扫描10.152.40这个网段,如果符合的话,那它必定是VPN相应的内网IP地址。

但是这个主机,普通的扫描软件拿他没辙,怎么办呢?笔者想到以前曾在本刊发表的有关Nmap的文章。Nmap是最为强大的扫描软件。

于是登陆Linux系统,打开终端,键入如下命令查看那个VPN主机的端口开放情况:

nmap -sC 218.*.*.*

返回的结果显示,它开放了tcp端口1723。而这个端口的相应服务就是pptp。这是一个很重要的线索,如果在10.152.40.*这个网段能找到开放tcp端口1723的主机,那它极有可能就是VPN的内网IP地址!

于是继续键入如下命令查看有哪些主机开放了端口1723

nmap -p 1723 10.152.40.0/24

返回的结果显示有很多主机,当然很多都显示“1723/tcp closed pptp”“1723/tcp filtered pptp”这样的信息,仔细翻着,终于找到唯一的一行:“1723/tcp open pptp”!赶紧抄下它的内网IP地址10.152.40.99

接下来,修改VPN的属性中的常规项里面的目的地的主机名或IP地址,把刚才抄下的内网IP地址10.152.40.99,替换掉218.开头的外网地址。

然后拨号,连上以后,发现QQ掉了一下又自动登陆了,但这时候上不去任何网页,内网也不行。

联想到QQ能登陆,它不靠域名解析而是直接通过IP地址来登陆QQ服务器的。这说明外网的线路已经通了,有问题的是DNS设置。好,设置VPN属性中的网络中的Internet协议的属性,指定了谷歌的DNS服务器8.8.8.8。再重新拨号看看,嘿,能浏览任何网页了!这次走的是2M的线路了。

但是,笔者不久就发现,经过这样的设置后,不能访问内网。

赶紧在命令提示符键入如下指令看看路由表:

route print

从返回的路由表得知,缺少一个路由。只要添加一条路由就行了:

route add 10.0.0.0/8 10.152.64.253

因为笔者的网关就是10.152.64.253,而10.0.0.0/8则是内网。

添加这条路由后,发现外网、内网都通了,不再掉线,都走2M的线路,外网都从10.152.40.99那个VPN出去,内网则由10.152.64.253出去,笔者再也不用那根512KADSL线路了,留给分公司最需要的人吧。

不过笔者发现,重启后路由就有问题,于是敲入如下命令添加永久路由:

route -p add 10.0.0.0/8 10.152.64.253

这样就不用每次开机都要手动添加路由了

这次出漏洞本质,主要是防火墙采用了IPSEC-VPNL2TP机制),分了个内网IP,相当于认证后内网全通,然后它在做出口NAT时候,没有限制哪些内网IP可以通过防火墙出口访问INTERNET,导致笔者成功。

现在主流VPN 都是SSL-VPN,可以限制到端口级(颗粒级)访问