APT 洋葱狗行动(Operation OnionDog)分析报告

0x00 概述


主要发现

2016年2月25日,Lazarus黑客组织以及相关攻击行动由卡巴斯基实验室【1】、AlienVault实验室【2】和Novetta【3】等安全企业协作分析并揭露。2013年针对韩国金融机构和媒体公司的DarkSeoul攻击行动【4】和2014年针对索尼影视娱乐公司(Sony Pictures Entertainment,SPE)攻击【5】的幕后组织都是Lazarus组织。该组织主要攻击以韩国为主的亚洲国家,进一步针对的行业有政府、娱乐&媒体、军队、航空航天、金融、基础建设机构。

在2015年我们监控到一个针对朝鲜语系国家的组织,涉及政府、交通、能源等行业攻击的APT组织。通过我们深入分析暂未发现该组织与Lazarus组织之间有联系。进一步我们将该组织2013年开始持续到2015年发动的攻击,命名为“洋葱狗”行动(Operation OnionDog),命名主要是依据2015年出现的木马主要依托onion city【6】作为C&C服务,以及恶意代码文件名有dog.jpg字样。相关恶意代码最早出现在2011年5月左右。至今至少发起过三次集中攻击。分别是2013年、2014年7月-8月和2015年7月-9月,在之后我们捕获到了96个恶意代码,C&C域名、IP数量为14个。

“洋葱狗”恶意程序利用了朝鲜语系国家流行办公软件Hangul的漏洞传播,并通过USB蠕虫摆渡攻击隔离网目标。此外,“洋葱狗”还使用了暗网网桥(Onion City)通信,借此无需洋葱浏览器就可直接访问暗网中的域名,使其真实身份隐蔽在完全匿名的Tor网络里。另外通过我们深入分析,我们推测该组织可能存在使用其他已知APT组织特有的技术和资源,目的是嫁祸其他组织或干扰安全研究人员进行分析追溯。

0x01 持续的网络间谍活动


1. 初始攻击

从目前捕获的数据来看恶意程序主要通过 HWP 漏洞文档和伪装为 HWP 文档文件进行 传播。这种形态的伪装,通常是利用鱼叉式钓鱼邮件攻击进行传播。

其中 Hangul 是一款韩国本土主流的办公软件【7】 ,文件格式是 HWP(Hangul Word Processor)。攻击者除了采用伪装 HWP 文档文件,而且还使用 HWP 漏洞文档,也就是说明被攻击目标用户熟悉或经常使用 HWP 这款办公软件。

诱饵文档

样本 MD5 诱饵文档相关内容
588eef80e6f2515a2e96c9d8f4d67d5a 政府信息安全
700e94d4e52c4c15ebed24ec07f91f33 港口 VTS
b9164dd8260e387a061208b89df7bb6b 培训
3c983b300c533c6909a28cef7d7469ba IT,简历
3df1c88a4a7dae7fdf9282d2c4375433 铁路事故调查报告
4ad5d70d79ea5b186d48a10dfdf8085d 公务员福利
5fbe59513167be2197c9f8fbf0afa7dd 公务员休假制度
cbcf18e559b87afdd059cae1f03b18d1 韩国电力公司薪资
3e9ac32a9418723c93e8de269ad63077 暑假期间检查计划
90b36bd4d12f34d556f363d6e5f9564f 韩国国土交通部商业计划书

表 1 部分诱饵文档列表

APT 洋葱狗行动(Operation OnionDog)分析报告

图 1“韩国铁路事故调查报告书”诱饵文档

APT 洋葱狗行动(Operation OnionDog)分析报告

图 2“全国重要港湾,VTS 安装现状”诱饵文档

APT 洋葱狗行动(Operation OnionDog)分析报告

图 3《防止信息泄露应对方案》诱饵文档

APT 洋葱狗行动(Operation OnionDog)分析报告

图 4《2015 年对比“乙支训练”安全检查计划》诱饵文档

APT 洋葱狗行动(Operation OnionDog)分析报告

图 5 典型 HWP 诱饵文档属性截图

文档属性 具体内容
样本 MD5 cbcf18e559b87afdd059cae1f03b18d1
诱饵文档 MD5 9a4fafb0aa9f79dee2a117d237eaa931
内容 韩国电力公司薪资
文档大小 25,088
作者 test1234
创建时间 2014 年 7 月 23 日 13:43:54
最后编辑时间 2014 年 7 月 24 日 8:41:30
最后编辑 APT-WebServer

2. 攻击流程

APT 洋葱狗行动(Operation OnionDog)分析报告

图 6 攻击流程图

