2017-03-17 10:01:44
来源:安全客 作者:icecolor
阅读:743次
点赞(0)
收藏
作者:icecolor
稿费:600RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
传送门
【技术分享】基于检测防御企业无线安全威胁的WIPS设计
前言
之前发了个WIPS设计,写的不太好,不太清楚。前些日子听说新等保将无线安全列为合规性需求。那就来一发详细的吧。我之前写的那个包含了关于WIPS的介绍:http://bobao.360.cn/learning/detail/3150.html可以把上一篇当作是一个入门。重复的我就不提了,想了解的大家可以参照上一篇。其实感觉WIPS以后的作用点会高起来,例如在军队、政府、公司、机场、酒店、城市、学校、等等人员密集的地方都可以。
传感器
传感器(Sensor)是WIPS很重要的一部分。它起到一个监控扫描并执行的作用。
真正看过传感器的人应该挺少的,我找了个,大家随意感受下:
其实就长这德行,跟个路由器差不多,当然,你可以做成帅点的。传感器的布局呢,要根据你传感器信号有效距离和防护区域而部署。用OepnWrt自己就可以搞一个简单的模型试试,或者是公司自己有硬件工程师物联网工程师的可以自己搞个特制的。需要注意的就是:
1一个传感器要支持802.11的主流协议如g/n/a
2要支持2.4 GHz频段和 5 GHz频段
3然后支持跳频扫描。
5最好弄的结实点,不管室内还是室外。
6你也可以弄支持多一点的功能,例如支持下其他无线协议。或者是能识别到伪基站、无人机、RF干扰什么之类的。
这篇主要讨论检测规则和识别策略,传感器怎么搞大家自己定吧。
开源WIDS
Snort大家应该都挺熟悉,一个轻量级的开源IDS。其实在里面它也扩展了无线模块,只不过很少人用而已,一般的企业简单点的话,都将Snort+Kismet作为无线告警系统的首选。不过这仅仅也就是起到告警作用。而且现在感觉已经过时了。毕竟IDS和IPS区别还是挺大的。Snorby(Loganalyzer Console、BASE Console)+Snort+Barnyard2。当然了,前端控制台那个漂亮用那个。看一张Snort运行的界面。这是国外的人搞的一个,没有搞到OpenWrt上,也没有用Kismet。估计就是个测试。不过Snorby的前端我挺喜欢,开源IDS多了,大同小异吧,没啥新鲜的。
其实也没啥,感觉Snort在无线防御方面研究也就做个入门用,这里就不写搭建过程了,有想研究的可以私下交流下,我的Q:2191995916
简单扯一下,关于Kismet,很多人都以为它是个扫描工具,其实它是一个802.11数据包捕获和协议分析的框架,最NB的是你可以用Kismet生成KML文件,然后在“Google Earth”上读取,就可以读取GPS数据,并且还可以通过“GISKismet”进行可视化。
De-Authentication Flood 攻击行为分析
Deauth是一种身份验证洪水攻击,是无线网络的拒绝服务攻击。当Client与AP建立连接时,通过广播插入伪造的取消身份验证报文,Client认为报文来自AP,然后断开连接。
该方法不仅仅可以把AP打掉造成无限重连,而且在针对于WPA-WPA2/企业Radius+WPA架构中达到抓取Hash进行离线破解攻击。还有就是配合Fake AP进行攻击,达到更深一层的破坏。
这是在MDK3下面做的一个测试,可以看出大量的Deauth报文。
遭受Deauth攻击的无线网络。
在Wireshark的Filter中进行针对Deauth Frame进行过滤:
“wlan.fc.type==0&&wlan.fc.type_subtype==0x0c”Reason Code 是Deauth Frame中的一个原因代码。
根据802.11给的 Reaon Code一段代码表:
https://supportforums.cisco.com/document/141136/80211-association-status-80211-deauth-reason-codes
可知,上述原因(0X0001)是由于未知情况造成的。所以间接可以排除掉其他“正常”状态下的断开连接,缩小排查范围。
其实DOS攻击还有很多种,例如什么ASSOC Attack,Auth Attack,针对802.1x的EAPOL
下面就是个Auth Attack与EAPOL Attack的报文:
Auth Flood攻击
EAPOL Flood 攻击
De-Authentication 策略规则检测方法
主流的攻击呢就一个Deauth,但是不只是这一个,真正去做无线防御的时候所有的DOS攻击方式都要进行规则检测,因为攻击者者可能都会用到,这里就举这一例。
在WiFi Deauth DoS攻击检测的典型的方法是在网络流量监控和调用一个阈值为deauth帧数量的观察。如果观察到的数据包的数目是在此阈值以上,然后生成警报。在许多情况下,这个阈值是由人们的经验,选一个最佳流量值。这个值通常由正常帧的发送基准进行设定。超过这个级别的任何值被归类为异常。
802.11协议 是一个二层网络协议,无线协议只定义了 OSI 架构中物理层和数据链路层(MAC 子层)两层的内容, 其它层的内容和有线网络是一样的。
1层攻击不好识别,2层攻击可以通过监测帧来识别。
所以说,我们只要检测帧控件内容,对每个802.11帧、帧控件包含的Type、Subtype、 Management Type,包括Beacon、Disassociation、Deauth Subtypes,和这些CTS和RTS类型。将使用这些类型和子类型来过滤帧。检测需要过滤的类型与子类型为:
“ManagementFrames(wlan.fc.typeeq0)” “Deauthentication(wlan.fc.type_subtypeeq12)”
其实这个脚本倒是很好搞,原理不很难。最难的是对于阈值的判断,因为阈值的设定关系到了检测的精准度。Deauth攻击的误报是很烦的。阈值设定跟好多因素有关,例如你的AP部署环境、客户端、架构等等小细节有关。所以说我有个想法就是将阈值根据部署前的环境进行检测,然后设置成动态的。这是我在家里自己测试的Deauth 攻击检测算法。识别还是挺快的,但是偶尔也有点小问题,正在修正。但我的环境有限,在家里终跟企业环境不一样。企业又跟城市不一样,以后有了大环境可以实验的时候我在搞搞别的。
(我之前提供过一个老外的脚本,非常抱歉当时没测试,只是眼看了下判断过程就贴了,那个脚本有点问题,我自己正在搞一些严密点的检测规则,以后可能会发出来。)
其实IEEE的工程师解决过这个问题,就是搞了一个叫做 802,11W,加密auth握手过程,协议思路是从判Deauth是AP还是攻击者来做的,所以搞了802.11wAP过来的管理帧都是加密的攻击者不知道加密,所以发过来节点都不认。但是这个802.11W要求条件需要客户端AP都支持,并且兼容性不好,一直没啥人注意。在WIN8和8.1是强制开启的应该。不过看样子是跟着WIN8一起死掉了。
之前我脑洞大开还想了个能不能根据AP重连的时间设定阈值,后来翻看协议指南发现与信道竞争有关,这个不是一个绝对值,用户数的多少会影响重连时间。
所以说,我也试图曾经增加条件来识别Deauth,但是增加条件或许可以减少误报,但是会影响识别率。
其实针对Deauth的话,除了Flood攻击让人头疼之外,还有就是针对HASH和HandShake的攻击。因为攻击者会使用Deauth对AP和Client进行数据包窃取。这个攻击其实是防不掉的。抓到握手包的条件跟 Ap信号的好坏,和所在AP客户端的多少是有关系的。也就是说只要是条件好,Deauth攻击可以瞬间拿到握手包。也就是说你的识别策略就算是精确到百分百也会比它慢。就算是识别阻断掉了危险AP,你的Handshak还是已经被人拿了。不过,我想过一个策略就是:
“当WIPS识别到Deauth攻击时,切断AP后,立刻向控制台进行告警,控制台通知该用户立刻修改密码。将源MAC加入黑名单并记录。(虽然可能是伪造,但是也要进行取证)并且将Calient MAC地址暂时存入黑名单,防止攻击者修改MAC地址趁设备掉线加入其内网。WIPS应该配备密码检测工具来检测员工密码的强弱。”
Fake AP攻击行为分析
其实伪AP是在Wlan中最直接,也是最致命,最普及的一种攻击。原理也很简单,攻击者自己建立一个“Hack AP”然后用DOS攻击强制你与合法AP断连并连接到“Hack AP”从而窃取你的帐号密码,以及各种隐私。针对非企业Radius架构下的攻击原理示意图:
我之前用Easy-Creds做过一次。当然了,这种脚本有好多,不一一列举了,看下攻击效果。
劫持帐号密码
劫持流量图片
这是一个比较直观的效果了。之前发生过许多银行卡被盗,密码被窃取,都是在不安全的环境下连上或者是被动连上了不合法的AP。其实Rogue AP与Fake AP类似,只不过是一个主动一个被动罢了。前者是遍地撒网,后者是较有针对性。这种办法在学校,或者酒店,机场。屡试不爽!(别问我怎么知道)如果在企业这样被搞了,那基本也就GG了。
针对企业Radius架构的攻击原理示意图:
针对WPA-Enterprise作为无线部署方案的攻击。以前写过一个,基于EAP协议的东西还是挺多的。http://cb.drops.wiki/drops/wireless-16971.html这是之前写过的一个专门针对于企业无线渗透的paper。里面有涉及Radius和一些基于EAP的认证方式和安全研究。可以参照下。
Hostapd-wpe是Freeradius-wpe的升级版,都内置了Radius程序。因为服务器和客户端很少有部署证书的情况,所以根本阻挡不了这种攻击。
Fake AP 策略规则检测方法
忘记之前在那看见过了,有一篇文章专门讲的是针对于伪AP的研究。今天我就来用实际分析来解释一下这些理论。
通过时钟偏差检测
IEEE802.11协议中有个TSF,。FakeAP通常会伪造正常AP的timestamp 。所以它与授权的AP几乎相同的时钟偏差。但是当信标帧被再次重建时,在帧的形成和其重传期间注入几微秒的延迟。这将产生具有不同序列号的重复帧,所以以检测到AP是伪造的。捕获信标帧,记录时间戳,计算时钟偏移量。然后用LSF给它确定一个阈值。用LSF的原因是更加精确。其实对于这种检测手段怎么搞的都有,之前看到过一篇报告,说是正常的AP时间戳会递增。而不正常的AP会有夸大变化,其实跟上面这个也差不多一个意思。其实可以理解成你的夸张不可以超过我给你的极限值。
这个是我设置的一个fake AP 和正常AP,同SSID:Security 同MAC:C8:XX:XX:XX:XX
这是相邻的两个数据包:
Timestamp0x0000000001a5e27115271 Timestamp0x00000000c110b249110249Timestamp:0x000000000245bd3b724357 Timestamp:0x000000000f6e1836183
其实经过好多次的测试呢,也不知道是正好碰上还是怎么,有几次fake AP并不是按照逻辑增长,有时也会小。所以说这方面还是要好好研究下的。
PS:Timestamp的单位是:us
其实我最开始搞的时候,先搭建一个真AP的环境。之后收集真AP的Beacon,计算Beacon之间Timestamp的差值,记为一个“D-value”,之后在去扫描全网环境,包含真伪AP的数据Beacon,逐步计算差值后也记为一个“D-value-1”然后这两个值去比较,最后取一个TSV值。这里告诉大家一个技巧吧,就是你不要去收集单独Fake AP之间的Beacon Timestamp,因为经过我之前的测试他们的差值很夸张,根本不准确,反而影响检测算法,前面已经说过了Fake AP的逻辑不走寻常路。
基于时序特性
基于时序特性的检测方法实际上就是通过检测两个顺序帧的接收时间间隔,即帧间到达时间来进行伪AP识别的,beacon和SSID(或者ESSID),识别同一个AP的beacon,按照协议设置,一般这个时间为TBTT,默认值为100ms,实际会有上下浮动 但是如果仅仅是几ms间隔就有一个新的beacon,那么就是有问题的了。其实在Beacon间隔是可以认为设定的,上述情况是说除在认为情况下,并且单AP的时候还可以用这个办法,多AP漫游的话就要查BSSID。
还有个是根据PLL来识别的,说是可以更精确,其实还是那句话,规则多了,精确度就高了,但是精确度越高越容易出现误报。针对咱们实际环境来说,上面的任意一条都可以了。
在检测规则方面,我们可以事先设定好除了算法之外的规则,例如规则中你要加入除白名单内的SSID,MAC,加密信息之外的相同信息AP都要列入阻断名单。
检测流程图大致为:
这是我自己想的一个检测手法,流程比较简单,但是感觉还算挺实用。
其实之前还有有人提到过一个概念也用在了无线Fake AP检测上,方法跟黑白名单差不多,只不过从某种方面来说更准确了一些。是用了一个叫做(Off-by-one)的现象。翻译过来叫做“大小差1”。因为根据厂商的不同,有的厂商在做硬件的时候,一个硬件必须配一个MAC地址,如果一个设备上有多个接口,那么他们的MAC地址会相关,也就是说前5个字节都是相同的,但是最后一位会在数值上差1。这个可以在iphone上得证:
家里这手机是旧的,不知道新的Iphone还遵循没遵循这个。
蓝牙接口的MAC 为:0C:77:1A:54:D6:08
因为这两个是无线接口,并且在同一设备,所以出现了这种情况。一般来说,路由器会有这种情况。
检测算法就是,当扫描出一个设备,出现“大小差1”情况时,并识别到这个设备本地联网又无线上网的时候,可以认为它就是一个AP接入点。立刻查看这个设备的信息是否在
白名单里,如果不在,立刻阻断它。
下面是个检测Fake AP的示意图:
Rogue AP 攻击行为分析
其实Rogue AP的面很广,不单单是有危险的AP接入点。我觉得员工私建热点也属于Rogue AP的一种,同样影响着办公网的安全。
其实最可以准确举例Rogue AP的例子,就是大家耳熟能详的“Sheep Wall”
除此之外呢,例如会起一些较为诱惑的AP名字,例如:“Freewifi、CMCC、Hotel”等等等..,,
之前在上海机场候机,机场内有个覆盖型WIFI名为:“ishanghai”我感觉我直接起个fake AP 为:“lshanghai”就可以钓到好多。
Rogue AP策略规则检测方法
Rogue AP的检测呢,你也可以用上面的办法,不过就是修改几条规则的问题也可以建立一个白名单 把你公司合法AP都列入这个白名单里面。其余扫描到的都是不合法AP和未知AP,其中最关键的就是AP是否加密。
未加密的“AP”
这是第一种方法。 第二种方法,就是进行内检,去扫描被隐藏了ssid的AP。 这也可能是员工自建的AP。基于这两种规则。自建AP被黑基本也GG,但一般人自建之后都会隐藏SSID
发现隐藏SSID直接MDK3+kismet
其实我曾经想过也可以针对Rogue的SSID做一些小规则,例如提供一些关键字:“公司为Google的话,除了白名单内出现的带“Google 各种大小写,各种类似Google的关键字”之外的AP,都将被列入警告,然后让管理员排查。
关于MAC地址欺骗的检测研究
在无线准入规则里面MAC地址的过滤一定会出现,但是MAC地址是可以随意修改的,就算你的AP接入点设置仅允许白名单的MAC地址与AP相连。我也可以黑掉你的真实客户端,然后改成你的MAC地址连入公司网络(当然,这是在被WIPS绕过的前提下)。
办法我也看了一些,也没什么太好的,只能客观一点。最外层就是WIPS不要被打破。而且还有可以从连接AP的客户端中进行排查。例如此MAC地址之前连接的设备一直为“APPle,之后突然变成了Android或者其他设备”这时就要注意一些了。
检测无线连接设备
其实在WIPS,无线监控也很重要,例如监控每个AP连接的客户点,甚至包括客户端的设备类型。
其实以上检测规则不一定是在WIPS中,一些手机安全软件也是带有检测危险AP功能。
无线其他威胁应对策略
802.1 Fuzzing:
802.11 Fuzzing是一种恶意的攻击,可能对受害设备造成重大损害。 在这些攻击中,攻击者将意外的数据注入802.11帧,并导致受害设备驱动程序/操作系统通过基于堆栈的溢出而崩溃。
不过感觉基本没人用这个。
War Driving:所以说一般的WIPS都有自己绘制的热点地图,这也是定位必要原因。
Cisco的WIPS热点图,我觉得蛮漂亮的,也不花哨
访客WLAN:其实感觉如果公司来访客的话基本上可以给WLAN进行隔离,然后权限放低。当访客走后修改密码。
密码安全:特别是对外的AP密码,切勿使用与本司相关的一切关键字,之前参加过某司的沙龙,密码是公司名+字符混合....我估计我现在去还能连上
最令人难受的应该是这个,尽量告诉员工别整这个....
这就不多说了。怕挨喷。
后记
其实感觉无线防入侵系统和内网防入侵系统相结合是最好的。抵制一些内网渗透啊,中间人攻击什么。Vlan也该是一个关注点。
还有就是MAC地址过滤与SSID一样,我感觉并不能算是一个安全机制.只能算个功能。
其实别看上面思科WIPS那个图他们的防御点那么多,什么EAP ATTACK、什么ASSOC ATTACK。无非就是把我上面搞的那些东西细分化了,不同的DOS就可以分离出四五种检测是没问题。其实也不能叫噱头,确实攻击与攻击不一样,目的也不太一样。我上面搞的都是最主流最有威胁性的。然后加点中间人防御,估计我上面的东西如果运用到实际就差不多可以整出好多这样的那样检测规则。什么独创各种检测引擎。当然,不是黑思科,人家的产品放到国内还是6的飞起的。而且WIPS也需要很多辅助功能。这我就不说了。另外也可以加点什么伪基站扫描啊,运用在城市端也是不错的,反正都是无线嘛,又不单单WLAN是无线。在传感器搞一搞,也可以。本来上次发誓说去搞其他协议了不写这企业无线的了,没想到打脸了又。反正也打习惯了 。国内研究这个的还是少数几家,国内也没啥资料。我想着能填补就填补下吧,这也是算是给有这心气的企业开了个小门吧。以后会搞一些蓝牙与zigbee和其他智能家具协议安全的文章与大家交流。因为我是独立研究,很少有人交流,如果那地方你觉得错了恰巧你还懂欢迎指正,也欢迎同行交流。联系方式再写一次吧:Q:2191995916@Team网络尖刀(JDSEC)再会。
传送门
【技术分享】基于检测防御企业无线安全威胁的WIPS设计
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3613.html