Total Pageviews

Thursday 4 October 2012

网络审查攻破原理分析

在很多大型企业中和有些国家中,为了限制员工或人民访问某些网站或使用某些网络应用程序,通常做了一些访问限制。限制的方法通常有路由器IP过滤和强制使用代理服务器等几种方式。
路由器IP过滤指的是通过在路由器中加入外网或国外的IP黑名单,使得内网或国内无法访问外网或国外的这些IP,达到限制访问的目的。强制使用代理 服务 器的过滤方式通常只在大型企业中应用,指的是内网必须通过代理服务器才能访问外网,那么在代理服务器上可以实现更为复杂的过滤机制。本文主要讲述IP过滤 的攻防战,关于代理服务器的攻防战下次讨论。下面依次讲述网络访问攻防战的不断升级过程:
首先,如果要禁止人们访问某些网站,那么路由器管理者可以在路由器中设置IP过滤规则,把这些网站的IP加入黑名单,自然人们就无法访问这些网站了。
之后,人们为了继续访问这些网站,就会用代理服务器绕过限制。代理服务器的IP成千上万,而且不停在变化,使得限制网络访问的工作处于被动局面。
然而,由于代理服务器协议是明文的,通过监听网络数据包并制作自动搜集整理的程序可以知道人们访问了哪些代理服务器并自动把代理服务器的IP加入到IP黑名单中,这样使用普通代理服务器绕过访问限制的方式就失效了,绕过网络访问限制的工作处于相当被动的局面。
所以,为了避免被侦测到代理服务器地址,加密代理软件应运而生。用户和代理服务器之间的通讯协议进行了加密,使得无法简单通过侦听网络数据包分析出代理服务器的IP地址。又一次使得限制网络访问的工作处于被动局面。
但是,加密代理软件也需要和代理服务器进行通讯,也需要知道加密代理服务器的IP地址。所以加密代理软件一般会在启动时去某些发布加密代理服务器 IP地 址的地方获得加密代理服务器的IP。那么,只需要单独拿出一台计算机,启动加密代理软件,对这台计算机的网络通讯进行监视,那么即可知道发布加密代理IP 地址的地方,从而对发布点进行IP过滤。而且可以做成程序自动启动加密代理软件,自动监视数据包,自动把加密代理IP的发布地点的IP加入黑名单,这样加 密代理软件无法获得加密代理的IP,加密代理软件失效,绕过网络限制的工作又一次处于十分不利的位置。
加密代理软件为了对付这种情况, 就需要把访问代理IP发布点的流量混杂在访问非代理IP发布点的流量中。比如,加密代理软件启动时,首先访问其它大量网站,在访问其它网站之中的某一次访 问代理IP发布点,这样就把流量进行混杂了,无法通过简单的网络数据包侦听获得代理IP发布点的IP地址。如果把所有侦听到的地址全部加入黑名单,那么将 会误封很多网站。限制网络访问的工作又处于不利的位置。
然后,为了能继续对网络访问进行限制,网络管理员就转而对加密代理的IP(而非 发布点的IP)进行过滤。在加密代理软件启动完毕之后,通过加密代理下载一个大文件,那么流量比较大的IP即为加密代理的IP。通过这种方法,网络管理员 仍旧可以做出自动封锁加密代理软件的程序,绕过网络限制的工作又失败了。
那么,加密代理软件可以采取同样的思路,把访问代理IP的流量 混杂在其它流量中,并使分散的流量平分并不断变换代理IP,使得无法通过网络数据包流量统计获得加密代理的IP。人们又可以重新绕过网络访问限制了。然 而,因为对流量进行了平分,所以网速通常只有几分之一了,大部分流量都耗费在混淆网络管理员的程序上面了。
到了这里,网络访问攻防战似乎走到头了,但是聪明的网络管理员并不是束手无策了。通过对加密代理软件进行逆向工程,还是可以找到代理IP的发布点,从而过滤这个发布点。不过,这样已经不能通过分析网络流量用程序自动找出IP进行过滤了。
最后,加密代理软件为了防止被逆向工程,对加密代理软件本身进行了软件加密处理,使得逆向工程变得十分困难。接下去就是软件加密与破解之间的智力较量了。
总结:如果不进行网络流量混淆,那么能被程序自动找出有用的IP进行过滤。如果不对加密软件进行加密,也比较容易被逆向工程,从而找到有用的IP进 行过 滤。加密代理软件作者需要时刻提防软件被破解,一旦被破解,那么需要对升级加密代理软件,使得限制网络访问的工作需要重新破解软件才能继续实施。
在很多大型企业中和有些国家中,为了限制员工或人民访问某些网站或使用某些网络应用程序,通常做了一些访问限制。限制的方法通常有路由器IP过滤和强制使用代理服务器等几种方式。那么,本篇主要讲述使用代理服务器进行网络访问时的攻防战。
通过代理服务器进行网络访问的很多情况,和直接访问网络的情况十分相似。代理服务器能做到不使用代理服务器的所有过滤方式,这些过滤方式在上一篇中 已经 有了详细地说明,唯一的区别是网络访问的攻防全部在代理服务器上进行。也就是说,如果你希望应用直接访问网络的访问攻防技术到代理服务器中,那么首先必须 使浏览器或网络应用程序设置了代理服务器。
然而,寻找访问外网的代理服务器地址又是一门学问。有些网络环境是在浏览器中直接设置了代理服务器的地址和端口,这样获得其地址十分容易;而有些网络环境使用了“自动代理配置脚本”的功能,以达到访问不同的网络使用不同的代理服务器的功能,其中著名的AutoProxy插件也使用了这种技术;甚至有些网络环境使用了“自动检测网络代理设置”的功能,以达到计算机在不同的网络环境中都能自动配置代理的功能。不过,在后两种设置的网络环境中寻找访问外网的代理服务器地址就需要了解这些技术了,具体可以参考Proxy auto-configWeb Proxy Autodiscovery Protocol。如果不熟悉这些技术,也可以通过netstat工具或者sniffer工具找出访问外网的代理服务器地址。这些技术和工具不在本篇中展开讨论。
如果你顺利找到了代理服务器的地址,那么接下来我们就可以分析一下代理服务器究竟可以做哪些限制,以及如何突破这些限制的方法了.