概述

海莲花(OceanLotus)是一个据称越南背景的 APT 组织,其攻击活动最早可追溯到 2012 年 4 月,攻击目标包括中国海事机构、 海域建设部门、科研院所和航运企业,后扩展到几乎所有重要的组织机构,并持续活跃至今。

样本分析

压缩包诱饵

原始诱饵压缩包文件名为Adobe_Flash_Install.rar,其中包含了一个正常的Flash_Adobe_Install.exe和一个含有恶意代码的goopdate.dll,这是海莲花惯用的白加黑攻击方式。
image.png
其中goopdate.dll原本是Google开发的正常dll
image.png

这里是很简单的应用了dll劫持的技术加载恶意的goopdate.dll。

恶意dll分析

加载Flash_Adobe_Install.exe之后对LoadLibrary下断,很容易就定位到加载goopdate.dll的地址
image.png

跟进去,到达goopdate代码空间,LoadLibrary 进入到laod的dll的地址: 76f3992d
image.png

代码比较简单,关键函数在40D7处:
image.png

GetProcessHeap获取调用进程的堆句柄
image.png

解密shellcode,之后跳转到shellcode执行:
image.png

shellcode带了一定程度的混淆:
image.png

首先通过VirtualAlloc分配内存空间:
image.png

大循环解密:
image.png

创建一个新线程,执行解密出来的shellcode:
image.png

新线程代码结构和刚才的结构很相似
image.png

获取基本信息,然后加密:
image.png

继续创建并解密一段内存作为另一个新线程执行
image.png

该线程主要是用于网络请求:
image.png

请求协议头为:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
image.png

请求地址为:
https://summerevent.webhop.net/f2jZ

接着利用InternetCrackUrl将地址分解
image.png

连接summerevent.webhop.net,并通过get方式请求/f2jZ
image.png

如果请求成功,将会分别通过calloc和VirtualAlloc分配内存空间
image.png

然后通过InternetReadFile从服务器下载文件
image.png

成功的话则会将服务器返回值拷贝到刚才分配的内存中
image.png

如果下载并赋值成功,则会call到新内存中执行,并且Free掉之前的内存
image.png