2017年度安全报告 — 平台漏洞

阅读量    106054 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

摘要

平台安全是计算机安全体系中重要的组成部分。平台对上层应用,服务,功能提供支持,主要体现在硬件,固件,协议及协议实现等。这方面有许多攻击方法,比如边信道攻击,中间人攻击,旁侧降权攻击等。这些高级攻击方法,如果结合平台安全中的漏洞,将会十分危险。本文是360CERT对2017年平台安全的总结。

 

平台安全中的攻击方法

侧信道攻击

边信道最早的实践是通过采集加密电子设备在运行过程中的时间消耗、功率消耗或者电磁辐射消耗等边缘信息的差异性进行攻击的手段。而随着研究的深入,也逐渐从加密设备延伸到计算机内部CPU、内存等之间的信息传递等方面。

近年,这种攻击方法最典型的案例莫过于Linux下TCP边信道安全问题(CVE-2016-5696)。为了减少CPU和带宽资源浪费,要限制challenge ACK发出的数量,所以引入了这里的ACK Throttling机制。正是这个ACK Throttling机制,带来了边信道攻击的可行性。

利用边信道攻击方式,攻击者不需要处在“中间人”的位置,整个过程不需要与受害者进行互动,这种攻击手法在平台安全中应用广泛。

中间人攻击

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。这种攻击方法通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。MITM由来已久,但在今天仍然活跃,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。

2017年披露了CVE-2017-0783和CVE-2017-8628,攻击者利用这两个漏洞,可以分别在Android设备和windows设备上进行MITM攻击。

降级攻击

降级攻击主要应用在安全协议方面,比较典型的一个例子便是4G LTE攻击。利用了3GPP的漏洞取得手机的IMSI码,通过DoS攻击迫使手机接入黑客控制的虚假GSM网络中。或者把手机导入一个与运营商网络连接的受黑客控制的合法基站上,从而能够对手机通信进行窃听以及对上网流量进行嗅探。这种攻击方法的应用还有很多,比如HTTPS降级攻击,TLS降级攻击等

其他

其他情景的攻击方法同样适用于平台安全中,比如暴力猜解,重放,接口鉴权攻击等。

还有许多不常用的攻击方法,只能针对特定的环境。比如2017的WPA2密钥重载攻击,他让我们意识到,消息可能丢失的协议可能会变得特别脆弱,毕竟这些协议用设计用来重传帧时,就有可能密钥重载。

下面就今年几个比较典型的平台安全漏洞及攻击方法进行详细介绍。

 

Intel ME固件漏洞

今年五月份, Intel公司公布了一个严重高危级别安全漏洞,攻击者可以在目标操作系统不可直接访问的区域进行加载/执行任意代码,具备极高的隐蔽性,常规方法无法检测到。酷睿,至强,凌动等部分型号均受影响。

事件描述

Intel 芯片中有一个独立于 CPU 和操作系统的微处理器,叫做英特尔管理引擎 Intel Management Engine,简称 ME。多种技术基于ME,例如代码处理、媒体DRM、可信平台模块TPM等。

ME 是一个有别于 CPU 的独立系统,它可以在不受 CPU 管控下通过搭配 AMT(英特尔主动管理技术)来远程管理企业计算机。AMT 技术能够自动执行一个独立于操作系统的子系统,使得在操作系统出现故障的时候,管理员能够在远程监视和管理客户端、进行远程管理和系统检测、软硬件检查、远端更新 BIOS 、病毒码及操作系统,甚至在系统关机的时候,也可以通过网络对服务器进行管理操作。

该漏洞主要存在英特尔管理引擎(ME ),英特尔服务器平台服务(SPS),英特尔可信执行引擎(TXE)。攻击者可以模拟ME/SPS/TXE,来影响本地安全认定的有效性,在目标操作系统不可直接访问的区域进行加载/执行任意代码,具备极高的隐蔽性,常规方法无法检测到。

总结

根据intel官方公告,相关产品漏洞一共有8个CVE:CVE-2017-5705、CVE-2017-5706、CVE-2017-5707、CVE-2017-5708、CVE-2017-5709、CVE-2017-5710、CVE-2017-5711、CVE-2017-5712。酷睿,至强,凌动™,赛扬™等部分型号产品受到该漏洞影响。

