ADSL给大家上网带来的极大地方便,许多家庭都有好几台计算机,通过ADSL共享上网的方式可以各自上网,互不干扰,可最近很多朋友告诉我,如果只有一台机子访问互联网,一切正常,若两台机子都要访问互联网,则都打不开网页,打听来的消息说,电信新装网络硬件:网络尖兵。
上网查了一下关于网络尖兵的资料,只提到了实现的功能,没有提到实现原理,要想解决不能共享上网必须摸清它的工作原理,ADSL共享上网有两种方式,一种是代理,一种是地址翻译(NAT),大家常说的路由方式其实就是NAT方式,其实路由和NAT的原理还是有区别的,这里不作讨论,现在的ADSL猫一般都有NAT的功能,用它本身的功能实现共享上网是比经济方便,本文主要讨论这种方式。
要想阻断一台以上的计算机上网必须能发现共享后边的机器是否多于一台,NAT的工作原理如图一所示,经过NAT转换后访问外网的内网的计算机的地址都变成了192.168.0.1而且MAC地址也转换成了ADSL的MAC地址,也就是说,从原理上讲,直接在ADSL出口抓经过NAT转换的包是不能发现到底有几台机器在上网。那是如何发现的呢?
一、分析原因
首先用superscan对ADSL猫进行扫描,发现开着161端口,161是SNMP(简单网络管理协议)的服务端口,难道是通过SNMP协议发现的主机数量,用xscan对猫进行了漏洞扫描,果然有默认密码,登陆到猫的管理界面但是找不到关闭SNMP服务的地方,看来是留的后门,由此基本可断定是通过SNMP协议发现的主机数。为了进一步证实,用SNMP的一个管理软件ActiveSNMP查看ADSL猫的连接情况,如图二所示,可以清楚地看出通过SNMP协议可以发现同时上网的主机数量。
二、解决方法
解决的方法就是屏蔽SNMP协议。有以下几个思路。
1、 猫中没有任何关闭SNMP协议的地方,可以换一个能关闭该协议的猫。
2、 修改配置文件,可以将配置转换成一个文件,用二进制编辑工具修改默认密码,然后再加载到猫中,这只是一种思路,没有试过。
3、 买一个ADSL路由器,例如TP-LINK TL-R400,放到如图三所示的地方,在该路由器中再做一个NAT服务,这样进到ADSL猫中的就是一个地址,这样就解决了共享上网。注意在路由器中要关闭SNMP协议
网络尖兵一定是用了多种机制在侦测 多用户的行为 譬如基于adsl猫的snmp router的snmp可以直接看到用户的连接情况 基于http的请求头 就可以判断出用户使用了Proxy甚至可以捕捉到内网用户的ip 目前议论最多的是对于透明的NAT 譬如说宽带router(关掉snmp)他是怎么判断的 确实因为NAT这种形式 在出口抓包是看不到异常的数据的 所以我看网络尖兵对于NAT也没有直观的判断办法
但是有一点是要注意的 :从出口上捕获数据包后进行分析 一个用户和多用户的出口的数据有很大的不同 这一点用siniffer在出口上捕捉一定量的包 就能看出来 单用户ip 和公用IP 的数据包有很多不同的特征 打个比方说 在HTTP层上看 多用户的ip可能在很短的时间内可能发起对不同web site的请求 而在这一点上单用户存在这样的行为的几率就很小 诸如此类的还有流量的大小等等 网络尖兵完全可以基于分析这些数据来判断是否存在多用户的行为。
现在各ISP都更新设备了,严格的讲电信对付共享的监测手段是多重的,
1,首先是接入设备,adsl猫和电信的接入设备是一体的,通过对adsl猫的网管系统,可以读取adsl猫的数据,当然,如果猫工作在桥接状态,用户小心设置自己的网络,这个系统能做的也有限,
2,欺骗装置,设置一机器绑定192.168.0.0/255.255.0.0等网段的IP,并在到用户的路由器上做一些非正规的设置,用户的内网机器不小心可能向这台欺骗机器发包,这能了解内网的状况,对策是严格的防火墙措施,阻断内网通过路由器向非路由地址发包。
3,扫描,通过扫描用户IP,可以知道路由器软件版本,并推测出制造商,另外可以向路由器发一些特殊的包,可以获得内网的信息,例如向通常的内网广播地址发包,可以引起内网各机器的响应,根据回应可以准确的数出内网机器的数量,应对的办法还是防火墙,因为这些扫描技术差不多都是古老的黑客技术了,现代的防火墙都应该都能对付,问题是现在没有多少廉价路由器有足够的计算能力去防火,
3,被动指纹分析,这个是几个热门系统(尖兵,信风等)的机制,通过对IP头,TCP头等协议设计或实现上缺陷的分析,可以分析出很多数据,例如IPID最方便,可以直接数出机器的数量,ttl,mss(mtu), recwin,recwin和mss的比例关系等等,也能分析出机器是否用nat,更综合一步,通过对IP指纹可以得知一个IP内有几个操作系统,对proxy,也能分析出来,除proxy的http_via forward_for等醒目标记和使用代理后应用程序协议版本的变化外(如,http 1.1 -> 1.0),proxy软件会使用一些特殊的tcp包,例如push...对应的办法还是防火墙,开启防火墙的normalizer功能,使发出的包正常化,遗憾的是廉价防火墙即使想给包整型,也难做得好。
4。应用层的分析,例如用户浏览器的版本次版本,连接的数量, windows update次数等
5,干扰用户的数据包,向用户已经连接的通信过程注入一些干扰包……讲起来有点复杂,初步分析是针对normalizer系统的攻击,已观察到信风系统有此行为。应对措施是小心配置normalizer,避免被骗到了,包注入技术很难缠。
6,其他新技术?