- A+
写在前面:
心脏出血漏洞又坑了一把无线网络,这次的利用方法比较苛刻,最容易中招的是基于EAP的路由器,也是很多大型公司所使用的路由器。原文地址
正文:
自从我发现了丘比特漏洞,得到了很多关注,也收到了很多问题,在下面的文章中我将回答一下这些问题。
What is cupid?
丘比特是我给Linux中“hostapd” 和 “wpa_supplicant”这两个文件的补丁的名字。这两个补丁修复了程序在TLS链接时产生心脏出血漏洞的行为。
hostapd 是linux建立Access Point所使用的程序,而wpa_supplicant是linux和anroid用来连接无线网络所使用的程序。
(有趣的是这两个程序都是一个人写的,很多代码都一样,所以补丁也差不多)
How does the attack work?
这种攻击在本质上还是使用心脏出血的攻击手法,发送恶意的数据包读取目标机器的内存。不同点在于,这种漏洞是在,当TLS基于EAP连接建立时(EAP是一种无线网络下的多认证机制框架)触发的。
攻击客户端,我们可以利用hostapd(打上丘比特补丁的)建立一个恶意的网络,当受害者连接时,hostapd将发送一个恶意的包从而触发漏洞。
攻击服务端的时候,我们可以利用wpa_supplicant(打上丘比特补丁的),建立TLS链接之后发送恶意心跳包。
我还发现了一个,对心脏出血漏洞的误解,很多人以为,在TLS链接完全建立之后才可以实施心脏出血漏洞的利用。我通过实验,发现在Client Hello信息被发送之后,心脏出血漏洞就可以成功利用了。
Do I need to provide a valid user/password to exploit this vulnerability?
简而言之不需要,在提供正确的用户名密码之前这个漏洞就可以被触发了,有些特殊情况下触发这个漏洞需要一个正确的
用户名(不包括密码),或者需要一个username/realm的组合,这些可以通过嗅探简单获取。
How to spot vulnerable systems:
你可以使用丘比特触发漏洞,然后通过抓包来检测返回的包。
下面是wpa_supplicant_cupid的利用测试结果
首先我们提供一个用户名,之后我们通过EAP创建一个TLS链接。不用等待握手包完成,发送出血包,就可以收到泄漏的内存。
下面是hostapd_cupid的利用测试结果
和上面的利用发发类似,收到Hello包之后就可以展开攻击。
What software is affected?
使用存在漏洞的OpenSSL版本肯定会受到漏洞的影响,比如Android 4.1.0 和 4.1.1,我大胆猜测一下,所有的android版本都使用了wpa_supplicant来连接无线网络,所以这个漏洞也可能影响到绝大多数anroid版本。
Regarding vulnerable clients:
如果你是用Android 4.1.0 和 4.1.1,需要小心的链接未知的wifi网络。
如果你是用linux,需要确定OpenSSL库升级到最新版本。
Regarding vulnerable servers:
如果你是家用的路由器,那么可以放心,因为一般情况下家用路由器不会使用EAP验证机制。
如果你是一个公司无线方案的提供方,那么要注意这个漏洞,会在EAP的验证机制下被利用。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