1 概述
安天CERT于2020年4月20日发现APT组织Darkhotel在近期的威胁行为,并持续跟进分析,现公布本次渗透隔离网络的Ramsay组件以及与Darkhotel组织关联分析报告。
Darkhotel组织是具有国家背景的一般能力国家/地区行为体,又名Dubnium、Nemim、Tapaoux、APT-C-06、T-APT-02等,由Kaspersky于2015年8月10日首次披露,是一个活跃至今、主要目标国家为中国、朝鲜、印度、日本的攻击组织。在以往的攻击活动中使用劫持WiFi投递诱饵、鱼叉式钓鱼邮件、0day、nday、滥用数字签名、白利用,以及感染U盘文件达到突破物理隔离等技术手段。
在这次事件中,Darkhotel组织的策略是将恶意代码与合法应用捆绑,以往对该组织的披露认为这种捆绑策略是为了伪装恶意代码,即属于ATT&CK初始投递载荷阶段。但实际上,从近期捕获的样本Ramsay组件来看,与合法应用捆绑的恶意代码属于被感染的文件而非伪装的诱饵,属于ATT&CK内网横移渗透阶段,主要用于在隔离网络传播恶意代码。判定此次Darkhotel渗透活动属于隔离网络有以下四方面原因:
第一,假设目标终端部署杀软,则文件感染的方式很容易被检出,但根据活跃样本的狩猎情况并未发现更多的样本,说明Darkhotel活动限于特定的目标;
第二,办公场景的应用安装包多数来自于共享盘下载或者同事之间的信任分享,奇热尤其在隔离网络场景,无法去应用官网下载;
第三,早期有关Darkhotel的披露中,如果缺少组件则会通过Powershell下载,但是本次Darkhotel活动的分析中并未涉及网络请求或者下载行为;
第四,本次Darkhotel活动不是基于网络协议的C2,而是基于自定义的文件传输控制指令,当Ramsay扫描到被带入隔离网络环境的感染文档,则读取对应的指令并执行指令对应的载荷对象作为攻击利器在隔离网络传播。
通过关联分析捕获到了Darkhotel初始投递阶段的载荷,一镜之中,窥以全豹。
图 1-1 Darkhotel组织Ramsay组件渗透活动对应的ATT&CK映射
行动中涉及10个阶段28个技术点,具体技术行为描述如下表
表 1-1 Darkhotel组织Ramsay组件渗透活动具体技术行为描述表
2 恶意代码分析
2.1 被感染软件的分析
被感染软件的时间戳为2020年3月4日,在外观上看似伪装成知名压缩软件7Zip的安装包,考虑到木马的PE感染机制,这例诱饵很可能是某个受害者网络中被Ramsay v2感染的正常7Zip安装包,并不是最初的诱饵。
图 2-1 被感染软件图标
Ramsay v2木马释放原理如下:
Installer结构负责找到诱饵自身的4个特殊标志的位置,将包含的正常7Zip运行器、Dropper和正常7Zip安装包提取出来,释放到临时目录并运行:
图 2-2安装包诱饵结构图示
正常7Zip运行器负责运行正常的7Zip安装包,在前台弹出交互界面。
图 2-3弹出正常7Zip安装界面
Dropper负责释放后续的一系列功能组件:
Dropper运行后需先检查是否要创建“%APPDATA%\\Microsoft\\UserSetting\\”目录,再检查自身命令参数是否为"gQ9VOe5m8zP6",是则开始释放多个功能组件。Dropper释放的方式与7Zip诱饵有所不同,且更直接:从Dropper自身的指定偏移开始,读取指定大小字节,再将前两字节改回MZ头,最后写入指定位置。
包含的各组件罗列如下,根据系统环境选择释放:
表 2-1各功能组件
以下例举核心功能组件:
" bindsvc.exe "组件
该组件负责感染非系统盘和内网网络共享中的EXE程序,等待攻击目标携带传播进入隔离网络。感染结果跟上文中7Zip诱饵的文件结构一致,只是末尾的正常软件换成每次的感染对象。具体过程详见第3章。
"msfte.dll"组件
该组件区分32位和64位。攻击者将其内部命名为:"Ramsay"。
运行方式: "msfte.dll"在system32目录下能劫持系统服务"WSearch",被系统程序"SearchSystemHost.exe"以SYSTEM权限调用运行。
主要功能按导出函数分为DllEntryPoint(),AccessDebugTracer()和AccessRetailTracer():
2.1.1 导出函数:DllEntryPoint()
1. 获取本机硬件GUID。
2. 释放脚本"%APPDATA%\\Microsoft\\Word\\winword.vbs",从用户近期的Word文档中提取纯文本。
图 2-4从用户近期Word文档中提取文本
3. 窃取用户近期文件:
释放官方WinRAR程序,将用户近期文件的快捷方式加密打包:
%APPDATA%\\Microsoft\\Windows\\Recent\\*.lnk (近期用户访问过的文件的快捷方式)
打包密码为:PleaseTakeOut6031416!!@@##
4. 检查自身是否处于进程"HYON.exe"或"BON.exe"或"Cover.exe"中,对应为何软件尚未确定。攻击者还为"msfte.dll"组件起了内部名称:"Ramsay",内部版本为v8。
图 2-5 "msfte.dll"组件的内部名
5. 基于自定义的文件传输控制指令,参见第3章。
2.1.2 导出函数:AccessDebugTracer()和AccessRetailTrac