WiFi Pineapple的Karma攻击与原理探究
WiFi钓鱼是一种被炒烂了的安全威胁,你几乎每天都能从电视、网络媒体中看到因误连了恶意WiFi导致大笔资金失窃的案例,并且很多媒体语不惊人死不休的报道风格总是能把当事人的受害过程删减修饰到灵异的程度。开篇并非是否定WiFi的危害,而是当以一种客观的视角来看待恶意WiFi的威胁。
首先根据我们工作中的情况来看,过半的手机APP毫无抵御中间人的能力。用户名密码等等一堆敏感信息总是与你赤裸相见。升级bin文件(apk/so/script)不仅无法抵御中间人攻击,末了竟然连完整性和防篡改校验操作都没有。总是能带给人惊喜(“惊”的是用户,“喜”的是黑阔)。
开始正题
在提到WiFi Pineapple的Karma功能前,我们先列举两种以往我们熟知WiFi钓鱼的方式:
第一类:
如建立一个名为“FreeWiFi”的恶意热点,等待用户主动点击连接该恶意WiFi。
这种方式的攻击效率通常较低。
第二类:
建立一个手机连接过的同名热点,让手机自动搜索到该WiFi并且进行连接。
这种方式主要针对于OPEN方式的热点,对于如WPA/PSK这种加密的热点来说,除非你能事先掌握原热点的连接密码,否则STA与AP的握手过程将会失败,这源于WPA的双向验证特性。最易躺枪的可能就属“CMCC”了。
以上我们提到了两种常见的WiFi钓鱼形式。当然为了增强效果,往往会在鱼上撒一些“调味剂”,也就是配合一些欺骗或DDOS攻击,使其断开原来的热点或切换信道来逼迫其连接恶意热点。
Karma攻击
我们这里将讨论第三类不常见的WiFi钓鱼形式。WiFi Pineapple中的Karma提供了这种WiFi钓鱼功能,当然这种攻击方式也并非WiFi Pineapple专有。
Karma是什么
Karma是一种通过伪造虚假响应包(Probe Response)来回应STA(Wireless station,手机、平板等客户端等)探测(Probe Request)的攻击方式,让客户端误认为范围内存在曾经连接过的WiFi热点,从而骗取客户端的连接。
通过上面的解释我们可以得出第三类钓鱼方式与前两种相比有一个最大的突破点:可以得到STA曾经连接过的热点SSID名称,不再被动而为。
Karma演示
首先我们来看在WiFi Pineapple上的攻击效果:
1. 首先打开 WiFi Pineapple 中的Karma功能,不需要什么特别的设置:
2. 稍等片刻后,通过日志发现了空间内出现了大量的Probe Request封包请求,这些包正是STA探测周围是否存在曾经连接过的AP热点而发出的:
3. 稍等片刻后已经有几台设备被骗连上了伪造的热点:
Karma分析
为了将 Karma攻击的技术细节搞明白,我们决定直接使用“抓包大法”来分析整个攻击流程。
1. 首先我们以这台手机为例:
2. 从攻击开始到攻击成功全程进行了抓包记录,首先抓取到的是STA(Wireless station,手机、平板等客户端等)设备发出的探测请求包(Probe Request):
下面这个包是由我们的测试机发送而出,下面的SSID:“tencent-tgrass WiFi”正是这台手机曾经连接过的AP热点。下面的探测请求包仅仅是这台手机发出的众多 Probe Request 包中的其中一个(因为这台手机曾连接过不止1个WiFi)
3. AP(WiFi Pineapple)收到了STA发来的探测请求包:
AP随即发送探测响应包(Probe Response)告诉STA其“我在附近”
4. 紧接着AP又向其发出了身份认证请求成功的包(Authentication):
由于AP默认的热点为OPEN(无密码)形式,所以直接通过身份验证,可以接入。
5. STA这边:首先收到AP发来的探测响应包(Probe Response),随后又收到身份认证通过包(Authentication):
STA收到这两个包后,表明AP已经通过了身份验证,可以进行接入了。所以STA随即向AP发送接入请求包(Association Request)请求接入:
6. AP端收到STA发来的接入请求包(Association Request)后,回应接入响应包(Association Response):
7. 后续还会有一系列的诸如DHCP等等交互通讯,由于前面已经将Karma出问题的点展示了出来,所以后续的包就不再列举…
看到这里你可能还是不明白哪里导致了Karma攻击。请向上翻看第1、2步,对问题就出在了这里,按照IEEE802.1X标准规定,第2步骤中AP是不应当应答STA发来的探测请求包(Probe Request)的(只有SSID为:“tencent-tgrass WiFi”的AP才有权应答这个请求)。
但这里的AP是由 WiFi Pineapple 伪造而来,所以并未遵守IEEE802.1X的标准,WiFi Pineapple 对于空间中的 “Probe Request” 包可谓是来者不拒,照单全收,并且与STA的进一步握手和接入。SO,问题就是这么来的!
DIY一个Karma攻击热点
通过分析我们了解了Karma的一些细节,而且上面也提到Karma攻击并非 WiFi Pineapple 专有,我们下面就借助一款强大的工具来实现这个功能:Airbase-ng。
我们选择在Ubuntu下来搭建这个攻击热点,借助一下两款工具:
. aircrack-ng 用于伪造Probe Request探测包,aircrack-ng工具包非常强大
. dhcp-server 为STA的DHCP服务提供支持
1. 首先我们要将wlan映射为监听接口,执行命令airmon-ng start wlan[n]:
映射成功后,会看到如下的interfaces列表:
2. 然后开启伪造的AP点,使用airbase-ng -P -C 30 -v [interface]:
-P : 应答所有的Probe Request包。
-C : 开启广播Beacon包。
-v : 打印详细的信息。
关于Beacon包
Beacon 包是一种AP向外部主动广播自身热点信息的一种包,正是有了这种包,我们才能在手机或电脑的WiFi列表中看到附近的WiFi。
启动后立刻就收到了大量的Probe Request包,非常多:
查看WiFi列表,确实已经出现了大批的WiFi热点。而这些热点正是附近设备连过的WiFi热点,airbase-ng通过附近STA设备发出的Probe Request包来伪造了同名SSID的AP,以便欺骗STA连接:
3. 翻看手机的WiFi状态,发现已经被钓上钩,该热点正是这部手机曾经连接过的1个AP热点:
到此为止,DIY工作并未全部完成!为什么这么说,你可能已注意到手机一直停滞在“正在获取获取IP……”不动声色,那是因为缺乏DHCP服务的支持:
注:下图中的at0必须在执行过ifconfig at0 up命令后才能看到,见第4步
当airbase-ng开始工作后,会在系统中创建一个名为“at[n]”的虚拟化interface来为接入的STA提供服务。
4.所以后面我们要围绕这个at0进行一系列的设置。
a).首先设置为其分配IP地址和子网掩码:
ifconfig at0 up //启动interface
ifconfig at0 192.168.3.1 netmask 255.255.255.0 //分配IP和掩码
route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.1 //增加路由项,统一由192.168.3.1(at0)来传输数据。
b).向/etc/dhcp/dhcpd.conf增加1个DHCP项:
subnet 192.168.3.0 netmask 255.255.255.0
{
range 192.168.3.2 192.168.3.250;
option domain-name-servers 8.8.8.8;
option routers 192.168.3.1;
}
c).将etc/default/isc-dhcp-server中的INTERFACES=””选项指定为at0,让dhcp服务于该interface:
d).下面就启动dhcp服务项,让其提供服务:
service isc-dhcp-server start
当然,若服务已经在运行,就重启之:
service isc-dhcp-server restart
启动成功后便可看到以下状态
e).接下来要开启数据包转发:
修改一处配置文件,由于文件内仅有1byte数据,所以直接用echo命令写入:
echo > /proc/sys/net/ipv4/ip_forward
f).最后对防火墙上做些过滤操作,也可索性关掉防火墙:
iptables —flush
iptables —table nat —flush
iptables —delete-chain
iptables —table nat —delete-chain
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
最后手机终于能够成功连接上热点了:
用wireshark抓包后,发现已有大量鱼儿上钩:
注意:
上面的操作请在root权限下完成。
Karma总结
通过上面的分析和演示我们能得出:
. Karma攻击方式的高效之处在于,其主动利用空间中的SSID来实时伪造虚假AP,相比传统的WiFi钓鱼攻击效率要高得多。 . 能让攻击效果发挥至最佳状态的场所就是户外,这种情况下STA设备处于未连接状态,因而会不停的广播连过的热点(夹带在Probe Request包中)尝试寻找,这时候就是Karma发挥威力的时候,用户会在完全不知情的状态下遭受攻击。 . 很多APP完全没有低于中间人的能力,对于这种钓鱼攻击只能是任人宰割。
Karma不足
以上我们讲到了Karma攻击目前针对WPA/WPA2是无效的,原因如下:
. 当STA连接OPEN SYSTEM热点时,双方几乎是没有任何身份验证操作的,所以这种情况下STA唯一的识别依据就是SSID,而在Karma攻击下SSID毫无抵挡之力。 . 相比较而言,WPA/WPA2的验证方式要繁琐的多,且为双向验证:也就是说不光AP要验证STA,而反过来STA也要去验证AP的合法性,当然是否合法的依据就是key了。 . 所以Karma若想伪装成一个STA连过的WPA/WP2加密AP,那么除非攻击者事先得到了这个AP的密码,否则双方的验证过程不会完成。关于WPA/WPA2的详细流程,请参阅相关文献。我们也可能会在后续的文章中进行分析。
Karma防御
目前经过测试,Android4.x、win10手机版(开发者预览版)也会受到影响,Iphone 与 Windows Phone还未测试。
从系统和驱动层面解决此问题的最好方式可能就是:禁用主动扫描,采用被动监听的方式来判断周围的广播包是否存在连过的热点,这样攻击者就无法拿到SSID,也就无从伪造了(事实上很多设备进入节电模式后,会禁用主动扫描)。
对于普通用户而言,最方便的解决手段是:出门关闭WiFi功能,或者将手机内已连接过的OPEN热点记录全部删除即可。
参考文献
《802.11 无线网络权威指南》第二版 - Mattbew S.Gast著 O’Reilly Taiwan公司译
《IEEE Standard for Information technology-Telecommunications and information exchange between systems-Local and metropolitan area networks》 - Institute of Electrical and Electronics Engineers, Inc.
WiFi Pineapple的Karma攻击与原理探究的更多相关文章
- 聊聊WiFi Hacks:为何你的Karma攻击不好使了
0.前言 三年前我发表了一篇文章<黑客有办法让你自动连上陌生WiFi>,介绍Karma攻击可以让你的无线设备自动连上黑客的WiFi.当时引起了还算比较热烈的讨论,关于WiFi安全,关于Ka ...
- 使用Wifi pineapple(菠萝派)进行Wi-Fi钓鱼攻击
简介: WiFi Pineapple 是由国外无线安全审计公司Hak5开发并售卖的一款无线安全测试神器. 特性: 用作 Wi-Fi 中间人攻击测试平台 一整套的针对 AP 的渗透测试套件 基于 WEB ...
- 初探无线安全审计设备WiFi Pineapple Nano系列之PineAP
前言: 之前曾经介绍过国外无线安全审计设备The WiFi Pineapple Nano的SSLsplit模块和ettercap模块及实验. 在玩WiFi Pineapple Nano 设备的过程中, ...
- WiFi广告强推的基本技术原理和一些相关问题
WiFi推原理(转) 本文地址:http://jb.tongxinmao.com/Article/Detail/id/412 WiFi广告强推的基本技术原理和一些相关问题 WiFi广告推送原理就是利用 ...
- 如何用路由器改成WiFi Pineapple系统镜像网络流量
本文主要介绍利用自己现有的设备,如何制作和使用WiFi Pineapple镜像网络流量,利用DWall模块分析用户数据,然后根据自己的需求,给DWall加入了日志记录功能.最后介绍了如何防范wifi ...
- 利用WiFi Pineapple Nano渗透客户端获取SHELL
前言: 前两篇文章介绍了The WiFi Pineapple Nano设备的一些主要功能模块,例如PineAP.SSLsplit和Ettercap等.今天给大家实际场景演示下如何利用Pineapple ...
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- [原] KVM 虚拟化原理探究 —— 目录
KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
随机推荐
- junit中test注解测试使用案列解析二
本文原创,转载请注明出处 在上文中,已经简单的解析了junit中test注解的使用方法,今天在进行test测试时,遇到了一个异常,于是想深 入的研究一下. 还原一下今天的异常代码: @Service ...
- 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流
19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...
- undefined!=false之解 及==比较的规则
JS中有一个基本概念就是: JavaScript中undefined==null 但undefined!==null undefined与null转换成布尔值都是false 如果按照常规想法,比如下面 ...
- HDU 3065 病毒侵袭持续中(AC自动机(每个模式串出现次数))
http://acm.hdu.edu.cn/showproblem.php?pid=3065 题意:求每个模式串出现的次数. 思路: 不难,把模板修改一下即可. #include<iostrea ...
- Oracle数据库常见版本
Oracle数据库常见版本 在Oracle数据库的发展中,数据库一直处于不断升级状态,有以下几个版本: Oracle 8,Oracle 8i:Oracle 8i表示Oracle正式向Internet上 ...
- Qt数据库_资料
1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...
- jq 命名空间
$('ul').on("click",function(){console.log('all');});$('ul').on("click.a",functio ...
- jsp/post中文乱码问题
在 iso-8859-1,gb2312, utf-8 以及任意一种编码格式下,英文编码格式都是一样的,每个字符占8位,而中文就麻烦了,在gb2312 下一个中文占 16位,两字节,而在utf-8 下一 ...
- 页面title改变浏览器兼容性问题
前一阵子客户在界面上改了下小小的需求,需要点不同的文章title显示不同的模块名称(之前没有区分,统一叫新闻图片),很简单的一个需求但是测试的时候并没有注意到不兼容IE7和IE8.在客户那被尴尬的发现 ...
- 我的Java学习笔记 -开发环境搭建
开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...