引言:关于搭讪,你真得跟兜里那台智能手机学学,这一路上它一直寻觅身边的无线热点,并抛出“我们交往吧”的请求,有些甚至还成功了,但这些你造吗?而且,它的这种滥交行为甚至是能影响到你的敏感信息,这个你都造么?
先让我们做个户外运动,看看大家的手机等移动设备是否会“出轨”。
#0 虚假Wi-Fi热点“攻击”测试(地铁环境实验)
测试目标是让大家看看伪造CMCC热点的客户的接入情况实验。因突然有的想法,临时找些小玩具,所以装备还不是很酷炫,凑合秀。测试路由刷了OpenWrt,方便统计接入终端等数据,另外也为开荒后复杂的测试做准备。咱不用空想出来的数据和危害说事儿,说做就做 Let‘s Go!
测试地点:xx号线地铁站 测试时间:10点钟后非早高峰时段 测试设备:OpenWrt路由器 x 1、移动电源 x 1、平板 x 1、3G热点 x 1 测试周期:四站地铁,20分钟左右 测试热点:CMCC(建立个CMCC热点,不设置密码即可)
进站后给路由器通电,心脏扑通扑通的跳啊。开启无线后立刻有十多台手机等移动设备涌入,来了来了,它们来了!在车辆开启后稳定达到了70多台设备接入(偶滴个神仙大姐啊),如图:
需要说明的是这个小路由器价格还不到100块钱,稳定的信号覆盖可能也就一两节车厢或更多吧,如果换个功率较强的无线设备上车,数据看起来会更过瘾一些。四站后下车,统计结果共有170多台设备接入过我们的无线设备(好奇早高峰能有多少)。
图太长只截一部分,这个实验说明了像CMCC这种公共WLAN服务,确实有很多手机可以主动或被动的接入,伪造Wi-Fi的攻击在国内是绝对有可能,并且影响巨大。
距离其他测试还有点时间,借机给大家讲讲移动设备Wi-Fi安全的两个点:
- 不可信的Wi-Fi
不可信的Wi-Fi是指公共场所如咖啡厅、酒店、商场、饭店或个人私建(无密码开放),给用户提供的免费Wi-Fi服务。风险一是会有开放动机不明的热点,二是同热点下可能会有中间人攻击(安卓手机有好多黑客软件,装上后就能轻松劫持前面上网那个女神的账号了了了)。
上图是小编蹲在星巴克外面测试的(ARP欺骗),轻松监听到用户邮箱客户端中的明文账号密码,和微博认证cookie直接登录。对不住了大哥,手机明明对准的是你身后的妹子,但怪你身宽体胖挡住了信号 (っ´ω`c)
- 伪造的Wi-Fi热点
另一种灵活的攻击是利用智能手机Wi-Fi广播/自动接入设计进行攻击的。简单来说,我们在接入家里无线路由器后手机就会保存这个热点的信息,每次进入家庭无线范围就会自动接入,无线路由现在家家都有,我们都很习惯这个特性。
如 果你很想知道原理的话,技术钻研流可以阅读http://mp.weixin.qq.com/s?__biz=MzA5NjU4NjEyMA==& amp;mid=200735976&idx=4&sn=65d5fe0c8318c468f867e9f462d11cb1#rd。乌云君知识分享平台上的翻译版:Open Wifi SSID Broadcast vulnerability
所以当你可以自动接入伪造热点的时候,我们就孤身同处一室了(啊不对,是同处一网),能进行网络监听。但我怎么建立大家都能接入的Wi-Fi热点呢?这个难题三大运营商合力给完美的解决了。
中国移动热点:CMCC、CMCC-EDU 等 中国联通热点:ChinaUnicom 等 中国电信热点:ChinaNet、ChinaTelecom 等
这就是开篇时做的 地铁伪造热点的实验原理 了,首先以上热点接入方式都是已知的(没密码么就是),然后是很多人都曾经接入过(有个大招咱后面说),虽然官方WLAN服务上网还需要身份验证,但能让大家都接入这就足够了!!再次引用地铁实验的结果,移动设备都自动到碗里来了。
可以在路由器上抓取明码网络通信,比如邮件协议的数据,明文账号密码被爆,这个请求是从Android自带邮件客户端发出的,你在用么?
但 如果你说你没接入过三大运营商的WLAN服务,或我干脆删了它,就不怕自动接入了么?图样图森破啊。一日把玩好友的国产手机(你们非得问名字!型号忘记 了!商标拼音读了下念“来弄我”!你说到底是啥牌子的?),它竟然将两大运营商的Wi-Fi热点内置到你的手机中(电信好孤单),更有甚者一些手机中这几 个Wi-Fi你都删不掉,碰到了就连上。
@ImaNewbie 针对@乌云-漏洞报告平台 今天提出来的某国产手机会自动连接CMCC,其实那个全球智能机销量第一的手机也一样,该手机型号为移动定制“牛3”,自带的CMCC和CMCC-EDU会自动连接且无法删除,甚至没有办法屏蔽掉……
看懂了么,想删都删不掉啊,我不想连都不允许么?
一些微博网友吐槽:
@Weimin_TM:华为不也一样?深恶痛绝此功能
@cybergene:国产机大都如此,CMCC删都删不掉
@黑色的叛逆少年:看了下评论还真让我想起了来弄我的某款电信定制机,电信热点自动连接,妈蛋root之后也去不掉 (插一句:root也不行?姿势不对?)
@尔夫要把太阳吃掉:酷派表示会自动连接CMCC
@军号微博:根本无法分辨这个CMCC是假的。
@請叫我熊先森:定制机都这样,小编白目啊,移动应该承担这种伪基站Wi-Fi的校验责任
我国各种大定制V587!想没想过给用户留下的隐患?起码用户能删除吧。。。好了,两种Wi-Fi风险都介绍完了,目前媒体对不可信热点的关注度比较高,而更实用的伪造热点关注却不多,偏科不好:
在提下 钓鱼Wi-Fi_百度百科 提到的“安全指南”,是不是有 关上了一扇门,又打开一扇窗的感觉?科普不到位。
前面的内容看完后是不是这个情形?
机灵的你马上问我几个问题:
Q:我访问HTTPS(SSL)加密的网站肯定没事儿,他看不到明文传输的信息,能耐我何?看这里看这里。
HTTP 数据传输(明文):我的密码是123456 HTTPS 数据传输(加密):涐の嘧碼媞①②③④⑤⑥
A:你以为黑客会这样
实际可能是这样
可以搜索下SSL胸器之中间人攻击-SSLStrip,专业解释不贴了。直接说人话就是他在网络上做了手脚,成了黑中介,把你的数据骗过来装成你跟网站通信,对于你来说网站还能正常互交,所以妥妥的察觉不到。
页面一模一样不是么?其实是个套儿,目的是获取HTTPS下面你的账号密码Cookie等敏感认证信息。
Q:那安卓手机里这些删不掉的运营商热点咋搞?
A: 这个操作建议有动手能力并且喜欢折腾的伙伴尝试。安卓手机内置并且无法删除的CMCC等无线热点,可以root系统后在 “/data/misc/wifi/bcm_supp.conf” 或是同目录中的 “wpa_supplicant.conf” 文件中干掉他,如果你不知道文件结构,那就破坏掉常见的运营商SSID即可(比如CMCC改称CMCCTUISAN这样)。
Q:亲哥了,咋root手机啊?咋找那个文件啊??咋改掉热点啊???啥都不会啊!!!
A:如果你不适合折腾的话。。。建议在公共场所关闭手机的Wi-Fi吧,安全还省电,多好。
Q:说了这么多你给总结下重点吧
A:1、Wi-Fi攻击软件都很傻瓜化,而且窃取密码只是其中一项功能,全用上能给你的移动上网体验折腾的欲仙欲死、欲罢不能啊;
2、公共场所的Wi-Fi确实存在风险,攻击可以来自热点设备,也可以来自其中的一个接入用户。他们的攻击效果都差不多,劫持、篡改、监听你的数据,比如邮箱、网购、微博、知乎啥的;
3、相比公共Wi-Fi,个人觉得伪造热点更可怕一些,特别是国内手机厂商的助力下,如狼得妹儿啊;
4、对手中的设备和你的操作习惯也别过于自信,因为厂商更想传递更好的用户体验,而不是更好的安全性。
PS:最后附上 Open Wifi SSID Broadcast vulnerability 那个测试中,老外发现中招最多的热点,和中招最多的设备(2012年测试)
转自:http://zhuanlan.zhihu.com/wooyun/19835123
————————————————————————————————————————————-
Open Wifi SSID Broadcast vulnerability
前几天,看到微博上@RAyH4c分享了一份老外关于wifi钓鱼的文章,觉得挺好的,便翻译了一下。第一次翻译,英语水平堪堪才过4级,翻的不好请大家见谅,凑合着看吧。
附上原文地址:https://www.os3.nl/_media/2012-2013/courses/ssn/open_wifi_ssid_broadcast_vulnerability.pdf
0x01 摘要
一 些厂商更想传递更好的用户体验,而不是更好的安全性,这很常见。基于这个事实,SNE实验室进行了一次研究并证实,为了保证更快的扫描/连接,一些设备会 在用户没有察觉的情况下广播他们保存的SSID。这个研究提出了配置方面的问题,特别是公用wifi的SSID,揭露了一个安全漏洞。那么,主要担心两个 问题,设备究竟发出了什么以及如何利用这个发出的东西。
0x02 介绍
最 近的观察显示,打开主动扫描功能的wifi设备暴露了一些对用户来说无关紧要,但是对攻击者很有价值的信息。为了用一种更有效的方式(更少的时间,更少的 努力)收集同样的信息,这个项目的想法起源于此。这个想法是利用wifi可用的设备自身的主动扫描(探针请求)和自动连入开放wifi接入点的漏洞,设计 一个自动化方法(设备)。显然,通过创建一个可以嗅探和自动创建伪造的SSID的设备,在一段时间内扫描许多设备就可以获得这个漏洞的范围了。先不提研究 结论,这种设备可以有许多实用的安全相关应用。比如,任何公共实体,像机构或者公司(没有任何技术知识),通过他们的设备,从wifi主动扫描能够评估他 们的员工的安全等级。特别是高等级的安全实体(银行),增强安全措施是非常有必要的。而且,没有物理的接触也是必要的,完成一个安全分析能够提供更好的结 果。不用再说,它无疑能够减少费用和耽误工作的时间。
0x03 背景
1)客户端和接入点连接
IEEE802.11 过程的一个关键部分是发现WLAN并随后连接到它。这个过程先是WLAN网络通过展示SSID来通知它的存在,会发送一种叫做Beacons的帧。然后 WLAN客户端为了鉴别或者连接到更好的WLAN,发送探针请求帧。最后两步是认证和连接,考虑到它和我们的项目没有直接联系,没有介绍这部分。
2) IEEE 802.11 Beacons
Beacon的主要目的是让WLAN客户端了解在给定的地区里,哪个网络或者接入点是可用的。接入点可能会时不时地广播beacons。虽然beacon可能是由接入点有规律地广播的,在连接(或重连接)过程中,探测帧、认证和连接也会有用到。
3)IEEE 802.11 探针
对于客户端,实际上有两种方法扫描可用的AP,主动扫描和被动扫描:如图1
图1:连接过程
1 主动扫描:在主动扫描的过程中,为了在匹配的SSID的特定频道监听到可用的AP探针回应,客户端会将它的IEEE 802.11广播调整到将扫描的频道,并广播探针请求。客户端等待回应的时间取决于厂商,但是通常在10ms左右。有两种探针请求,直接探针和广播探针。
直接探针:客户端发送特定名字的SSID探针请求,只有拥有请求的 SSID的AP才能回应。(图2)
图 2 直接探针
图3 广播探针
广播探针:客户端广播一个无SSID的探针请求,所有的AP都会收到这个请求,并返回它们支持的SSID。
2 被动扫描:被动扫描时,客户端依然会将它的广播频率调整到它想要扫描的频道,但它会等待从有效的AP发出的广播beacon,而不是发送一个探针请求。如图4
图4: 被动扫描
0x04 方法
1)探测发送探针请求的设备
1 安装
这部分主要是抓取所有发送探针请求的设备信息。安装主要是基于软件配置,这样它可以装在自定义操作系统的路由器上(比如openWRT)或者笔记本上。配置生效后能够抓到三种类型的数据。
第一部分是网络嗅探。在无线监听设备上运行一个tcpdump进程来监听所有其他设备发出的流量包。然后放到过滤器里,仅保存探针请求到日志文件里。文件格式仅包含设备MAC地址和探针请求发出的SSID。
第 二部分是识别设备。为了识别设备,会设置一个接入点来让设备连接到它。DHCP服务器会给每个设备分配一个永久IP。MAC地址和对应的IP地址都会记录 在一个文件里。所有的流量都会经过一个打开日志记录的本地服务器(在这里是Lighttpd)。日志文件包含IP地址和HTTP设备请求的 UserAgent字符串。事实上,如果一个设备连接到这个接入点并访问一个网页,它都会访问到本地web服务器并记录下它的请求。
2 收集数据
为 了收集数据,在不同的地点放置了这样的设备。这些地点选择在了公共的,但是也有用户交互的地方。在每个地方,人们都被要求连到接入点来判定设备类型。这些 地点包括UvA,VU,Amsterdam Central andcSchiphol Airport。在设备连接前,先安置一个嗅探器来抓包,并在最后一个客户端连接后再运行一小段时间。这是为了确保嗅探器能抓到探针请求,因为它们每60 秒发送一次。
3 保存数据
在收集数据后,对 于每个登陆会话会有三个文件,即发出的SSID,DHCP租约和HTTP UserAgent。所有会话的文件会合成三个大文件,格式化以便导入到数据库里。在这个项目,我们使用Mysql数据库。每个文件都被导入到数据库,并 表示为一张表。这样就能轻易地查询数据库里的数据了。
2)探测连接到伪造AP的设备
为了了解哪个设备连接到了伪造的接入点,过多的不同操作系统的设备会被放到评定过程里。接入点被配置成设备之前连接过的SSID。AP被设置成没有保护的网络。当设备自动连接时,操作系统的类型和版本会被记录。
3)自动化欺骗
动态接入点的概念是将收集SSID和MAC地址的过程自动化,负责那些特定SSID的探针请求。下一步是将欺骗那些SSID的过程自动化,以便找出哪些SSID是公开的。如果有一个设备连接上了,那么可以得出那个SSID是公开的而且这个设置确实有效。
为 了使欺骗原理自动化,可以使用一种刷了定制软件的硬件来实现。这种硬件被称为动态接入点(DAP)。它根据输入调整欺骗过程。输入可以是用户自定义,也可 以是从无线接口抓取的信息。这里创建的DAP能使用两种攻击模式:普通模式和直接模式。在普通模式里,所有的探针请求都会被收集并用来设置伪造的 SSID。在直接模式里,只使用指定的MAC地址的探针请求。在这个研究里,使用一个以OpenWRT作为操作系统的TP-LINK路由器。整个过程的每 个部分都使用两个设备。第一部分是收集设备监听无线通讯并经过过滤的信息。为了完成这步,写了一款软件。首先无线接口被设成监听模式,这样就可以抓取所有 的数据包。然后除了探针请求,其他包都被过滤了。从这些探针请求中,生成一份SSID的列表。前七个SSID用于伪造。如果系统是直接模式的,只会使用用 户自定义的MAC地址的SSID。
第二部分也是一个带有OpenWRT的 TP-LINK路由器。这个路由被设置成一个使用hostapd作为服务的接入点。Hostapd是一个处理客户端连接到接入点的用户进程。路由器能够使 用DHCP分发IP地址和提供网络接入。当第一个路由收集到足够的SSID时,它会生成一个hostapd服务能够支持格式的配置文件。它使用scp命令 发送via ssh文件到第二个路由并重新运行服务。重新运行之后,第二个路由就变成了所提供的SSID的接入点了。
图5 DAP基础操作
0x05 调查结果
1)检测发送了探针请求的设备
实 验收集的结果分为三部分。第一部分是一张包含MAC地址和广播的SSID的表。然后是一张DHCP租约的表,包含MAC地址和对应的IP地址。第三张表包 含IP地址和浏览器的UserAgent字符串。为了分析这个数据,我们执行了许多复杂的查询。首先我们在表1中用如下查询得到了最热门的SSID
SELECT ssid , count ( _ ) AS count FROM ( SELECT ssid.mac,ssid.ssid FROM ssid WHERE ssid.ssid!= "" GROUP BY ssid.mac ) AS P GROUP BY ssid ORDER BY count DESC
接下来是查询发出探测帧的客户端的UserAgent字符串。这个结果仅仅是用来展示操作系统,可以在表2中看到。
SELECT useragent .useragent FROM ssid , dhcp , useragent WHERE ssid.mac = dhcp.mac AND dhcp.ip = useragent.ip AND ssid.ssid != "" GROUP BY useragent . useragent
2)检测连接到伪造接入点的设备
在第二部分里,许多设备连接到了恶意接入点。连接的操作系统类型和版本可以在表3中看到。
这个数据也从市场份额上反映了受影响的设备数量。可以在图7中看到。
1 自动化欺骗SSID
当 动态接入点开始工作时,可以观察到几点。首先,设备的启动时间花费了大概30秒。但是当它在操作时,它对基础SSID支持的很好。当设备处于欺骗模式时, 在伪造的SSID工作之前,hostapd进程重新运行、更新SSID列表的时间花费了10秒。当设备运行时,很明显设备可以自动连接到伪造的SSID。 这仅仅测试了一小部分设备,但它们全部都连接了。
0x06 结论
从 收集的数据来看,很大一部分Android,iOS和Blackberry的设备会发出探针请求。因为这些设备占用很大的市场份额,所以很多设备都是存在 风险的。而且已经证明了自动欺骗的过程是有效的,设备很容易被欺骗连接到伪造的AP,这是个问题。这证明了一些设备仅仅依靠SSID去连入AP,而 SSID是存储在设备里的。
0x07 讨论
在 这个话题上进行更多的研究能够进一步提高发出探针请求的已知设备的市场份额的可靠性。这个研究并没有研究每一种设备,所以这个数字还会比已知的更高。并 且,不是所有的设备都运行在默认的操作系统上,定制ROM会提高不同的Wireless stack。可能一些厂商改变了wireless stack,因此在这个领域的研究需要给出更多的细节,使问题的范围更精确。
既 然设备仅仅根据SSID就进行连接,让它记住接入点也是一个好的方法。例如,设备应该永远不记住不安全的网络。这样,欺骗会变得更加复杂。另一种方式,可 以在保存SSID的同时,也记录已知AP的BSSID。这种方法也使欺骗更加困难,因为伪造AP需要同时知道BSSID(同时知道MAC地址),而且 BSSID不会暴露在探针请求里,不容易被猜到。
更多的研究会表明什么是好的策略,厂商应该保持这些好的策略。而且既然这问题已经存在了,我们将进一步研究发送探针请求的必要性,除非必要,否则不要用它。
未来应该使用更加高明的技术以增加设备连接到DAP的成功率。相比于其他的东西,SSID会被标记为更高优先级。成功的连接也会增加受影响的SSID的优先级。每个SSID都有一个频率属性,意味着DAP要试着预测哪个SSID更可能开发,取决于之前提到的标记。
0x08 参考
[1] J. Bhardwaj, What is your phone saying behind your back?, Oct. 2012. [Online]. Available: http://nakedsecurity.sophos.com/2012/10/ 02/what-is-your-phone-saying-behind-your-back/. [2] Part 11: wireless lan medium access control (mac) and physical layer (phy) specifications, IEEE Computer Society, Mar. 2012.
——————————————————————————————————————————————
Multiple SSIDs with hostapd
I found the documentation for this rather confusing, but it’s quite simple.
In essence, each SSID needs a BSSID. In a standard single-SSID configuration, the BSSID of your wireless card is the same hex value as the burned-in MAC address of the card. Every SSID requires its own BSSID, so hostapd
needs to be told how these should be generated.
Not every wireless card will work with hostapd
, and of those that will only a subset will support multiple SSIDs. Nicolas Calderon kindly let me know about the iw
command which can be used to interrogate your wireless card in order to discover what capabilities are supported:
# iw list ...much output valid interface combinations: * #{ managed, WDS, P2P-client } <= 2048, #{ IBSS, AP, mesh point, P2P-GO } <= 8, total <= 2048, #channels <= 1
Note: iw list
is distinct from iwlist
Nicholas points out – and I agree with his interpretation – that within the ‘valid interface combinations’ section, the part containing the ‘AP’ mode must correspond to a number higher than 1, in the above case it looks like 8 SSIDs would be supported.
Assuming you get encouraging results from iw list
, the first step is to change the MAC address of the wireless interface. This is necessary because the MAC must end in a 0, and we need to make sure that newly generated addresses don’t conflict with other devices. So, find out the existing address:
# ifconfig wlan0 | grep -o "HWaddr ..:..:..:..:..:.." HWaddr 09:ab:cd:ef:12:34
where wlan0 is your wireless interface. This MAC address will need to be changed like so:
09:ab:cd:ef:12:34<- Change to 30 ^ | Change to 02, which means 'locally administered'
So, hostapd
will assign BSSIDs from 02:ab:cd:ef:12:30, 02:ab:cd:ef:12:31, 02:ab:cd:ef:12:32 and so on. To make this change, it should be as simple as:
# ifconfig wlan0 down # ifconfig wlan0 hw ether 02:ab:cd:ef:12:30 # ifconfig wlan0 up
but that wouldn’t work for me, since wlan0 refused to be taken down. Instead, I just did this:
# vi /etc/network/interfaces auto wlan0 # Hotplug will watch for this device and bring it up when connected. # Useful for USB devices allow-hotplug wlan0 iface wlan0 inet static # Start hostapd if it is not running hostapd /etc/hostapd/hostapd.conf address 192.0.2.1 netmask 255.255.255.0 pre-up ifconfig wlan0 hw ether 02:ab:cd:ef:12:30
Now, additional SSIDs can be configured like so:
# vi /etc/hostapd/hostapd.conf # Change wlan0 to your wireless device interface=wlan0 # Tell hostapd what your new MAC address is bssid=02:ab:cd:ef:12:30 driver=nl80211 ssid=my-secured-ssid channel=1 wpa=1 wpa_passphrase=thisismyreallylongwpapassphraseandiliketurtles wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP bss=wlan0_0 ssid=ipooptoomuch bss=wlan0_1 ssid=icanhearyouhavingsex bss=wlan0_2 ssid=SurveillanceVan37 wpa=1 wpa_passphrase=crackthislongwpapassphraseifyoucanwhichidoubt wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP
Restart hostapd
# service hostapd restart
and you’ll have new interfaces like wlan0_0, wlan0_1 which correspond to each SSID. These can be assigned IP addresses and routed or masqueraded with iptables – whatever you wish. However, whatever I tried I couldn’t get wlan0_0 to be brought up at boot with the right IP address. I had already added:
auto wlan0_0 iface wlan0_0 inet static address 172.16.21.1 netmask 255.255.255.0
to /etc/network/interfaces
, but still no go. In the end I lost patience and simply modified the init script like so:
# vi /etc/init.d/hostapd #... start) log_daemon_msg "Starting $DESC" "$NAME" start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \ --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null && sleep 5 ; ifup wlan0_0 log_end_msg "$?" ;; #...
Yep, it just waits five seconds for hostapd to start and then manually brings up wlan0_0, reading its config from /etc/network/interfaces
. Ugly, but it works fine.
However, Jayen Ashar says:
“I was able to get udev to start the interface by changing auto wlan0_0
to allow-hotplug wlan0_0
in /etc/network/interfaces
“.
I will definitely try this the next time I do a PiFi build. Stocksy 09:13, 18 November 2013 (UTC)
转自:http://wiki.stocksy.co.uk/wiki/Multiple_SSIDs_with_hostapd
转载请注明:jinglingshu的博客 » 你的Wi-Fi出卖了你造么