伪装 HWP 文档木马或者 HWP 漏洞文档执行安装服务成功后,会判断当前日期是否为指定日期(具体日期如下表所示)。如果超过指定日期则会删除服务,结束执行。如果在指定日期范围内,则会请求 C&C 进行通信,2014 年版本的恶意程序会请求一个硬编码 IP,通过 HTTP 下载其他木马程序,2015 年版本中 C&C 域名统一更换为“onion.city”。在“C&C 分析”章节会进行详细介绍。

下载的木马程序其中一种是 USB 蠕虫,当发现有 USB 设备接入后会进行感染,进一步将当前时间、计算机名称、MAC 地址、USB 感染成功 或 USB 感染失败等信息回传到 C&C服务器。

另外 HWP 漏洞文档触发成功后除了以上功能,还会释放一个后门程序。

2015 年 9 月 8 日
2015 年 8 月 8 日
2015 年 7 月 13 日
2014 年 8 月 9 日
2014 年 7 月 31 日
2013 年 10 月 25 日

表 3 截至具体日期

Dropper

Dropper 除了主要区分伪装 HWP 文档木马和 HWP 漏洞文档以外,进一步以伪装 HWP文档木马为主分为三类硬编码 IP、Onion.city 和测试木马三个版本。分类依据主要是从 C&C地址的差异性出发,这三类从代码架构对比差异性很小。其中时间戳和截至时间是 2014 年的恶意程序会请求一个硬编码 IP,而时间是 2015 年的 C&C 域名统一更换为 onion.city,另外 2014 年和 2015 年还有部分样本无 C&C 地址,下载的图片名称为“hello”,或者 C&C 地址只是“127.0.0.1”,我们认为这类是属于测试木马。

当 dropper 执行成功且在截至日期范围内,则会请求 C&C 地址,下载其他木马,并保存到%temp%目录下,并以类似“XXX_YYY.jpg”这种形态作为文件名,进一步我们结合诱饵文档,分析得出这些名称都是有特定涵义,一般都是指向了具体某个行业,具体如下图所示:

时间 相关资源名称 所属行业
leepink_kosep 韩国东南电力
2014 jhryum12_komipo 韩国中部电力
wypark_kwater 韩国水资源公社
lhyuny_kospo 韩国南部电力
vts_korea 韩国 VTS
zerotaek_korea 韩国港口
2015 andong4_seoulmetro2 首尔地铁
dydgh80_kdhc 韩国供暖
myforce_humetro2 釜山地铁
2060262_smrt3 首尔快速公交

表 4 相关资源名称的涵义

“洋葱狗”的攻击目标精准锁定在朝鲜语系国家的基础行业。2015 年,该组织主要攻击了港口、VTS(船舶交通服务)、地铁、公交等交通机构;而在此前 2014 年的一轮攻击中,“洋葱狗”则侵袭了多家电力公司和水资源公社等能源企业。

USB 蠕虫

下载的木马程序其中一种是 USB 蠕虫,当发现有 USB 设备接入后会进行感染,进一步将下述信息回传到 C&C 服务器。

具体执行流程可以参看下图, USBman.dll 运行时会发送计算机名称、 mac 地址、 ip 地址、当 前 日 期 时 间 、 감염 Agent 실행 성공 ( 感 染 Agent 运 行 成 功 ) 到hXXp://strj3ya55r367jqd.onion.city/main.php,端口为 80(来自 Dropper 的配置字段)封包经过异或加密后发出(TCP 包).。然后注册一个不可见的窗口(类名和窗口名都为 USB Manager),窗 口 初 始 化 时 , 注 册 GUID_DEVINTERFACE_USB_DEVICE ( USB 设 备 ) 和GUID_DEVINTERFACE_DISK(磁盘设备)的通知消息。

当 WM_DEVICECHANGE(设备到达和移除)消息到达时判断设备是否为磁盘,是的话释放 usbman.dll 中的资源 101 到 usb 磁盘usbrun.exe,107 资源到 usb 磁盘usbrun.ico,新建usb 磁盘autorun.inf,达到感染 USB 磁盘的目的。