事实上,这并不是英特尔第一次被曝出产品存在严重漏洞。Intel ME固件漏洞相对于操作系统,用户是完全透明的。操作系统的一切安全机制,漏洞缓解机制都是无用的。

Intel ME固件漏洞主要影响的是服务器,个人PC平台。巧合的是,今年的一枚博通wifi芯片漏洞影响数十亿台Android 和 IOS设备,移动设备在今年也被披露存在平台安全问题,未能幸免。

 

博通wifi芯片漏洞

今年披露的一枚名为BroadPwn远程代码执行漏洞, 影响Android 和 iOS 数十亿台设备。7月初,谷歌,苹果陆续发布了安全补丁。未进行安全更新的设备,一旦置身在恶意WiFi范围内就会被黑客捕获、入侵。当手机打开wifi时,无需任何操作,攻击者便可在我们毫无察觉的情况下,完全控制手机,这是多么恐怖的事情。

背景及相关知识

在过去的一段时间,Wi-Fi的使用再移动设备上已经普及。逐渐地,涉及物理层,数据链路层的Wi-Fi已经发展成为一套健全的规范。为了拓展和解决各种未知的复杂问题,供应商已经开始生产基于“FullMAC”的Wi-Fi SoC。这些是小的SoC执行所有PHY, MAC和MLME数据处理。FullMAC芯片容易集成,在固件中实现MLME处理,这种解决方案降低了主机端的复杂性,十分受厂商欢迎。但是引入这些新硬件,运行专有和复杂的代码库,可能会削弱设备的整体安全性,引入危及整个系统的漏洞。

技术分析

参考Google的Project Zero团队对该漏洞的分析,问题出在内部通信渠道。

上图是追踪处理事件框架(dhd_wl_host_event)的入口点的控制流程,我们可以看到几个事件接收,并被独立处理。一旦初始完成,帧就被插入队列。然后事件由内核线程出队列,其唯一用处是从队列中读取事件并将其分派到相应的处理函数。这种关联是通过使用事件的内部“event_type”字段作为处理函数数组的索引来完成的,采用的evt_handler

该漏洞太过复杂,一些先决条件我们不进行探讨,直接指出到漏洞关键点:处于dhd_handle_swc_evt 函数的total_count字段。

漏洞的逻辑可归结为:

  • “ WLC_E_PFN_SWC ” 类型的事件处理SWC。
  • 通信中的每个SWC事件帧包含事件(wl_pfn_significant_net_t),总计数(total_count )和数组中的事件数(pkt_count )。
  • 当接收到SWC事件代码时,触发一个初始处理程序来处理事件。处理程序在内部调用“ dhd_handle_swc_evt ”函数来处理事件的数据。
  • dhd_handle_swc_evt处理函数无法验证total_count 和pkt_count 之间的关系。

关键函数:

“event_data”是通信的事件中封装的任意数据,函数首先初始化一个数组来保存事件的总数(如果之前没有分配的话),然后在缓冲区中建立results_rxed_so_far与传入数据的联系。但是,处理程序无法验证total_count 和pkt_count 之间的关系!攻击者可以指定一个小的total_count 和一个大的pkt_count ,触发一个简单的内核堆溢出。之后可以通过一些堆溢出利用方法,实现远程代码执行。

总结

该漏洞影响Android 和 iOS 数十亿台设备。我们使用的智能机,平板电脑,都支持wifi功能,如果使用了博通受影响芯片的设备,均在危险之中。wi-fi芯片这种基本的元件存在的漏洞,如果被利用的话,那么会有杀伤力会很惊人。我们都知道现在的智能机都支持热点功能,如果将该漏洞做成蠕虫勒索病毒,感染后,开启免密热点吸引其他手机连接,通过无线网络进行传播,俨然一场低配版的Wannacry。

说到wifi芯片漏洞,不得不提今年披露的WPA2 KRACK(密钥重载攻击),不止我们使用的设备不安全,我们wifi使用的WPA2加密协议也存在问题。

 

WPA2 KRACK(密钥重载攻击)

