freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Adobe Flash零日漏洞(CVE-2018-4878)在野攻击完全分析报告
360安全 2018-02-17 09:00:09 827362
所属地 海外

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

背景

2018年1月31日,韩国计算机应急响应小组发布了一则关于Adobe Flash Player的 0day 漏洞警告,并称早在2017年11月中旬,就有黑客利用该漏洞实施有针对性的攻击。

2018年2月1日, Adobe官方发布了Adobe Flash Player系列产品的安全通告(APSA18-01),一个最新的AdobeFlash零日漏洞被发现针对韩国地区的人员发起攻击,该0day漏洞编号为CVE-2018-4878。

2018年2月5日,Adobe官方发布漏洞补丁,修复CVE-2018-4878零日漏洞

在CVE-2018-4878零日漏洞的补丁真空期,360安全卫士无需升级就能完美防御此次漏洞攻击。在此期间,360核心安全高级威胁应对团队迅速反应,率先截获了该漏洞的在野攻击并发布分析预警。在官方发布漏洞补丁,零日漏洞得到妥善解决后,本次我们发布在野攻击的完全分析报告,帮助大家从不同角度推知此次高级威胁攻击的全貌。

Clipboard Image.png
图1

漏洞文档攻击流程分析

攻击者对相关人员精心策划了社会工程学攻击,通过即时聊天工具和邮箱向相关人员发送包含漏洞及恶意代码的excel诱饵文档,诱骗受害者打开中招。

Clipboard Image.png
图2 诱饵文档内容

诱饵文档中包含了一个ActiveX对象,该对象对应的是一个swf文件。

Clipboard Image.png

图3 包含在文档中的ActiveX对象文件

打开文档后ActiveX对象会自动播放flash内容,允许播放后将从云端实施下一步攻击。

Clipboard Image.png
图4

诱饵文档中的flash播放后,下一步将请求远程URL www.dylboiler.co.kr/admincenter/files/boad/4/manager.php

Clipboard Image.png

url请求参数包含id(唯一标识符)、fp_vs(flash版本)、os_vs(系统信息)

Clipboard Image.png
图5

诱饵文档中的flash将解密远程URL地址返回的加密文件流,动态执行包含cve-2018-4878漏洞的flash内容。

Clipboard Image.png
图6

cve-2018-4878漏洞荷载所在网站是一个正规的韩国公司网站,疑似该网站已经被攻击者入侵并完全控制,攻击者可以在网站上添加任意的恶意代码。

Clipboard Image.png
图7

CVE-2018-4878零日漏洞分析

我们对cve-2018-4878漏洞文件流进行分析,发现样本通过操作Flash的com.adobe.tvsdk包中的DRMManager对象进行攻击。

该部分漏洞的关键代码存在于method_3方法中,该方法new了一个class_8的对象,并传给drmManager.initialize,然后将var_16置空。

Clipboard Image.png
图8

在class_2的构造函数中 LocalConnection().connect会主动调用gc释放没有的引用的内存,而第二次的LocalConnection().connect调用会产生异常,异常处理过程中又会new一个class_8的对象赋值给var_13。

Clipboard Image.png
图9

之后创建了一个定时器,定时器处理函数中,判断var_13.a1成员的值是否被修改。

Clipboard Image.png
图10

如果发现值被修改了,则调用flash_24/25方法。

Clipboard Image.png
图11

在flash_25方法中又会new 一个class_7的 ByteArray对象赋值给var_17。

Clipboard Image.png
图12

var_17是个ByteArray对象,通过修改ByteArray对象的Length可以完成任意内存读写,该处的漏洞利用技巧和hacking team的flash exploit技巧类似,相关代码已经开源就不再详述。

Clipboard Image.png
图13

进一步我们对该漏洞进行调试分析,将var_13 = newclass_8();代码注释掉将会触发空指针访问崩溃。

eax=6906d8e9 ebx=00000000 ecx=00000000edx=00000000 esi=08055d28 edi=0685b020

eip=6850e148 esp=024fd5c0 ebp=024fd5f0iopl=0         nv up ei pl nz ac po nc

cs=001b ss=0023  ds=0023  es=0023 fs=003b  gs=0000             efl=00210212

Flash32_28_0_0_137!DllUnregisterServer+0x14ecda:

6850e148 8b4904          mov     ecx,dword ptr [ecx+4]ds:0023:00000004=????????

回溯发现地址数据来自esi+0c位置 

6850e142 8b4e0c          mov     ecx,dword ptr [esi+0Ch]

6850e145 8b4908          mov     ecx,dword ptr [ecx+8]

6850e148 8b4904          mov     ecx,dword ptr [ecx+4]

0:005> dd 066e4100

