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的虚拟化也是同样 ...
随机推荐
- 3G下的无压缩视频传输(基于嵌入式linux) (转载)
本课题研究嵌入式系统在数据采集,3G无线通信方面的应用,开发集视频采集.地理信息采集.无线传输.客户机/服务器模式于一体的车载终端,实现终端采集视频与GPS信息的传输,支持服务器端显示视频与GPS信息 ...
- go 并发 demo
两个进程执行两个goroutine // This sample program demonstrates how to create goroutines and // how the schedu ...
- Python 获取文件的创建时间,修改时间和访问时间
# 用到的知识# os.path.getatime(file) 输出文件访问时间# os.path.getctime(file) 输出文件的创建时间# os.path.getmtime(file) 输 ...
- chrome表单自动填充去掉input黄色背景
input文本框是纯色背景的 1. input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset!important; ...
- Linux常用命令 查找文件
Linux搜索命令:find / -name 'nginx' 搜索根目录下文件名为‘nginx’的文件夹 .find / -name 'nginx.conf' 搜索根目录下文件名为‘nginx.co ...
- Codeforces 838A - Binary Blocks(二维前缀和+容斥)
838A - Binary Blocks 思路:求一下前缀和,然后就能很快算出每一小正方块中1的个数了,0的个数等于k*k减去1的个数,两个的最小值就是要加进答案的值. 代码: #include< ...
- iterm2用法与技巧
1.设置窗口 定位到 [Preferences - Profiles - Window] 新窗口设定风格设为 [Top of Screen],这样每次新打开终端都会固定出现在屏幕的顶端且不会有窗口 ...
- JS-Object (3) JSON; Event Object相关知识(事件冒泡,事件监听, stopPropagation()
通常用于在网站上表示和传输数据 使用JavaScript处理JSON的所有工作,包括访问JSON对象中的数据项并编写自己的JSON. JSON text基本上就像是一个JavaScript对象,这句话 ...
- php--------php库生成二维码和有logo的二维码
php生成二维码和带有logo的二维码,上一篇博客讲的是js实现二维码:php--------使用js生成二维码. 今天写的这个小案例是使用php库生成二维码: 效果图: 使用了 php ...
- Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录
在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发.如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自 ...