近期,ICEBRG 安全研究团队 (SRT) 识别出了Adobe Flash 0 day漏洞 CVE-2018-5002 的定向网络攻击行为,该 0 day漏洞被攻击者用于针对中东地区重要人士和组织的网络渗透。攻击者利用该漏洞构造的恶意Flash对象,可以在目标受害者电脑上执行代码,实现后续渗透的一系列Payload和恶意代码运行。
本文对将此类攻击的细节情况进行披露,包括技术分析、针对卡塔尔的定向攻击,以及一些防御性措施建议。我们希望公开这些发现,有助于行业和个人警惕该漏洞的类似网络攻击,及时做好安全防范。针对该漏洞,我们已于2018年6月1日 4:14 AM PDT 向Adobe进行了首报,在最快时间内,Adobe公司和我们ICEBRG 安全团队进行了协调解决并复现了整个漏洞,之后,2018年6月7日Adobe发布了该漏洞补丁。
攻击综述
我们发现,这次CVE-2018-5002漏洞的攻击行为中,其在目标受害者电脑上执行的利用代码是通过Microsoft Office来实现下载执行的,整个漏洞利用过程如下图所示,首先,当目标受害者点击了攻击者嵌入恶意对象的Microsoft Office文档后,会下载执行一个远程Shockwave Flash (SWF)文件。不同于大多数 Flash 利用代码搭载Microsoft Office的嵌入式传播方式,这里的 Microsoft Office 文档使用了一个很少有人熟知的功能,来从攻击者架构的服务器端加载了所有用到的SWF内容。
第一阶段的SWF传播过程中涉及了一个 RSA+AES 的加密体制,它可以保护后续作为实际exploit利用代码的SWF下载执行和分发。这种像RSA的非对称加密应用可以规避一些传统的重放型安全设备,并防止事后网络数据包的捕获分析;第二阶段SWF分发中,当目标受害者系统执行Microsoft Office 文档被点击触发后,就会使用之前的加密方式去从攻击者服务器中远程下载执行包含后门功能和后续利用工具的shellcode代码,最终实现对目标电脑系统的入侵控制。通常,最终的攻击Payload包含了一系列威胁性的核心shellcode代码,我们曾尝试去恢复提取最终Payload,但出于其它原因,最后并未成功。
远程 FLASH 包含
由于很多浏览器禁用了Flash功能,所以,此次攻击是从 Microsoft Office 内部加载Adobe Flash Player而起的,这是一种非常流行的方法。但从另外一个方面来讲,此次攻击又别有不同。通常来说,攻击者会在文档中嵌入整个作为exploit利用代码的Flash文件,或发起一些有选择性的 exploit 或 payload下载操作(如 APT28/Sofacy DealersChoice等),这就为安全防御者留下了可被标记或被回溯识别的 Flash loader 文件。
与这些典型的攻击利用不同,此次攻击没有直接嵌入Flash,而是使用了一个少为人知的功能来远程包含了Flash内容,如下图所示,最终组合效果是,只看得到选择了Flash Player ActiveX 控件的XML封装器和一个带参OLE对象:
上图中的Flash对象中,包含了一个“Movie”属性,而在“Movie”属性中又定义了一个远程的Flach对象地址,这纯粹是一个初始对象包含的应用实例。这种远程加载嵌入式Flash对象的方式具有多个显著优点:
免杀及规避性:首先,从 Microsoft Office 文档本身来说,不包含任何恶意代码。静态检测来说,最好的检查方式是去分析远程包含的Flash内容。动态检测来说,需要防御的沙盒/模拟器必须与攻击者服务器进行恶意内容的接收交互,这就要求分析系统与Internet有实时连接。而且,攻击者可以基于请求的IP地址或HTTP报头,来有选择地服务于下一阶段渗透。一旦对目标系统建立了访问权限通路,攻击者就可以停用他们的C2服务器,随后对攻击的分析只能依赖一些遗留行为证物了。
目标针对性:由于攻击者可以选择性地向受害者系统提供漏洞攻击利用代码,他们可以将攻击限制在有针对性的受害者系统之上。就比如,攻击者可以通过区域ISP将目标公司或个人的网络列入白名单,而将云基础架构和安全公司列入黑名单,从而限制对特定IP地址的访问。HTTP报头中的“Accept-Language” 和 “User-Agent”,也可用于将已知的受害者场所系统环境列入白名单,或将异常或过时响应的安全产品列入黑名单。HTTP报头的排序、包含或缺失通常也可能区分安全产品、真实受害者和定向目标。最后,“x-flash-version” 则可用来包含受害者系统的Flash Player版本,攻击者在服务端可以根据该版本选择最有效的漏洞利用代码来进行攻击。
即使攻击者这种静态的存在方式占用空间较小,但在 Microsoft Office 文档加载过程中,远程Flash对象也还是会在Microsoft Office 文档中提取执行。
加密机制
攻击成功后,从服务端到客户端的数据通信由下图利用AES对称算法的自定义加密机制来混淆,这种AES和RSA的组合利用,使Payload数据和对称密钥也能得到加密保护。而其自定义的加密机制则利用了一个公共的 ActionScript 脚本库来执行一些底层操作。
客户端首先向服务端发起数据通信请求,在此过程中,客户端通过HTTP POST方式,向服务端发送一个随机生成的RSA算法模数n,以及公钥指数e=0x10001,也即公钥(n,e),之后服务端用以下加密格式数据进行响应:
0x0: Encrypted AES key length (L)
0x4: Encrypted AES key
0x4+L: AES IV
0x14+L: AES encrypted data payload
为了解密Payload数据,客户端用其随机生成的私钥对加密的AES密钥进行解密,之后,再用这个解密过的AES密钥对Payload数据进行解密。
在此,具备随机密钥生成的公钥加密额外层至关重要,如果要进行攻击分析,必须利用它来恢复随机生成密钥,或破解RSA加密以分析攻击的后续层,如果手动的取证分析操作正确,则可能会有所收获,而一些自动型的安全产品做不到这点,可能会捕获到一些无效数据包。而且,经过解密的Payload数据会驻留在内存中,对传统的磁盘取证和非易失性分析形成挑战。
在我们捕获的攻击场景中,攻击者选择了一种长度为512比特的RSA模数n,按照现今标准来看,这种长度是不安全的,只要付出一些努力可能就会被破解。尽管可以通过在线分析来检测模拟受害者或创建中间人服务还原攻击,但看来离线分析也是可行的,只是会稍微费力。
远程包含的Flash漏洞利用代码和非对称加密机制的组合是对抗事后分析的有力措施,一旦受害者系统被攻破,则其系统上唯一的遗留物将只会是包含了URL链接的初始诱饵文档。在这种情况下,安全防御方可能会通过网络数据包捕获来还原攻击,但是,因为没有为受害者随机创建的私钥,防御方将无法解密攻击者的代码以恢复后续渗透阶段的exploit或payload数据,在这种情况下,防御方唯一的可行措施就是使用一个弱一点的RSA公钥模长进行暴力破解了。
0-day 漏洞的利用
客户端与服务端通过加密方式取得联系之后,漏洞利用代码的Payload即被加载,并触发后续攻击代码执行。尽管诱饵文档是一个 Microsoft Office,但后续攻击代码将会在 Adobe Flash 容器中来完成。
大家可能会有疑问,为什么要在 Microsoft Office 中来执行 Flash 漏洞利用代码呢?在过去几年,很多浏览器对包括 Adobe Flash 在内的外部插件和应用都作了限制以缓减攻击面。类似的安全措施可从谷歌Chrome浏览器 v.55版本看出,它默认是禁用 Flash的。另外, Office 还仍然支持 Flash 在内的嵌入式 ActiveX 控件,但根据最新微软说明,在2019年最新版的Office 365产品中这种支持功能会有所改变。
这种0-day而不是N-day漏洞的使用,在整个攻击链的应用中非常有意思。由于0-day漏洞对用户来说,没有任何可用的修复补丁,而对攻击者来说,其漏洞利用代码的低交互性以及检测识别的低成功率,致使对目标系统的攻击成功率非常之高。
但另一方面,0-day漏洞的使用也存在一些缺点,不仅攻击成本会非常高昂,而且也会增加一些被深入调查的风险。就比如2015年Hacking Team的内部对话就揭露了大批 Adobe Flash 0-day漏洞的在野利用,其中每个漏洞的利用代码售价高达3到4万美金。而且,当 0-day漏洞攻击被披露之后,分析调查人员会继续深入对之后的N-day攻击进行研究。
网络通信
在整个攻击过程中,诱饵文档被点击之后就会首先向攻击者远程C2服务器,执行初始SWF和多块的加密数据下载,并回传受害者系统的基本信息,两种网络行为都是HTTP方式。所有下载内容都会包含一个独特的名为'token'的32字节参数,这个参数也会在后续链接的URI路径作为 Flash 参数被重用。
下载的SWF会把日志数据附加到名为 'stabUrl' 的链接中,该链接也是指向攻击者的C2服务器。整个的URI会被附加一个随机值形成特定字符串构建而成(如下图所示),该随机值会显示当前函数以及函数内的进程,而该进程则用来以跟踪攻击效果的成功与否,如成功检索回传第一阶段后的值是 '0-0-0':
stabUrl + “%d-%d-%d.png?x=”+ Math.random()
成功与服务端建立连接通信之后,客户端会向包含第二阶段漏洞利用代码SWF的 'encKeyUrl' 参数发起一个请求,之后也会向“downloadUrl”发出请求来下载shellcode payload。如果第三阶段中,假定的目标区域向C2服务器回传信息,但C2服务器无任何Payload响应,则表示此次攻击被阻拦破坏了。之后的GET请求中,使用'2-0-1.png'来验证表明受害者系统是一个在目标范围内可支持的Windows版本,这些信息会包括Windows XP 到 Windows 10的系统版本。整个与C2的网络交互过程如以下两图所示:
针对卡塔尔的定向攻击
在下图名为 “الراتب الاساسي.xlsx” 的诱饵文档中,翻译过来是 “basic_salary.xlsx”,这是一个阿拉伯语主题的文档,旨在告知目标受害者薪水调整方案。正巧,这个诱饵文档在2018年5月31日被从卡塔尔的某个IP地址上传到了VirusTotal。该薪水调整文档中大多涉及的职业,都是外交界相关的,如外交秘书、大使、外交官等。
在该文档中,攻击者使用了带有 “doha” (多哈)的域名 “dohabayt[.]com” 来作通信回连,其中第一部份包含了卡塔尔首都多哈“doha”,第二部份则是中东知名工作招聘网站 “bayt[.]com”,这些都是一些迷惑性手段。
ICEBRG 评估认为,该文档是针对特定卡塔尔目标受害者的定向网络攻击,鉴于最近其他一些中东国家对卡塔尔的持续封锁,以及有人指控卡塔尔利用网络和承包商对美国政坛组织人员发起攻击,而这种有针对性的定向网络攻击并不令人意外。
攻击指标
在以上识别捕获的攻击链中,我们分析出了很多原始的攻击威胁指标,这些指标通常是一些性状偏弱的指标,因为它们在其它攻击场景和活动中很容易被攻击者更改,以建立更加有力和隐蔽性的攻击路径。
虽然此次被捕获识别的攻击利用了0-day漏洞,但这种个别攻击行为不会孤立发生,可能还有其它能被检测的行为特征。任何单一的可检测指标的置信度较低,但多个被识别指标的组合就更能增加这种复杂定向攻击的目的性了:
使用新注册和低信誉度的域名架构:其使用的域名“dohabayt[.]com” 是最才近注册的域名,而且其域名托管商Abelons此前曾因网络滥用被举报。
恶意Flash内容的分阶段下载:在攻击链中,诱饵文档通过远程加载加载恶意Flash对象,从而产生可观察的HTTP流量,用标题 “x - Flash-version”来识别后续Flash利用代码下载。
使用了开源证书签发机构“Let’s Encrypt”签名证书:经分析,其中一个恶意伪造证书为在线免费的“Let’s Encrypt”网站签发。
Office 文档使用了远程包含实现嵌入使用:攻击使用了一种不常见的远程包含Flash嵌入方法,该方法中对于一些不可信的包含源,可能存在威胁可能。
*参考来源:icebrg,clouds 编译,转载请注明来自 FreeBuf.COM