查看原文
其他

浅析一个海莲花样本

1行 看雪学苑 2022-07-01

本文为看雪论坛优秀文章

看雪论坛作者ID:1行


  •   
    目录

    前言

  • 执行流程

  • 详细分析

  •     样本概括

  •     wwlib.dll

  •     第一段 shellcode

  •     第二段 shellcode

  •     第三段 shellcode

    总结





前言


很早之前就对APT组织的攻击方式感兴趣,因为他们的传播方式、隐藏方式、攻击方式都让人眼界大开,也可以拓展分析思路的。所以就找了一个海莲花的样本来尝试分析,收获满满。




执行流程


利用微软白文件加载恶意wwlib.dll文件,释放出隐藏的doc文件,并在内存中释放出3段shellcode,最后获取恶意程序的链接并下载。 





详细分析


样本概括


EXE文件是带有微软签名的合法 word 程序,攻击者通过该程序加载恶意的 wwlib.dll 文件来释放 shellcode 进行攻击。 

 dll文件是隐藏的恶意文件。 


wwlib.dll


exe文件调用dll,所以可以在 Loadlibrary 函数处下断点,来等待加载。  

继续运行之后会释放doc文件并运行。  

申请空间来存放第一次的shellcode,通过xor异或解密之后再存放。  第一段 shellcode 是在这里之后转到的:  


第一段 shellcode


从一个巨大的字符串数组中循环取出字符串后,经过解密算法来算出需要的函数字符串名称,如LoadlibraryA、VirtualAllocEx等。    解密 VirtualAllocEx 之后,申请空间来存放新的 shellcode: 


第二段 shellcode


解密shellcode之后,会调用第二段shellcode。  使用极其耗费时间的大循环来解密字符串,防沙箱等检测工具。  解密出 calloc 之后,申请空间:  复制数据到申请的空间中:  获取网关信息:  第三段 shellcode 使用动态提取的方式来获取 CryptAcquireContextA、CryptCreateHash、CryptHashData、CryptDeriveKey,并通过这些函数来保证CryptDecrypt函数的正常运行。  创建空间,存放第三段 shellcode: 通过 CryptDecrypt 解密函数,每次解密出shellcode的16位数据:   将解密出的数据复制到申请的空间中: 


第三段 shellcode


以创建进程的方式运行第三段 shellcode: 

在第3段 shellcode 中,会将要连接的url复制到特定内存中,连接url:   由于C2早已掉线,无法连接,这次的分析也就只能到这里了,估计下载的是一个EXE,想来应该是个具有窃密,回传信息的恶意程序。 





总结


分析了这个样本感觉收获很多,首先是对白加黑的投递方式有了更深的理解,其次是对shellcode内存荷载的多阶段释放印象深刻。 对于海莲花这种靠后梯队的APT组织来说,他所投递的样本相对高梯队的APT组织投递的样本,分析难度还是较低,至少有迹可循。 样本IOC:
SHA256 - c0ea37db94aa0d747ece7f46afcf90e43fb22c06731f291f0b2ba189d4326e33.rar

https://app.any.run/tasks/b3205da7-8c88-4375-bc87-ffbb985f01b8

- End -



看雪ID:1行

https://bbs.pediy.com/user-home-860119.htm

  *本文由看雪论坛 1行 原创,转载请注明来自看雪社区。



2.5折优惠票数量有限,先到先得哦!

推荐文章++++

* 反汇编代码还原之特殊除法还原

* CVE-2009-0927POC分析

* 远控木马白加黑劫持 dll反射注入分析

* 使用Qiling IDA插件解密Mirai病毒数据

* CVE-2019-15666 xfrm_policy 提权漏洞







公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



求分享

求点赞

求在看


“阅读原文”一起来充电吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存