电信网页访问监控原理分析
近段时间,一个在电信上班的朋友经常说,他们有办法知道一个NAT 网关内部的电脑主机
数,而且能够记录里面任何人的上网记录,听得我是心痒痒的,可问他方法,他又死活不说,
郁闷。今天比较闲,脑袋里又想起了这事,想来想去,认为电信很可能采用欺骗客户端的方
法,让客户端的信息首先发到监控主机,然后再发到目标服务器。
为证实推断是否合理,抱着试试的心态,立即在自己的机器上做了以下实验,步骤如下:
1. 打开机器上的科来网络分析系统。
2. 添加一个图1 所示的过滤器,为的是只捕获我的机器(192.168.0.88)和网关
(00:D0:41:26:3F:9E)以及外网的数据通讯,即不捕获我与内部网之间的通讯。
![](http://www.cppblog.com/images/cppblog_com/elva/img/glq.gif)
(图1 设置过滤器)
3. 为减少数据干扰,在关闭本机上运用的其它应用程序后,开始捕获。
4. 在本机上访问一个网页,这里以访问www.colasoft.com 为例。
5. 在页面出来后,停止捕获,并开始分析系统捕获到的数据包。
6. 此次网页访问系统共捕获到了22 个数据包,原始数据包的列表如图2 所示。
![](http://www.cppblog.com/images/cppblog_com/elva/img/yslb.gif)
(图2 原始数据包列表)
从图2 中可知,编号1,2,3 的数据包是TCP 的三次握手数据包,第4 个数据包是客户端
192.168.0.88 发起的HTTP GET 请求,后面是服务器端的返回数据。从这些数据包来看,
感觉通讯是正常的,于是切换到矩阵视图,查看通讯的节点情况,如图3。
![](http://www.cppblog.com/images/cppblog_com/elva/img/jz.gif)
(图3 访问www.colasoft.com 的矩阵图)
在图3 中,发现了一个奇怪的地址220.167.29.102,由于我此次的操作仅仅只访问了
www.colasoft.com,所以是不应该出现这个地址的。这个220.167.29.102 引起了我的
注意,会不会这个地址在作怪呢?
7. 再切换到数据包视图,发现客户端(192.168.0.88)的确存在和220.167.29.102
的通讯。
奇怪了,为什么192.168.0.88 会主动和220.167.29.102 进行通讯呢,会不会是有人在
伪造数据包呢?为确定是否存在伪造数据包的情况,我强制显示数据包的IP 层摘要信息,
在图2 所示的数据包视图中,单击右键,在弹出的菜单中选择“数据包摘要->IP 摘要”,
查看这些数据包IP 层的信息,如图4。
![](http://www.cppblog.com/images/cppblog_com/elva/img/ip.gif)
(图4 通过IP 层摘要查看220.167.29.102 的伪造数据包)
从图4 可知,TCP 三次握手的服务器返回数据包(编号2)的生存时间是48,而第5 个数
据包的生存时间却是119,同一个服务器返回的两个数据包生存时间差别如此之大,表示
它们经过的路由存在较大的差异,这与正常通讯的状态明显不符,由此我们怀疑编号为5
的数据包可能是某个主机伪造的。
查看该数据包的解码(图4中间,红色圈住部份),发现该数据包是由220.267.29.102发
起的,这表示220.267.29.102主动向192.168.0.88发起了一个欺骗数据包,双击第5个
数据包,打开该数据包的详细解码窗口,如图5。
![](http://www.cppblog.com/images/cppblog_com/elva/img/xx.gif)
(图5 220.167.29.102 伪造的数据包的详细解码信息)
从图5解码信息中可知,该数据包的TCP标记中,同时将确认位、急迫位、终止位置为1,
这表示这个数据包想急于关闭连接,以防止客户端(192.168.0.88)收到服务器
(www.colasoft.com)的正常响应,它这样做的目的是获取客户端(192.168.0.88)传
输的数据信息,其获得的信息如图4中的右下角红色圈住部份,这是一个base64的编码信
息,其具体的信息我会在后面进行详细说明。
8. 由于客户端(192.168.0.88)被220.167.29.102 伪造的数据包5 欺骗,所以它向
服务器(www.colasoft.com)确认并发送一个关闭连接请求的数据包,也就是第6
和第7 这两个数据包
9. 第9 和第10 这两个数据包,也是220.167.29.102 伪造的重置连接数据包,它的目
的是欺骗客户端(192.168.0.88)关闭连接。
10. 接着,客户端(192.168.0.88)主动向220.167.29.102 发起TCP 的三次握手,即
第8,11,12 这三个数据包,以和220.167.29.102 建立连接。
11. 13,14,15,17 这几个数据包,是客户端(192.168.0.88)和220.167.29.102 之间
的数据通讯。从第15 这个数据包的解码中,可以清楚地看到220.167.29.102 将重
新将访问重定向到www.colasoft.com,从而让客户端( 192.168.0.88 ) 向
www.colasoft.com 再次发起页面访问请求,以让客户端(192.168.0.88)完成正
常的网页访问,其解码如图6。
![](http://www.cppblog.com/images/cppblog_com/elva/img/fq.gif)
(图6 220.167.29.102 向192.168.0.88 发起的数据包)
12. 16,18,19 是客户端(192.168.0.88)向服务器(www.colasoft.com)发起三次握
手数据包。
13. 20,21,22 是三次握手成功后,客户端和服务器正常的HTTP 通讯数据包,也就是传递
客户端所请求的页面,这里是www.colasoft.com。
14. 查看会话,选择TCP,发现此次的网页访问共连接起了3 个连接,如图7。这三个连
接的TCP 流重组信息分别如图7,8,9,通过流的重组信息,我们也可以较为清楚地看
到客户端和服务器(www.colasoft.com),以及客户端和220.167.29.102 之间的
数据通讯信息。
![](http://www.cppblog.com/images/cppblog_com/elva/img/tcp.gif)
(图7 此次网页访问产生的三个TCP 连接及第一个连接的TCP 流信息)
图7中,客户端(192.168.0.88)向www.colasoft.com发起GET请求,但从服务器端返
回的数据可知,返回服务器是220.167.29.102,且带了一串base64编码的参数,
“ABcHJvdmluY2VpZD04Jm随机删除部份
MTIwNDExJnNvdXJjZXVybD13d3cuY29sYXNvZnQuY29tLw==”,
对其进行反编译后的内容如下:
“provinceid=8&cityid=2&classid=1000541&username=adsl拨号用名
&sourceurl=www.colasoft.com/”
注意:上面的红色删除部份和adsl拨号用户名已经过笔者更改。
这里很清楚了吧,220.167.29.102 主动欺骗客户端让客户端告诉220.167.29.102 自己
的相关信息。客户端在收到此请求后, 由于不知道被欺骗, 所以它会立即主动和
220.167.29.102 建立连接,并发送相关信息给220.167.29.102,从而导致信息被电信
监控,让电信可以轻易的知道我们的网页访问情况。
![](http://www.cppblog.com/images/cppblog_com/elva/img/qp.gif)
(图8 220.167.29.102 欺骗客户端的TCP 流信息)
图8 即客户端(192.168.0.88)主动向220.167.29.102 发起的连接,并告知其相应的
信息。在图中的下面我们可以看到,220.167.29.102 在收到相应的信息后,再次强客户
端的请求重定向到www.coalsoft.com,即用户需要访问的页面。
![](http://www.cppblog.com/images/cppblog_com/elva/img/d2.gif)
(图9 客户端和www.colasoft.com 第二次连接的TCP 流信息)
图9 即是客户端在被220.167.29.102 欺骗后,再次向www.colasoft.com 发起GET 请
求,且服务器正常返回数据的信息,这让电信在不知不觉中完成了对用户网页访问的监控。
至此,访问www.colasoft.com 的过程全部分析完毕。从该分析中,我们明白了电信监控
我们普通用户访问网页的具体方法,其访问流程如图10 所示。
![](http://www.cppblog.com/images/cppblog_com/elva/img/l10.gif)
(图10 客户端实际的访问流程图)
1. 客户端主机(192.168.0.88)向www.colasoft.com 发起正常的访问网页请求。
2. 监控服务器(这里是220.167.29.102,不同地方该服务器可能不同)就立刻向客户
端发起一个伪造数据包,这个数据包的源地址被伪造成客户端请求的服务器地址,同时
该数据包的内容是预先设定好的。
3. 客户端主机在收到该数据包后,以为是服务器端返回的,于是它根据收到的伪造数据包
的要求,主动向220.167.29.102 发起连接,并向220.167.29.102 传输一些客户
端的私人敏感信息,如客户端的拨号用户名、访问的网址、NAT 内网主机数等信息。
4. 220.167.29.102 再次将访问重定向的指令发给192.168.0.88。
5. 客户端根据第4 步中收到的指令,再次向www.colasoft.com 发起正常的访问网页请
求。
6. www.coalsoft.com 将客户端请求的页面传给客户端(192.168.0.88),让客户端成
功完成网页访问。
以上便是电信网页访问监控原理的简单分析过程,注意实验的环境是内部通过NAT 方式,
并使用ADSL 拨号上网,对于其它的连接方式以及其它的ISP 接入,由于没有相应的环境,
并未进行测试。
CSNA 网络分析论坛 菜鸟人飞
2006 年4 月21 日