联网成功时,发送当前时间、计算机名称、 IP 地址、 mac 地址、盘符、设备名称、 USB 감염성공 ( USB 感 染 成 功 ) 或 USB 감염 실패 ( USB 感 染 失 败 ) 等 到 指 定 的 服 务 器(hXXp://strj3ya55r367jqd.onion.city/main.php,端口为 80),如果有 USB 连接日志,文件名称为盘符设备 ID,则以行为单位发送到服务器。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 7 USB 蠕虫具体执行流程(USBman.dll)

当 usbrun.exe 被激活运行时,,如果联网成功则发送当前时间、计算机名称、 mac 地址、ip 地址、设备名称、盘符、PC 감염 성공(PC 感染成功)到服务器,如果没有联网,则保持 usb 连接日志到盘符设备 ID 文件,等联网成功时再发送。然后释放 106 资源为 test.dll,写入配置,载入 DLL 继续执行 usb 感染.test.dll 的功能和 Dropper 相同。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 8 usbrun.exe 执行流程

APT 洋葱狗行动(Operation OnionDog)分析报告

图 9 USB 感染成功/感染失败

ICEFOG 后门

关于该后门与“洋葱狗”行动的关系具体请参看“第 4 章 ICEFOG ‘重生’:误导?嫁祸?”。关于该后门相关功能,请参看卡巴斯基 ICEFOG 技术报告【8】

3. 长期监控、集中攻击

APT 洋葱狗行动(Operation OnionDog)分析报告

图 10 攻击时间轴

“洋葱狗”行动中的恶意木马程序,除了 ICEFOG 后门以外,如果要执行全部功能,则首先需要判断主机日期是否在指定日期范围内。从下表我们可以看出编译时间和截至日期之间的存活天数平均约 15 天左右。通过上面时间轴可以看出,攻击者从 2013 年开始每年都会进行类似攻击,且持续时间很短,另外我们发现截至时间 2014 年有 8 月 9 日,2015 年是 8月 8 日,具体日期非常接近。

截至日期 编译时间 存活天数
2015 年 9 月 8 日 2015 年 8 月 27 日 12
2015 年 8 月 8 日 2015 年 8 月 5 日 3
2015 年 8 月 8 日 2015 年 8 月 3 日 5
2015 年 8 月 8 日 2015 年 7 月 23 日 16
2015 年 8 月 8 日 2015 年 7 月 10 日 29
2015 年 7 月 13 日 2015 年 7 月 10 日 3
2014 年 8 月 9 日 2014 年 7 月 18 日 22
2014 年 8 月 9 日 2014 年 7 月 15 日 25
2014 年 7 月 31 日 2014 年 7 月 13 日 18
2013 年 10 月 25 日 2013 年 10 月 10 日 15

APT 洋葱狗行动(Operation OnionDog)分析报告

图 11 检查截至日期相关代码

0x02 漏洞研究


1. 简介

通过深入分析,我们确定本次使用的 HWP 漏洞并不是首次出现,是已知漏洞,在 2011年 nprotect 公司已经发布了相关预警和漏洞分析【9】 。

Hangul Word Processor(Hwp)在读取 hwp2.0 版本的文档时,处理字体名称使用 strcpy 函数没有限制长度,导致缓冲区溢出,覆盖了 SEH 记录,,触发内存访问异常后使用 pop pop ret指令串运行位于 Next SEH Record 的 shellcode,攻击者因此可以执行恶意代码。

该漏洞涉及 HWP 2010 以及早期多个版本,具体如下列表所示:

受影响的版本
HWP 2002 5.7.9.3047 及更早版本
HWP 2004 6.0.5.764 及更早版本
HWP 2005 6.7.10.1053 及更早版本
HWP 2007 7.5.12.604 及更早版本
HWP 2010 8.0.3.726 及更早版本
不受影响的版本
HWP 2002 5.7.9.3049 及更新版本
HWP 2004 6.0.5.765 及更新版本
HWP 2005 6.7.10.1055 及更新版本
HWP 2007 7.5.12.614 及更新版本
HWP 2010 8.0.3.748 及更新版本

表 5 受影响 HWP 相关版本

下表是“洋葱狗”攻击行动中使用的 HWP 漏洞文档:

MD5 CVE 编号
26b416d686ce57820e13e572e9e33cce 【10】
de00286f6128fb92002e0c0760855566 【11】

表 6 HWP 漏洞文档列表

2. HWP 漏洞原理分析

HWP 支持 hwp、doc、wps、ppt 等格式。其中 hwp 包括 hwp2.0、hwp3.0、hwp5.0 三个版本、 hwp2.0 是比较老的格式。 hwp 程序打开 hwp2.0 的文档时会自动转换为 hwp3.0 格式。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 12 HWP 漏洞文档文档格式

Hwp2.0 偏移 0x48E 的位置开始是字体结构,前两个字节是字体名称数量,每个字体名称长度为 0x28 。 程序处理 hwp2.0 文档时 , 调用 CHwp20ToHwp30FilterLibrary 类的ConvertFilterFileToWorkFile 函数转换为 hwp3.0 格式,处理字体结构调用 Set20FontList 子函数。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 13 Set20FontList 函数

Set20FontList 函数中读取 hwp2.0 文档的 0x28 个字节,到数组 arySrc[0x28]中,循环拷贝到 aryDest[0x28]中,退出循环的条件为当前拷贝字节是否为 0。

而在内存中,arySrc 数组后面紧接着就是 aryDest,当拷贝到 arySrc 最后一个字符 0x3C时由于不是 0,继续取下一个字符,取到了 aryDest 的第一个字符。如此反复直至触发C0000005 访问异常。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 14 arySrc aryDest 内存结构

覆盖的地址里面包括 CHwp20ToHwp30FilterLibrary::ConvertFilterFileToWorkFile 函数设置的 SEH 记录。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 15 SEH 记录被覆盖后

接下来当拷贝到 00130000 时,触发 C0000005 异常,来到 windows 异常处理流程,调用 SEH Handler(7FFAC1B1),此时第二个参数指向 12E4B8。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 16 调用 SEH 处理函数

APT 洋葱狗行动(Operation OnionDog)分析报告

图 17 pop pop ret 指令串

来到 ntdll.7FFAC1B1,,是一个 pop pop ret 指令串。经过两个 pop 指令后,此时 esp 指向 12E4B8,shellcode 代码起始位置,Retn 执行后就来到了 shellcode。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 18 开始执行 shellcode

最后在临时目录中创建真正的 hwp 文档,启动 hwp 2007 目录下的 hwp.exe,载入临时目录的 tmp.hwp,释放并启动 msserver.exe(洋葱狗) ,ICEFOG 样本并没有释放。

0x03 C&C 分析


“洋葱狗”行动中相关样本进行通信主要分为两种,这也是我们区分“洋葱狗”版本的 主要依据,主要是 2014 年基于硬编码 IP 进行通信和 2015 年基于暗网网桥(Onion.City)进行通信。下图是“洋葱狗”相关样本和 C&C 直接的对应关系。

APT 洋葱狗行动(Operation OnionDog)分析报告

APT 洋葱狗行动(Operation OnionDog)分析报告

图 19 样本文件与 C&C 之间的关系

1. 暗网网桥(Onion.City)

涉及 onion.city 的具体 URL
hXXp://uudv6kfdmm4pdbdm.onion.city/main.php
hXXp://strj3ya55r367jqd.onion.city/main.php
hXXp://u6y2j2ggtyplvzfm.onion.city/index2.php
hXXp://qp4xhrnjuzq6glwx.onion.city/index2.php
hXXp://j2kiphmeb4m4ek66.onion.city/index2.php
hXXp://bcn5w6eqglytlnnn.onion.city/index2.php

表 7 相关 onion.city

2015 年,“洋葱狗”的网络通信全面升级为暗网网桥(Onion.City),这也是目前 APT 黑客攻击中比较高端和隐蔽的网络通信方式。其中“index2.php”相关 URL 作用是下载其他恶意代码,“main.php”相关 URL 是进行窃取数据的回传。

暗网网桥,是指暗网搜索引擎利用 Tor2web 代理技术,可以深度访问匿名的 Tor 网络,而无需再专门使用洋葱浏览器。“洋葱狗”正是利用暗网网桥将控制木马的服务器藏匿在 Tor网络里。

2. 硬编码 IP

出现在 2013 年和 2014 年的恶意木马内的通信 C&C 均是直接连接 IP 地址,这些 IP 地址都是硬编码在恶意代码中。而且这些 IP 地址的地理位置均位于韩国,当然这并不意味着攻击者位于韩国,这些 IP 更可能只是傀儡机和跳板。

C&C IP 地理位置
218.153.172.53 韩国
218.145.131.130 韩国
222.107.13.113 韩国
221.149.32.213 韩国
221.149.223.209 韩国
220.85.160.3 韩国
112.169.154.65 韩国
121.133.8.2 韩国

表 8 相关硬编码 IP 和地理位置

0x04 ICEFOG“重生”:误导?嫁祸?


1. 关联分析中的惯性思维

在分析追溯“洋葱狗”攻击行动中,我们主要基于 360 威胁情报中心相关数据,目的是 发现不同资源直接的关联性。期间主要发现了伪装 HWP 文档文件的 PE 恶意木马和 HWP 漏洞文档文件, HWP 漏洞文档除了包含诱饵文档和“洋葱狗”样本以外,比伪装 HWP 文档类型还多一个后门程序,如下图所示。

APT 洋葱狗行动(Operation OnionDog)分析报告

图 20 HWP 漏洞文档释放 3 类衍生物

针对该后门我们引擎扫描鉴定结果是 ICEFOG 家族,通过人工分析进一步确定该样本的确 属 于 ICEFOG , 其 中 具 备 明 显 一 些 ICEFOG 样 本 特 征 , 如 : 加 密 内 容 存 放 位 置“ %TMP%mstmpdata.dat ”, 数 据 与 “ &^@~^%9?i0h ” 进 行 异 或 , 该 后 门 C&C 是www.sejonng.org 等信息。

由于 ICEFOG 已经