概述

海莲花(OceanLotus)是疑似有越南背景的APT组织,最早由奇安信威胁情报中心(前360天眼实验室)披露并命名。从2012年至今,九年来OceanLotus一直在积极对我国的海事机构、科研部门、航运部门、高校等发起网络攻击。海莲花本身样本的技术并不是特别高超,但是胜在他们团队高产,多年如一日,一直保持着超高的活跃度。

wwlib白利用样本分析

MD5:3fae1d5f25020829edbb5e95cc7f7836
原始样本为压缩包,压缩包诱饵名称为越南语:Hóa đơn tiền nợ.zip,译为:债务单.zip
根据vt可知又是wwlib白利用的类型
image.png

白exe加载wwlib.dll时候,会调用一个名为FMain的导出函数,恶意代码从这里开始执行:
image.png

在FMain中,程序首先会在tmp目录下创建一个office文件并打开以迷惑用户:
image.png

image.png

接着程序将会读取硬编码在data段中经过base64编码的shellcode并通过自定义base64方法解码
image.png

解码之后的shellcode如下:
image.png

shellcode的可读性不是很好,调试时注意跳转和call即可
image.png

shellcode二次解密自身并拷贝到新开辟的内存中
image.png

创建线程以执行新解密的shellcode
image.png
由于shellcode较短,所以可以对shellcode中所有的call设置断点,然后直接跑起来,也可以单步跟进。

加载Wininet.dll准备建立连接:
image.png

解密c2:hxxps[:]//services[.]serveftp.net/YTHg并尝试通过InternetOpen建立连接image.png

尝试从C2下载后续组件到本地执行,根据请求路径可以推测后续是CobaltStrike的payload
image.png

直接call到下载回来的shellcode中执行(本机挂了FAKENET,所以返回值如下)
image.png

关于C2的标签信息:https://ti.qianxin.com/v2/search?type=domain&value=services.serveftp.net
image.png

小结

此样本属于OceanLotus标准的一套加载流程

  1. 诱饵为压缩包,通过白加黑的方式启动恶意组件
  2. 恶意组件调起之后释放并打开docx以迷惑用户
  3. 解密第二阶段shellcode
  4. 第二阶段shellcode再次解密得到第三阶段shellcode
  5. 第三阶段shellcode为Downloader,会从指定C2下载后续到本地加载执行
  6. 下载的payload应该是由CS生成

此外,该C2最早2018年就已经出现过,一直沿用至今,攻击手法和18年时也大同小异,更新了部分代码,并没有做出太大的改动。

关联分析

根据上面样本的一些特征,笔者找到了一批关联的样本,先以4ec8b946ab7ab70bc426f815d603fd2a为例进行分析。
和上面分析的样本以一样,此样本也是wwlib.dll的白利用,通过FMain导出函数执行恶意代码,且两类样本较为相似,不同的是,上面分析的样本在SetErrorMode函数之后会通过一个call 释放诱饵以迷惑用户,关联到的这个样本没有此操作,而是直接执行后面的代码解密shellcode。
image.png

两个样本硬编码的base64字符串头部虽然一致,但是解码之后的大小和功能却大相径庭
image.png

解密出来的第二层shellcode功能和上面类似,均为解密第三层shellcode并创建线程加载
image.png

第三层shellcode继续解密
image.png

解密出第四层shellcode:
image.png

创建线程跳转到第四层shellcode执行:
image.png

第四层shellcode用于和C2:hxxp[:]//let[.]viewdns.net/wbJ9 通信:
image.png

尝试从C2下载后续到本地执行:
image.png

小结

样本1(新) 样本2(老)
首次上传VT时间 2021-03-11 2020-04-28
是否释放诱饵
解密层数 两层 三层
通信C2 services[.]serveftp.net let[.]viewdns.net
样本类型 下载者 下载者

Denis

上面分析的样本是基于wwlib.dll白利用的,样本加载之后主要是多层解密加载CobaltStrike的shellcode以对抗静态查杀,除了CobaltStrike,OceanLotus还有一款较为出名的远控特马:Denis。

以09718e52b99e4fa065b3785b700636f5样本为例,对该类样本进行一个概要分析。

原始样本类型为exe,但是根据其pdb路径信息:D:\Projects\WinRAR\sfx\build\sfxzip32\Release\sfxzip.pdb 可知该样本外层为自解压包,可直接尝试右键用7z之类的解压缩软件打开。
image.png

自解压包中内嵌了一个ocx的pe文件,样本的恶意代码从DllRegisterServer函数开始
image.png

首次运行时,程序会先创建SOFTWARE\Classes\CLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1} 这个注册表键值并写入Model项
image.png

写入键值如下
image.png

样本第二次运行时,读取该键值内容之后,将会删除该注册表键
image.png

读取资源1000项下面的1资源:
image.png

资源读取成功之后,程序将重新分配空间,将资源填充过去,然后call到该段shellcode中执行:
image.png

根据资源头部数据,可以看出来这是一个PE头,程序执行时会跳过这段代码执行,这里E8跳转的地址是固定的:0E0296
image.png

跳转过来之后可以看到这就是OceanLotus常用特马Denis
image.png

多次分配内存空间,填充数据后解密
image.png

解密完成得到一个PE文件,跳转到解密之后的shellcode中执行:
image.png

解密C2:cloud[.]360cn[.]info、dns[.]chinanews[.]network、aliexpresscn[.]net、chinaport[.]org并进行请求
image.png