066e4100 066e4f60 00000000 00000000 00000000

066e4110 00000000 00000000 00000000 00000000

由于这里我们已经把var_13创建代码注释了,说明还有其他对象被错误的释放了,LocalConnection().connect会主动调用gc释放没有的引用的内存,所以这里我们再把这部分注释,并在 6850e1428b4e0c          mov     ecx,dword ptr [esi+0Ch] 处设置断点,观察被释放的数据内容。

Clipboard Image.png
图14

断点命中后,可以发现数据其实是class_8对象的内容,也就是var_16的内存。

eax=67c1d8e9 ebx=00000000 ecx=0607b2e0edx=00000000 esi=04785d28 edi=0626b020

eip=670be148 esp=022fcfc0 ebp=022fcff0iopl=0         nv up ei pl nz ac po nc

cs=001b ss=0023  ds=0023  es=0023 fs=003b  gs=0000             efl=00200212

Flash32_28_0_0_137!DllUnregisterServer+0x14ecda:

670be148 8b4904          mov     ecx,dword ptr [ecx+4]ds:0023:0607b2e4=060ba4c0

0:005> dd 0618e100

0618e100 67c51a88 00000002 0607b2e0 07d98040

0618e110 00001111 00002222 00003333 00004444

0618e120 00005555 00006666 00007777 00008888

0618e130 00009999 0000aaaa 00001111 00002222

最终分析确认cve-2018-4878零日漏洞是drmManager.initialize没有正确的处理所持有的对象导致UAF漏洞。

Shellcode攻击流程分析

接下来,漏洞触发执行的shellcode会通过进程名,判断用户是否安装了AhnLab、ViRobot APT Shield和360三款中韩常用的安全软件,以采取不同的方案进行攻击。

Clipboard Image.png
图15

l  三款安全软件,任意一款存在的环境

直接调用wininet系列函数下载http://www.1588-2040.co.kr/conf/product_old.jpg所对应的恶意荷载执行。

l  未安装三款安全软件,或可能存在其他未知安全软件的环境

创建cmd进程,针对cmd进程通过远程线程注入代码的方式下载http://www.1588-2040.co.kr/conf/product.jpg所对应的恶意荷载执行。

Clipboard Image.png
图16

l  两款韩国安全软件共存的环境

Shellcode将会直接退出,不做任何操作。

Shellcode所下载的恶意荷载地址所在网站,同样是一个正规的韩国公司网站,疑似该网站也已被攻击者入侵并完全控制,用于放置最终的恶意荷载。

Clipboard Image.png
图17

恶意荷载分析

最终执行的恶意荷载会分为两个阶段的程序,第一个阶段是Dropper荷载释放程序,第二个阶段是利用网络云盘进行C&C控制的后门程序。

荷载释放程序(Dropper)

程序从资源中加载名为JOK的资源,资源的内容为实际执行的Shellcode,程序新启动wscript.exe,通过远程线程的方式将shellcode注入到wscript进程中执行,最终Shellcode会从内存中解密释放PE文件,自行加载节区重定位在内存中执行最终的后门程序。

 Clipboard Image.png
图18

