海莲花组织(Oceanlotus)近期疫情攻击样本分析

发表于 2020-03-31  146 次阅读


文章目录

海莲花(OceanLotus),又称 APT32,2012 年 4 月至今,该境外组织对中国政府、科研院所、海事机构、海域建设、航运企业等相关重要领域展开了有组织、有计划、有针对性的长时间、不间断的攻击。

随着疫情在全球范围内爆发,越来越多的 APT 组织以疫情内容为诱饵发动攻击,国际上有 Kimsuky、Hades、APT28 等组织,国内在 2 月发现白象组织以疫情文件发起攻击,近期,我们又发现了海莲花以疫情内容作为诱饵攻击国内。

样本信息

文件名:

  • “冠状病毒实时更新:中国正在追踪来自湖北的旅行者.docx”
  • “湖南省家禽 H5N1 亚型高致病性禽流感疫情情况.docx”

详细分析

该样本使用了海莲花组织常用的白加黑攻击模式,白加黑组合是利用 WPS 加载 krpt.dll。WPS 为国内的文本编辑软件,可见这批样本的目标明确,但该恶意 dll 的导出函数并不是正确的导出函数,在真正的 krpt.dll 中并没有_force_link_krpt 这个导出函数。

首先在 DLL 的入口函数 DllEntryPoint 中,修改了宿主的代码,即修改 WPS.exe 的跳转,从而能够跳转执行恶意的导出函数_force_link_krpt。

在_force_link_krpt 中,首先从资源中获取二进制代码进行解密,该 Dll 包含两个资源,分别为 101、102,其中 101 为后续恶意功能的 shellcode,102 为诱饵文档。

首先解密出 102 的诱饵文档,将文档保存在临时目录%Temp%下,然后启动诱饵文档,然后就展现了开头的诱饵文档。

然后从 101 资源中读取 shellcode 并执行。

Shellcode 使用异或解密后续的代码,解密密钥为 0x4b196670 与每轮解密出的一个 DWORD 相加之和

然后尝试连接连接服务器,尝试从该服务器上下载一个 png 文件,同时将部分系统信息作为请求部分。下载地址为 https://libjs.inquirerjs.com/script/x.png?CH=[机器名]&UN=[用户名]&C=[系统版本号]

接收服务器的响应,如果服务器给与响应,就读取服务器响应数据,修改内存属性并执行服务器发送过来的 shellcode,根据以往经验,海莲花很喜欢下载 Cobalt StrikeBeacon 后门。

不管是否下载成功,都会执行后续加载 PE 部分,将自身的内存进行解密,申请内存空间展开为一个 PE 文件,这个 PE 为{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll,从名字上看这个是海莲花组织常用的 Denis 后门。

这种使用双重载荷的方法在 19 年末被发现使用,曾预测会在 20 年被频繁使用,这样做执行模式效率更高了。

接下来 shellcode 就直接调用{A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll 的导出函数,Denis 会读取资源文件,然后将资源进行解密。

由解密内容可知,主要包括 Unicode 字符串”ghijklmnopz”、注册表键值

"software\app\appX70162486c7554f7f80f481985d67586d\applicationz"
"software\app\appX70162486c7554f7f80f481985d67586d\DefaultIcon"

注册表键值用作存储第一次发包时从服务器获取的 UUID,解密内容还包括用于通信的C2 域名。之后发送上线信息,如果是首次连接,C&C 会返回 1 个 UUID 作为 Session ID,并保存到注册表项中。

然后,将随机数、系统时间、需要发送的系统信息,以及 UUID 整合到一起,经过加密后发送回 C&C 服务器。

如果接收到 C&C 指令,进入木马执行阶段,该木马主要具备以下功能:

MainCmd  Meaning

  • 0  收集系统信息
  • 1  设置会话 ID
  • 2  以 pipe 方式创建进程
  • 3  设置重连计数器
  • 4  推迟轮询时间
  • 5  读取文件或注册表键值,并计算哈希
  • 6  创建进程
  • 7  创建文件或注册表项
  • 8  写注册表
  • 9  查询注册表
  • 10  查询指定文件
  • 11  移动文件
  • 12  删除文件
  • 13  列出磁盘
  • 14  创建目录
  • 15  删除目录
  • 16  从指定位置读文件
  • 17  调用 httpprov 通信
  • 18  未知
  • 19  查询键值或执行文件
  • 20  设置环境变量
  • 21  执行 shellcode
  • 22  获取环境变量

至此简单总结,这种执行双重载荷的方法已经被熟练应用到海莲花的工具中,这次的样本相比于 19 年末有了些许的变化,说明组织一直在更新其工具。据以往经验,这类样本在今年还会多次发现。

而且,海莲花组织也紧随热点,将疫情文件作为诱饵发起攻击,所以,受到和疫情相关的邮件,特别是邮件为疫情、救灾、国家政策等主题并带有附件或链接的需要特别注意,谨防黑客攻击。

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。


帝都的一个苦逼攻城狮