2017年10月16日,针对WiFi+WPA2网络,名为KRACK的漏洞攻击方式被披露。KRACK主要是利用802.11i ,4次握手中的漏洞来最终实现解密和伪造加密的WiFi流量,该漏洞由来自imec-DistriNet的Mathy Vanhoef和 KU Leuven发现。本次漏洞事件有多种攻击型态,AP热点端,中继端,和客户端均受到影响。根据krackattacks.com和部分厂商发布的安全公告综合分析,包括Linux,Android, Cisco wireless products, OpenBSD, MacOS, Windows, iOS等产品或平台受到影响。

相关知识

当客户端要连接 WiFi 网络,自动开始(互相)身份验证和连接。图 2 描述了连接阶段的握手。但是当第一次连接到网络时,是没有实际的身份验证。相反,使用了开放系统身份验证,对客户端进行身份验证。实际身份验证在四次握手中使用。但真正的身份认证仅在两个采用 fast BSS transition 握手协议的相同网络 AP 之间漫游时使用。在开放式身份验证之后,客户端连接到网络中。通过客户端向 AP 发送一个连接请求完成。这条消息包含客户端希望使用的成对的密码组。AP 回复一个连接响应,通知客户端连接是否被成功建立。

图1

四次握手提供相互身份验证,基于共享密钥技术,这种技术称为成对的主密钥 PairwiseMaster Key(PMK),并协商一个新的会话秘钥 PairWise Transient Key(PTK)。在这次握手中,客户端称为 supplicant,而 AP 称为 authenticator,PMK 由个人网络中的预共享密码生成,在企业网络中使用 802.1x 身份验证来进行协商。PTK 由 PMK,Authenticator Nonce (ANonce),Supplicant Nonce (SNonce)和 supplicant 和 authenticator 使用的 MAC 地址派生而来。一旦生成,PTK 被分割成确认 key(KCK), 加密 Key(KEK),和临时 Key(TK),确认 Key 和加密 Key 使用来保护握手消息,TK 和数据机密性协议是用来保护正常数据帧,如果使用了 WPA2,四次握手协议也传输现在的 Group Temporal Key 组临时密钥(GTK)到 supplicant。

四次握手中的每一条消息都是使用 EAPOL 帧格式(如图 1)。对字段进行介绍首先,消息的头部定义了所代表的消息类型,我们将使用 message n 和 MsgN 来代表四次握手中第 n 段消息。Replay count(重放计数器)字段用于检测重放的数据帧:authenticator 在发送一个帧之后会自增长,当 supplicant 对 authenticator 发送的 EAPOL 帧做出应答时,它使用相同的 replaycount。Nonce 字段是一个随机的 nones 值,这个随机值是 supplicant 和 authenticator 在生成新的会话秘钥这一步骤产生的。接下来,如果 EAPOL 帧传输一个组密钥,RSC(接受序列)包含了 key 起始包号。组密钥是存储在 Key Data 字段,使用加密 Key(KEK)加密。最后,使用消息确认 Key(KCK)来进行完整性校验. MIC(Message Integrity Check)。

图2

四次握手中的第 N 条消息,重放计数器 replay count 为 r, 给定的 nonce,在’;’之后的参数都存储在数据域中,也就是说会使用 KEK 加密。

  • Authenticator 通过发送 message 1 来初始化四次握手。包含 ANonce,是唯一一个没有MIC(完整性校验) EAPOL 格式消息。
  • 当收到消息时,suplicant 生成一个 SNonce 而且导出 PTK,suplicant 发送 message2 给authenticator,message2 包含了(SNonce)。
  • authenticator 收到 SNonce,也会导出 PTK。并且发送组密钥 GTK 给 supplicant。
  • supplicant 在安装 PTK 和 GTK 之后回复 message4
  • authenticator 收到 message4 之后也会安装 PTK,其中 GTK 在 AP 启动时就已经安装。

1,2 条消息使用来传输 nonces,最后两条消息是用来传输组密钥 而且使用抵御降级攻击注意:在已经存在的连接中,PTK 可以被刷新初始化新的四次握手。在密钥重载的过程中,所有的四次握手

消息都是使用 PTK 完成数据机密性加密的。

技术细节

802.11i协议(即:WPA2协议)通过两种独立的机制来保证数据传输的机密性。

