Loading... **wwlib白利用样本分析** ##### 一、基本信息 "海莲花"(又名APT32、OceanLotus),被认为是来自越南的APT攻击组织,自2012年活跃以来,一直针对中国大陆的敏感目标进行攻击活动,是近几年来针对中国大陆进行攻击活动最活跃的APT攻击组织,甚至没有之一。 **MD5:3fae1d5f25020829edbb5e95cc7f7836** 原始文件为压缩包,压缩包诱饵名称为越南语:Hóa đơn tiền nợ.zip,译为:债务单.zip。 根据vt可知为wwlib白利用的类型: ![image.png](http://47.117.131.13/usr/uploads/2021/08/463891998.png) ##### 二、样本介绍 ###### 1.概述 样本为一个压缩包,通过白加黑的方式启动恶意组件。 ###### 2.主要行为简述 此样本属于OceanLotus标准的一套加载流程 * 诱饵为压缩包,通过白加黑的方式启动恶意组件; * 恶意组件加载之后释放并打开doc文件以此迷惑用户; * 解密第二阶段shellcode; * 第二阶段shellcode再次解密得到第三阶段shellcode; * 第三阶段shellcode为Downloader,会从指定C2下载后续到本地加载执行; * 下载的payload应该是由CS生成。 ##### 三、动态分析 白exe创建WinWord.exe进程,打开文档office.doc: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1693999945.png) 启动后加载恶意文件wwlib.dll: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2477349647.png) 白exe创建并写了office.doc: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2746876543.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/2509316780.png) ##### 四、详细分析 白exe加载wwlib.dll的时候,会调用一个名为FMain的导出函数,主要的恶意功能实现函数: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2281482205.png) 创建文件C:\Users\john\AppData\Local\Temp\Office.doc,写入自定义数据,并打开它。该文件无害,主要用来伪装成正常的office文档打开事件。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/3182391550.png) 读取硬编码在data段中经过加密的shellcode,并通过自定义解密方法解码: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2405953953.png) 将解码后的shellcode复制到申请的内容,执行: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2291997651.png) 解码之后的shellcode如下: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3040036785.png) shellcode中为遍历导出表操作,必然要获取并调用某些API,在调试时注意跳转和call即可(参照IDA中的代码,对每一个call下断点)。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/4029172475.png) 调用VirtualAlloc申请A20h的空间: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1651119017.png) shellcode二次解密自身并拷贝到新开辟的内存中,创建线程执行新解密出来的shellcode: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1375414084.png) shellcode2和shellcode1的结构是很相似的,依然是遍历导出表,获取API并调用: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1256879237.png) 一样的在所有call处下断点。 加载Wininet.dll,准备建立链接: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3551350330.png) 申请大小为A00000h的内存空间: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1560207136.png) 解密出C2:"https://services.serveftp.net/YTHg",并尝试通过InternetConnetA建立连接。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/196060946.png) 查询该域名信息如下: ![image.png](http://47.117.131.13/usr/uploads/2021/08/26769114.png) 尝试从C2下载后续组件,根据请求路径可以推测后续是CobaltStrike的payload: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2524940309.png) 直接call下载回来的shellcode中执行(本机挂了FAKENET,所以返回值如下): ![image.png](http://47.117.131.13/usr/uploads/2021/08/3634745079.png) ##### 关联分析 根据上面样本的一些特征,找到了一批关联的样本,对**4ec8b946ab7ab70bc426f815d603fd2a**进行分析。 代码结构都很类似,根据上边的分析思路可对关键代码进行定位。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/3409532727.png) 解密算法和硬编码加密数据: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3203561782.png) 将解密后,大小为0x1A61的数据复制到新申请的内存: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1778813220.png) 第二阶段解密出来的shellcode结构和上边的也类似,都是在遍历导出表,获取关键函数,调用。一样的在call处下断: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3426339841.png) 申请内存空间,也是再次解密shellcode: ![image.png](http://47.117.131.13/usr/uploads/2021/08/276556631.png) 创建线程执行执行第三阶段shellcode: ![image.png](http://47.117.131.13/usr/uploads/2021/08/549987606.png) 还是获取关键函数并调用,在call处下断: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1696085564.png) 申请内存空间,size=908h,可能有三次解密: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3772377458.png) 创建线程,执行解密出来的第四阶段shellcode: ![image.png](http://47.117.131.13/usr/uploads/2021/08/4212876253.png) 遍历导出表,获取函数,调用,在call处下断: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1053926916.png) 加载wininet.dll,可能有通信: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1681319488.png) 解密出C&C:[https://let.viewdns.net/wbJ9] ![image.png](http://47.117.131.13/usr/uploads/2021/08/484515660.png) C&C已经不存在了,打开神器FakeNet-NG模拟C&C连接: ![image.png](http://47.117.131.13/usr/uploads/2021/08/266546800.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/1495700917.png) 申请内存空间: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3612649448.png) 下载数据: ![image.png](http://47.117.131.13/usr/uploads/2021/08/797050240.png) ##### 小结 ![image.png](http://47.117.131.13/usr/uploads/2021/08/3280812739.png) 上面分析的样本是基于wwlib.dll白利用的,样本加载之后主要是多层解密加载CobaltStrike的shellcode以对抗静态查杀。 参考:https://www.yuque.com/p1ut0/qtmgyx/vorys6#BapMu 最后修改:2021 年 08 月 19 日 02 : 29 PM © 允许规范转载