值得注意的是,此次程序的PDB路径,与2017年11月思科报告的Group 123 组织的ROKRAT木马(http://blog.talosintelligence.com/2018/01/korea-in-crosshairs.html?m=1)存在关联。

l d:\HighSchool\version13\2ndBD\T+M\T+M\Result\DocPrint.pdb

l D:\HighSchool\version13\First-Dragon(VS2015)\Sample\Release\DogCall.pdb

同时,程序的执行流程和技术细节也与思科报告中的dropper程序一致,疑似是同一系列的ROKRAT木马程序。

Clipboard Image.png
图19

网盘后门程序(Cloud Drive RAT)

该程序使用公共网盘作为C&C服务器,用来存储截屏信息或者进行插件下载;相对于传统的CC服务器,使用公共网盘提高了流量识别的难度,因为网盘类网址均为可信的白域名。

Clipboard Image.png
图20

使用的云盘信息如下:

程序中出现的URL 对应网盘
api.box.com Box
content.dropboxapi.com DropBox
api.pcloud.com pCloud
cloud-api.yandex.net Yandex

程序主要流程分析

程序首先生成了一个8字节的随机字符串,用来作为本次通讯的标识,该字符串在随后的上传和CC命令执行都有涉及

Clipboard Image.png
图21

随后对操作系统版本和当前执行和环境进行检查

Clipboard Image.png
图22

收集计算机、用户名、BIOS信息

Clipboard Image.png
图23

尝试加载下列DLL,尝试获取VMwareTools版本号和BIOS版本信息,进而判断是不是处于沙箱环境或者调试中

Clipboard Image.png
图24

l  沙箱环境列表

Dll名称 对应沙箱或调试环境
SbieDll.dll Sandboxie
dbghelp.dll Microsoft debugging tools
api_log.dll GFI SandBox
dir_watch.dll GFI SandBox

在判断沙箱环境之后,程序开始创建工作线程,执行相应的功能。

Clipboard Image.png
图25

该后门程序使用公共云盘进行数据中转,程序中内置了4种云盘,分别是box,dropbox,pcloud, yandex,此次截获的样本使用的为pcloud网盘。

Clipboard Image.png
图26

程序通过GDI API来实现截取受害机器屏幕的功能,并将图片保存在temp目录下,命名方式为随机产生的表示序号+当前截图的序号

Clipboard Image.png
图27

Clipboard Image.png
图28

随后,程序会读取图片数据,并删除temp目录下的图片,将之前收集到的环境信息和图片数据一起上传到云盘中。

 Clipboard Image.png
图29

 l  上传的数据格式

偏移地址 长度 信息
0 8 随机生成的标识数据
10 2 系统版本信息
12 64 受害机器名
76 64 用户名
140 256 当前进程路径
396 128 BIOS信息
524 1 沙箱环境信息
525 1 判断是否Windows目录可写
526 40 Vmtools版本信息
566 39 主板,BIOS型号
605 7 字符disable
1119 4 截屏图片的大小
1123 不固定 图片数据

程序会循环向网盘请求名为 def_ + 随机标示的文件,通过对该文件进行解析,获取云端的C&C指令进行攻击。

Clipboard Image.png
图30

l  云控C&C命令列表

指令序号 功能
1 从指定的网址中获取数据到内存中,作为Shellcode内存执行
2 从指定的网址中获取数据到内存中,作为Shellcode内存执行
3 获取新的网盘Token,下载文件ADI.bin,作为Shellcode内存执行
4 获取新的网盘Token,下载文件DDI.bin,作为Shellcode内存执行
5 从指定的网址中获取数据到内存中,保存文件%temp%/setup.exe执行
6 从指定的网址中获取数据到内存中,保存文件%temp%/setup.exe执行
7 获取新的网盘Token,下载文件ADX.enc,保存文件%temp%/setup.exe执行
8 获取新的网盘Token,下载文件DDX.enc,保存文件%temp%/setup.exe执行
9 获取新的网盘Token,下载文件ERSP.enc,保存文件%temp%/setup.exe执行

在完成命令解析后,程序还会调用网盘的删除API将对应的指令文件删除

Clipboard Image.png
图31

我们推测在实际的攻击过程中,攻击者会收集截图等信息后,选取其中有价值的目标,再上传定制的指令文件到网盘中进行攻击。

攻击信息溯源

通过对程序的逆向分析,我们发现了网盘的Token权限并没有被严格限制,通过该Token可以获得网盘的注册信息和保存在网盘中的内容,从中我们定位到了攻击者的网盘注册邮箱为cheseolum@naver.com,注册时间为2017年12月11日,与韩国响应中心公告的11月开始攻击的时间相近。

Clipboard Image.png
图32

在1月31日攻击正式对外曝光后,仍然有大量新的中招者向该云盘上传信息,在获取到的截屏信息中,我们发现了大量的病毒检测沙箱和样本分析人员。从截屏信息中判断,大部分分析人员在根据https://github.com/brianwrf/CVE-2017-4878-Samples 中的样本在进行病毒分析。

Clipboard Image.png
图33

在截图排查中,我们还意外发现了疑似国内安全从业者的电脑桌面截屏,可能是其在下载分析样本时不慎中招。

Clipboard Image.png
图34

总结

通过分析我们可以发现此次攻击是通过精心策划的,攻击周期长达三个月以上,攻击者通过入侵两个正规公司网站放置恶意荷载,使用正常的云盘服务作为C&C基础设施,不计成本利用零日漏洞,开发精巧的攻击方案。在攻击过程中所使用的大量资源,都表明这不是个人和一般团队能够实施的,这是一起典型的APT攻击。随着漏洞信息逐渐公开,相关单位和普通用户都需提高安全防范意识,及时更新Flash版本,并开启安全软件防御可能出现的漏洞威胁。

*本文作者:360安全卫士,转载请注明来自FreeBuf.COM

# flash # 0Day漏洞
本文为 360安全 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
360安全 LV.9
360安全官方账号
  • 459 文章数
  • 92 关注者
360安全大模型实战笔记:捕获在野0day漏洞!
2024-05-15
Gartner最新XDR报告发布,360打造新一代XDR数字安全防御架构
2023-01-04
信创安全建设再加码!四川CA入根360信创SM2国密根证书库
2022-11-10
文章目录