第一个是在记录层通过加密WiFi帧的方式,保证明文无法被读取或嗅探。该加密机制通常是通过AES-CCM的方式,当然也有部分启动GCM模式,还有部分老的RC4-TKIP方式。需要认真考虑的是AES-CCM(还包括GCM, TKIP)是一种流加密,这意味着在重用加密参数key和nonce(即:初始向量)的情况下是可以被攻击的。802.11i是基于包计数(packet number number)的方式,其在会话建立后的初始值为0,且会不停递增(当然到了2^48的时候,会触发更新key操作)。这样一来,假设在包计数不被重置的情况下,就可以成功防范key+nonce的重用攻击。第二个机制是AP和客户端(supplicant)之间的4次握手流程,主要用于协商加密key。KRACK漏洞会直接利用到4次握手中的#3包,#3包可作用于客户端新key安装使用。

KRACK的主要漏洞在于 #3包可以被恶意阻断。当这个情况发生时,AP端会重发这个消息,会导致同样的一个key在客户端中被重装。带来的副作用是也会导致包计数会被重置为0(部分客户端,如Android6,会把key重置为0),最终,就会触发key+nonce的重用攻击了。攻击者可以利用它来全流量解密,TCP劫持等。

此外,还有如下2种攻击:

  • 包括针对客户端的基于GTK的攻击;
  • 针对AP端的11 RFT握手攻击;

https://github.com/vanhoefm/krackattacks-scripts

目前公开poc都是只针对客户端,和服务器进行安全检测,但不排除已经有一键傻瓜式工具利用。

总结

针对客户端的攻击类似中间人的形式,需要迫使无线客户端从AP连接到攻击者伪造的AP上,所以漏洞利用需要在一个有限地域范围内进行攻击,漏洞利用需要有针对性;不需要与被攻击者产生任何交互,漏洞利用触发难度小,对于针对性的实战利用是很有意义的。

漏洞存在于linux,Android到windows各种终端,可以对一些明文传输或者不正确配置的https网站进行嗅探,数据捕获,考虑到现阶段安全状况,利用效果较好。同时,WPA2 KRACK(密钥重载攻击)并没有从根本上打破WPA系列密钥体系基本的安全特性,暂时不存在更换加密方式,只需要针对特定客户端和AP进行修复。考虑到无线设备更新修复难度,建议在需要高安全性环境时,进行无线连接时采取vpn等方式加密进行连接。

360CERT建议广大用户:

  • 及时更新无线路由器、手机,智能硬件等所有使用WPA2无线认证客户端的软件版本。
  • 合理部署WIPS(无线入侵防御系统),及时监测合法WiFi区域内的恶意钓鱼WiFi,并加以阻断干扰,使其恶意WiFi无法正常工作。
  • 无线通信连接使用VPN加密隧道及强制SSL规避流量劫持与中间人攻击造成的信息泄漏。
  • 在不使用WiFi时关闭手机WiFi功能,公共WiFi下不要登录有关支付、财产等账号、密码。如需登录、支付,将手机切换至数据流量网络。
  • 及时更新官方补丁:

Linux的hostapd和wpa_supplicant 补丁地址:https://w1.fi/security/2017-1/微软在Windows 10 操作系统中发布补丁 KB4041676苹果在最新的 beta 版本iOS、macOS、 tvOS和 watchOS中修复了无线网络安全漏洞。

 

BlueBorne蓝牙漏洞

上述的三个漏洞和攻击方法分别分别属于引擎,固件,协议三个方面平台安全。此外,今年还有另外一些值得我们注意漏洞。

9月12日,armis披露了一系列蓝牙的漏洞,手机开启了蓝牙,就可能被远程控制。无接触无感知接管系统的能力有点可怕,而且基本上影响所有的蓝牙设备,危害不可估量。

所有Android智能机,平板,可穿戴设备均受到4个高危漏洞的影响,其中有两个是远程代码执行漏洞(CVE-2017-0781 和 CVE-2017-0782),有一个可被利用来进行MITM攻击(CVE-2017-0783),还有一个会导致信息泄露(CVE-2017-0785)。

Windos设备中Windows Vista以外所有版本系统均受“Bluetooth Pineapple” 攻击(CVE-2017-8628)影响,可使攻击者进行MITM攻击。微软已在今年7月11日发布安全更新,并在9月12日发布了相应的通知。iOS设备中iPhone, iPad, iPod在iOS 9.3.5及以下版本,AppleTV7.2.2及以下版本均受RCE(远程代码执行漏洞)影响。

背景及相关知识

首先给出armis的披露漏洞时,整理的蓝牙架