原文:
http://bbs.51cto.com/thread-1150454-1.html
一、企业网络安全管理面临的新问题
现在计算机和移动智能设备越来越普及,有一些企业网用户不再满足于只让实名登记的、有实际办公用途的计算机上网,他们把家中的笔记本、智能手机、平板电脑带到单位,通过非法架设SOHO路由器、随身WIFI、安装免费WIFI软件等,绕过网络管理员的检测,实现非法接入企业网,然后就可以通过他们自己的设备实现一些移动平台的网络应用。这些SOHO路由器、随身WIFI的一个大卖点:“就是可以绕过检测,隐匿接入”,因为这些设备都可以关闭信号的广播发送,通过信号检测的方法也搜不到。
非法接入问题困绕了各个企业网的管理员,互联网论坛也随处可见各种讨论贴,但是都没有很好的解决办法。用户的非法接入行为给整个企业网络带来三个方面的严重影响:
1、最坚固的堡垒,往往都是从内部被攻破的,架设这些接入点的用户,他的本意可能不是破坏网络,但是他却为网络的安全留下了缺口。随处可见的接入点,让一个进入企业区域内的陌生人都可以接入到企业网络中,各级昂贵的网络边界设备都被绕过。众多非法接入点的存在,从某种意义上说,让企业网的一些区域变成了开放的网络,如果有人真想在网络内部搞点黑客行为是非常容易的。
2、大量合法的网络用户抱怨“带宽都去哪儿了”,非法接入的计算机和移动设备占用了大量的带宽,让整个企业网的运行效率降低。
3、破坏了网络管理的严肃性,让用户认为:“不被发现的,就是可做的”,为后继破坏网络的行为开了一个不好的先例。
二、几种常见的非法接入企业网方法
笔者从事网络管理工作多年,对用户的非法接入网络的方法十分了解,现详细介绍一下,这几种方法利用的都是IP-MAC地址绑定这个漏洞,IEEE规定每台计算机的网卡MAC地址是全球唯一的,所以在企业网的联网设备管理中基本上都是通过MAC地址加IP地址来识别1台联网设备,但这种管理办法现在已经面临挑战。
1、 SOHO路由器接入(分无线和有线)方法
SOHO路由器接入是一种“传统”的非法接入方法,最早是家庭宽带用户,通过这种方法把家里多台上网设备连网、多个家庭共享一条宽带等等,早年间,中国电信也是被此设备深深困扰。在家庭宽带中各用户都是PLAN隔离的,家庭用户这么去用,在安全方面对电信部门没有影响,顶多用点流量,但是在企业网中这种接入对安全影响很大,因企业网的用户之间是很少做安全隔离的。
这种非法接入方法,步骤分为4步:
(1)张三通过合法的流程从网络管理部门申请一个IP地址并要求联网。
(2)当网络管理员实地查看用户的计算机后,给其联网并完成IP地址实名制登记、IP-MAC绑定,由于IEEE规定MAC地址是全球“唯一”的,所以通过MAC地址和IP地址的绑定来识别张三的这台计算机,原则上“没有什么问题”。至此正常联网流程结束,张三可以上网了,如图1所示:
(3)张三私自购买并安装SOHO路由器,这种路由器的一大特点是可以克隆MAC地址,也就是说路由器的接口MAC地址可以改成和张三计算机网卡MAC地址一模一样的,这样网络管理员看到的还是张三的计算机,其实那个MAC地址已经变成了路由器,路由器下面可以连N多的计算机,SOHO路由器克隆MAC界面如图2所示。
图2:SOHO路由器可以随心所谓的改MAC地址
(4)SOHO路由器私接成功后,张三掌握了一个企业网接入点,他可以把自己的、同事的上网设备连上企业网,如果他把路由器接入密码保存的好,可能接入的用户范围很小,如果他大公无私的把密码公开,在他的那个范围内,谁都可以连入企业网,张三私接SOHO路由器后,连网拓扑如图3所示。
图3:私接SOHO路由器后,张三连网拓扑
2、随身WIFI接入方法
自从2013年6月360公司首先推出19.9元的360WIFI之后,小米公司和百度公司也推出了小米WIFI和小度WIFI,随身WIFI开始在企业网内泛滥,这些产品一方面确实象他们公司宣传的那样“无需培训、即插即用、小巧玲珑、价格低廉、安装方便,是居家旅行必备良品”,它极大的简化了无线智能设备接入网络,但另一方面,WIFI热点在企业网内的泛滥,对网络管理员来说却是一场噩梦,企业网可随处可见的安全性极低的接入点,严重的威胁着企业网络的安全、企业的各种信息也处于不安全的状态,所以重点要杜绝这种随身WIFI的泛滥。
为了更好的研究这种产品,笔者购买了360WIFI、小米WIFI、小度WIFI,并进行了测试,现以360WIFI为例,讲解用户非法接入过程,分为3步。
(1)企业网用户李四拥有一台合法上网的计算机,网管员也做了IP-MAC绑定。
(2)李四把360WIFI插入计算机的USB口,那么一切的安装工作基本上都是自动的,很快安装完成了,就会弹出图4所示画面。
图4: 360WIFI安装完成后的界面
(3) 李四的计算机具有了WIFI热点功能,现在大约30米范围内的各类无线设备都可以搜索无线信号,输入WIFI密码,就可以进行上网了。李四计算机的接入网络的拓扑变成了图5所示。
图5:安装360WIFI的计算机变成了一台AP设备
3、“免费WIFI”接入方法
这也是一种比较流行的方法,其实它是一种软件,它的实现方法很简单,就是要求联网计算机上安装一个USB无线网卡。企业网中对无线的使用限制非常严格,单位的笔记本电脑一般是通过有线连入网络的,这样笔记本电脑的无线网卡就空闲下来了,可以通过安装“免费WIFI”软件,把无线网卡变成一个无线AP。台式电脑也可以通过加装一块USB无线网卡,再安装“免费WIFI”软件,实现一样的功能。“免费WIFI”软件非常多,常见的有“360免费WIFI”,“WIFI共享精灵”等等,安装之后的效果和随身WIFI基本相同,在这里就不在详细介绍了。免费WIFI软件位置如图6所示。
图6:“免费WIFI”软件的位置
4、几种隐匿性不强,较少人使用的方法
还有ICS(Internet连接共享)、Proxy代理服务器、window开启路由服务等等,这些方法隐匿性较低,设置也略显繁琐,所以在企业网内用的人比较少,在这里就不做过多的介绍了。有网络评测说随身WIFI用的也是ICS模式,笔者经过深层次测试,可以肯定的说360随身WIFI及360免费WIFI用的不是ICS方法。
三、非法接入企业网方法的技术原理分析
如果想识别出非法接入点,就得了解对方使用的技术,了解它才能找到针对性的解决办法,现把几种接入方法的技术原理做个介绍。
1、SOHO路由器接入原理
路由器有位于网络中心的核心路由器、连接企业级网络的企业路由器以及把家庭或小单位用户接入网络的SOHO路由器。SOHO路由器能够实现自动配置和基本数据包路由、过滤功能。从严格意义上来讲,SOHO路由器并不能完全称之为路由器,它只实现部分传统路由器的功能。SOHO路由器采用NAPT(Network Address Port Translation)转换技术,把内部多个私用有IP地址转换成一个合法的公网IP地址,使私有网络中多台主机共享一个合法的IP地址访问因特网。综上所述,可以确定的是SOHO路由器使用了NAPT技术。
2、随身WIFI接入原理
随身WIFI现在流行的有三个品牌:360WIFI、小米WIFI、小度WIFI,它们所用的共享上网的方法其实并不一样,经测试表明,360WIFI技术领先,它就是为隐匿而设计的,我来介绍一下:
(1)360WIFI
当360WIFI在2013年推出的时候,因其低廉的价格、良好的性能、简便的操作很快引起轰动,众多的硬件评测网站,如:中关村在线、天极网等对其进行评测,现在这些评测文章在网上也比比皆是,其中都说360wifi使用了windows系统自带的ICS功能,之后评测就得出结论:“360wifi这类产品,技术含量低、可用性并不高、就是ICS+虚拟AP技术。”,经过笔者的测试证明,360公司刚开始是用了ICS技术,但是很快就用了他们自己公司开发的NAPT技术,他们在产品内部把这种NAT叫做QHNAT、360WIFINAT,功能强大、隐匿性极强。所以360WIFI也使用了NAPT技术。
(2)小米WIFI、小度WIFI
这两个产品是在360WIFI后面推出的,可能是受到360WIFI评测的影响,两款产品都是使用了ICS技术,所以相比较360WIFI,这两款产品隐匿性差一些、性能也不高。其实说白了ICS就是NAT的简化版,ICS在共享连接的时候主机和子机都要有相同的服务支持,用7层模型来看的话ICS是发生在高层,而NAT是发生在3,4层,是中间层次的转换,ICS比NAT效率低,隐匿性差。小米WIFI、小度WIFI使用了简化的NAPT技术(ICS)。
3、“免费WIFI” 接入原理
和随身WIFI一样,所谓的“免费WIFI”其实就是把USB无线网卡,装上随身WIFI软件,实现了随身WIFI的主要功能,只是在一些专有的细节方面不如随身WIFI。他们所使用的技术,无非也是NAPT技术。
4、什么是NAPT技术?
可以看出非法接入企业网的方法很多,但是归根到底都是使用了NAPT技术,什么是NAPT技术呢?NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号,也就是采用“端口复用”技术,将几个私有IP通过映射到一个合法的企业网IP上,实现私接设备网络通信。
四、从原理入手探讨识别方法
RFC3022文档中说NAPT工作在IP层,通过NAPT把内部地址翻译成合法的IP地址,在企业网中使用,具体的做法是把IP包内的私有IP地址+端口用合法的IP地址+端口来替换。NAPT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去,每个IP包通过NAPT设备时,拆解后进行重新组装,新的IP包发往企业网,因此接入到企业网中的一个IP地址可能被NAPT设备后面的无数个用户使用。
可以简单的理解,合法上网计算机和非法接入计算机之间在通信上的区别是:合法接入计算机把IP包直接发送到了网络,非法接入上网设备的IP数据包经过了私接的NAPT设备或软件。我们需要找出这些私接的NAPT设备或软件在IP包经过他们的时候,对IP包做了什么样修改,如果能找出修改点,我们也就能识别非法接入设备了。
实现互联网通信的标准协议是TCP/IP协议,无论是哪种设备要实现互联网通信的话,就一定要运行TCP/IP协议,并且要有一个IP地址。同理,NAPT设备要实现网络通信的话也需要通过TCP/IP协议。IP协议是TCP/IP协议族中最为核心的协议,所有上层协议如:TCP,UDP,ICMP,IGMP包括应用层的HTTP、FTP、DNS等应用,都要以IP数据包格式传输,IP数据包格式如图7所示:
图7: IP包格式
普通的IP头部长为20个字节,几个重要的数据段如下:
(1) Source IP Address (源IP地址),表明发送方。
(2) Destination IP Address (目的IP地址),表明接收方。
(3) Time to live(生存时间),表明IP包允许在网络中存活的时间。
(4) Identification(标识),用于标识来源自同一IP地址使用相同协议的报文,该值对同一<源IP,目标IP,协议>在生存期间是唯一的。
现在了解了IP数据包的关键数据段,把识别方法介绍如下:
1、通过IP包中的TTL数据段来识别非法接入的上网设备
TTL(Time To Live)生存时间字段设置了IP数据报能够经过的最大的路由器数,TTL字段是由发送端初始设置的,每个处理该数据报的路由器都需要将其TTL值减1,当路由器收到一个TTL值为0的数据报时,路由器会将其丢弃,TTL字段的目的是防止数据报在选路时无休止地在网络中流动。TTL值的变化如图8所示。
图8:经过标准的NAPT设备TTL变化情况
一台标准的NAPT路由软件或设备,会把经他发出的IP包中的TTL值减1。这里说的是标准的,也有不标准的,如果都是标准的,非常接入的识别问题就很简单了。
2、通过IP包中的Identification字段来识别非法接入的上网设备
在IP协议中Identification字段用于标识不同的IP包,为保证服务的正常,网络中必须确保来自同一IP地址使用相同协议的IP包应当有其唯一的Identification标识。在正常的情况下,同一台计算机在一个时间段内发来的发出的IP包中的ID号是连续。如图9所示:
图9:一台计算机在一个时间段内IP包中的ID值变化
因NAPT设备后面连接了多台上网设备,这些上网设备发出的IP包中的值是不相同的, NAPT设备也没有改变这些IP包的ID值,这种情况下,多台设备经NAPT上网时,NAPT的企业网IP那一端,发出的IP包ID是不连续,当检测到多个不同连续ID轨迹即可判断出是否用了NAPT设备。如图10所示:
图10:NAPT设备一个时间段内IP包中的ID值变化
在图9和图10可以看出,137.12.36.2是一台正常上网的计算机,而137.12.36.1是一台NAPT设备,其后连了两台上网设备,因为他的ID字段其实是分为两段序列,每一段都代表了一台设备。而且他的TTL值也是63,说明IP包经137.12.36.1发出来前就经过了一台路由器。
3、应用特征识别
有了TTL值和ID值的识别,好像可以检测到所有的非法接入设备了,实际上却不行,为什么呢?前文中已经说了很多公司,如一些SOHO路由器厂商以及360公司他们开发了自己的NAPT软件,但是他们却有意的做了一些隐藏技术,经过他们的NAPT设备转换的IP包TTL并不减1.
图11: 一台非标准的NAPT设备,经过它的包,TTL值并不减1
137.12.36.19是一台SOHO路由器,它发的IP包TTL是一个标准的windowsXP系统发出的IP包,TTL值并不象我们期望的那样减了1,所以TTL的检测手段对其无效。再看一个360随身WIFI的例子,如图12所示。
图12: 一台加装了360WIFI的计算机,经过它的包,TTL值并不减1
图12表达的,是一台加装了360wifi的计算机,但是经过了NAPT,IP包的TTL值也没有减1,从他的ID值的非连续性可以看出有两台设备上网。所以前文中说道了360WIFI的技术在随身WIFI中是领先的,小米和小度WIFI的TTL值就很容易检测出来。所以用TTL的方法检测非法接入,并不全面,有很多是检测不出来的。
那么用ID标识的方式是不是就很精确呢?实际情况也不是这样,因为如果知道这个IP地址对应的是一台NAPT设备的话,有针对性对这个IP地址进行检测,是可以验证这台计算机是否非法接入设备。但是企业网内有成千上万台计算机,首先不可能对每一个地址都进行单独检测,第二IP包中的ID标识绝大多数情况下是随线性分布,但是也有特殊情况,如使用到RSTP协议的一台设备、发送方的TCP/IP协议栈初始化了等等,这样ID表现就不是连续的,如图13所示。
图13: 一台使用RTSP协议的计算机,ID值变化大
在现有的硬件条件下,很难对企业网中成千上万台计算机发出的大量IP包中的ID标识做连续性的分析,这难度太大,也不现实。因此就需要使用第三种识别方法,应用特征识别:从行为学的角度来看,企业网用户私接NAPT设备的目的有一个,那就是让移动设备上网,如果上不了网,谁也不会去花钱冒风险去私接设备,如果上网的话就会用到一个最常用的HTTP协议。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议,通俗的讲就是你无论用什么设备打开网页就会用到HTTP协议。
HTTP协议有一个特点,在使用HTTP协议进行请求时,HTTP协议头部会添加User-Agent,该信息可以标识请求者的一些信息,如什么浏览器类型和版本、操作系统,使用语言等信息。移动设备平台所用的系统和台式电脑是不一样的,如果在HTTP协议的头部发现User-Agent发现移动平台的标识,那么就可以确定,用户私接了NAPT设备。
图14: 协议特征码识别
如图14所示,137.12.37.168这台计算机私接了一个360WIFI,正让他的iPhone手机上网。有人可能会想了,如果我连了一台设备,我不打开网页,只是上QQ、微信、游戏,不就检测不到了吗?其实不然,这些软件好像都没有打开网页,没有用到HTTP协议,其实他们都或多或少的用到了HTTP协议,如QQ、微信中的页面,弹出的广告,要求你输入的一些信息,都是用HTTP协议通信的形式。所以,只要能识别HTTP协议中的请求包中的User-Agent字段中的设备信息就可以发现私接的设备。
4、随身WIFI和“免费WIFI”留下的后门
经过笔者多次测试,每当用户把随身WIFI插上电脑准备上网的时候,其实这些设备做的第一件事,不是让你的设备上网,而是把你的设备信息发到他们公司的服务器,让他们做用户统计(个人信息安全很重要呀!!!)。
(1)以360WIFI为例
当用户插上360WIFI的时候,360WIFI就会发送一个HTTP请求包到s.360.cn网站:/360wifi/freewifi_fail.htm……。
(2)以小米WIFI为例
当用户插上小米WIFI的时候,小米WIFI就会发送一个请求包到xiaomi.net网站:grayupgarde?......。
(3)以小度WIFI为例
当用户插上小度WIFI的时候,就会发一个请求包到xdu.baidu.com网站:getupdateinfo……。
其它的各种随身WIFI、免费WIFI产品都是如此,笔者也不在赘述了。
5、总结一下识别方法:
(1)可以用IP包的TTL字段检测标准的NAPT设备。
(2)用IP包的ID标识来进一步确认用户的私接行为及确认用户私接的设备台数。
(3)用HTTP协议中的User-Agent字段来检测私接上网的移动设备,从而确认用户私接了NAPT设备。
(4)用几种随身WIFI和免费WIFI的后门,来识别用户非法接入行为。
五、根据识别理论,开发识别系统
现在我们己经在理论上知道如何识别非法接入的SOHO路由器及WIFI热点,现在要做的是把这些理论用一个软件系统表达出来。
1、开发工具选用
笔者选用的开发工具是Microsoft Visual Studio 2012,开发语言选用了C#,报文组件选用了WinPcap+SharpPcap。Vs2012是windows平台上最强的IDE开发工具,没有之一,C#是最适用于.Net FrameWorks架构的开发语言,WinPcap是Win32/64环境下用于捕获网络数据包并进行处理的开源库,SharpPcap是用C#语言对WinPcap进行封装使之适用于C#语言面向对象的特性的开源库。
安装WinPcap4.1.3、安装VS2012旗舰版,建立解决方案和项目,在项目中引用SharpPcap4.2,调试好开发环境。
2、设计思路及系统功能
此软件使用了很多C#高级编程,如协议分析、委托、线程等,涉及很多的TCP/IP底层数据包的知识,光一个数据包的拆解封装类可能就要写上几页内容、一个符合WinPcap过滤引擎语法的过滤字符串可能就要写上一页。由于源代码太长,不方便贴出,另外我也不想把这个写成VS2012、C#、WinPcap的使用说明,如需源代码,请联系笔者。
首先我来谈谈设计思路:系统的设计思路是设置WinPcap过滤器把需要分析的网段数据包通过SPAN技术,发到一个镜象接口,镜象接口连接的开启混杂模式的网卡会捕获这些数据包,软件中包到达线程不停把数据包放在一个队列中,后台处理线程不停的把数据包取出拆解,分析其中是否有非法接入特征,如果有就交显示线程显示出来,如果没有就丢弃。
根据软件的使用界面来介绍一下系统功能。
图15:识别系统功能区域
(1)选择要分析包的网卡
一台计算机可能会有多块网卡,有物理网卡、有虚拟网卡,此组合框让用户选择需要捕获包的网卡。
(2)开始按钮
当点击开始按钮后,并且用户选择了需要捕获网卡,首先就要开始对选中的网卡进行设置:在包到达事件中注册处理方法、在包停止事件中注册处理方法、设置过滤器、开始界面刷新线程、把网卡工作设置在混杂模式、开始包捕获线程,软件开始工作。
(3)结束按钮
当点击结束按钮后:终止包捕获线程、关闭网卡捕获、注消包到达处理方法、注消包停止方法、同步结束界面刷新线程。
(4)存储捕获包功能
可以让用户选择是否存储捕获的数据包,因为软件关闭后,软件界面显示的数据包将清空,如果非法接入的用户拆了私接的设备后不承认他的非法接入行为,就可以调出存储的数据包,再现捕获时用户非法接入的行为数据。存储的数据包符合 WinPcap标准,世界上最常用的协议分析软件Sniffer、WireShark、Omnipeek等都可以打开。
(5)导出非法IP
可以把识别为非法接入的用户IP地址导出到一个单独的export.txt文件中,方便用户查看。
(6)定义分析网段
一个企业网内部有很多的IP地址段,可以自己定义,这个功能主要是增加软件的通用性,也就是说,拷贝出去拿到哪里都可以用,因要防范盗版,此软件的定义分析网段功能被笔者锁定,不能更改,只能在淮南矿业集团内部使用。
(7)数据包识别窗口
此窗口由一个后台线程负责刷新,它和捕获包线程协同工作,捕获包线程不停的包到达的包存放到一个queue中,它的功能是把数据包从queue中取出来,拆开数据包查看是否有前面的章节中我们分析非法接入特征,如果有把此数据包的关键属***给显示线程,显示在识别窗口。
(8)识别结果窗口
此窗口也是由后台线程刷新,当出现一个新的符合非法接入特征的IP地址时,把这个IP地址和原因,显示在识别窗口。
(9)协议分析窗口
此窗口中的数据由数据包识别窗口中的用户选择来触发,当用户需要查到一个数据包的详细头部信息时,就可以点击具体的条目,此窗口就会列出数据包的Ethernet头部、IP头部、TCP头部/UDP头部信息供用户分析。
(10)数据包内容显示窗口
此窗口的数据和“协议分析窗口”中的数据同步,“协议分析窗口”是显示数据包的头部信息,而它是显示数据包的负载信息。
(11)包捕获状态统计
同步刷新显示,识别了多少包、其中IP包有多少、TCP包有多少等等。
六、非法接入识别系统如何部署
首先我们来看下简化的企业网的逻辑结构:
图16:简化的企业网逻辑结构图
从图16中可以看出,XXXX的所有电脑上网都要经过一个企业网汇聚交换机(也就是XXXX的核心交换机)。以一台企业网用户电脑为例,标准的TTL值有很多种,不同的操作系统,发出的IP包的TTL标准值不相同,标准值有:TTL=255、TTL=128、TTL=64、TTL=32等等。假设这台电脑IP包的TTL=64,如果下级没有路由设备的话,到达汇聚层交换机时TTL依然是64。
以XXXX网络为例,其它各矿以及上一级的管理员都可以用同样的方法。
图17:识别系统部署位置
在矿核心交换机上使用SPAN技术,这种技术主要是用来监控交换机上的数据流,利用SPAN技术我们可以把交换机上某些想要被监控端口(以下简称受控端口)的数据流COPY或MIRROR一份,发送给连接在监控端口上的装了识别系统的计算机。
步骤如下:
(1)设置SPAN
在矿核心交换机上设置
XZK-C4506#show run | in monitor
monitor session 1 source vlan 2 – 4094 //全部 vlan的数据包
monitor session 1 destination interface Gi6/29 //mirror一份到gi6/29口
(2)把安装了非法接入识别系统的计算机连接到 gi6/29接口。
(3)双击打开“非法接入识别系统”,选择好网卡,并点击开始按钮
七、实际应用效果
通过各种精心的准备,识别非法接入系统己经开始运行了,现在看看效果。
图18:实际应用效果图
识别系统开始运行后,识别的结果让网络管理人员感到吃惊,除了合法登记的,有十几个用户私接了设备进行上网,在没有识别系统的情况下,根本就不可能发现他们,因为他们都用了MAC克隆技术,关闭了无线信号发送,使用传统的方法就在网络管理员的眼皮底下也不可能发现,有了识别系统之后,企业网络非法接入问题得到了解决。
八、总结
企业网用户非法接入问题,原来一直困扰着企业网的管理人员,也包括笔者自己,互联网各大技术论坛上也到处是寻求解决问题的求助贴,一些标榜可以识别的系统经笔者测试,效果很差,如国内一个卖的很好的软件,宣称可以识别非法接入,经测试,发现它竟然是通过MAC地址的前24位来识别,MAC地址由48位的二进制数构成,前24位为厂商段,标识的是生产厂商,也就是说只要是这个厂商生产的,软件它就认为是路由器,这种识别方法是不合理的,非法接入就是克隆MAC地址来绕过检测的,再用MAC来当成识别非法接入的依据,那是不会成功的,而且可以肯定的是,无协议分析能力的识别系统是不可能识别出来非法接入的。