某黑客组织针对越南的一次攻击

阅读量867255

|评论7

|

发布时间 : 2019-10-30 11:00:49

 

0x1 概述

2018年8月,Sebdraven在他的博客上披露了一起某黑客组织针对越南的攻击事件,本次攻击仍然使用的是office公式编辑器漏洞CVE-2017-11882。然后通过傀儡进程技术释放dll文件和一个带有签名的文件,并使用白加黑的dll加载机制进行恶意代码的加载,然后通过代码注入的方式实现无文件的攻击。所使用到的负载为Plugx。

Sebdraven在他的博客分析了本次攻击的前一部分。本文将重点分析shellcode利用,为了全文连贯性也将描述前部分的利用。全文分析仅代表个人立场,与任何公司或者组织无关。需要强调的是这次攻击可能发生在2018年上半年。本次分析在2019年9月份。

 

0x2 攻击链分析

 

0x3 样本分析

通过rtfobj.py发现Ole对象中存在8.t这样的特殊文件名,而且释放的位置很可疑,位于%temp目录下,当我们查看他的时候,却发现文件是被加密过的。

通过对CVE-2017-11882的分析,此漏洞的溢出位于411658的位置,属于栈溢出漏洞,使用映像劫持的方法挂上od调试,然后单步跳转到shellcode入口点。jmp ecx过后就是真正的shellcode所在了。在上一篇文章中,我们也说到了,公式编辑微软很少进行更新,能够有效的被利用,也是很多在野样本系统次漏洞的原因,与此相同的是CVE-2012-0158和CVE-2018-0802都是诸多APT所钟爱的漏洞。

通过对shellcode的分析,发现shellcode首先会利用Ldr获取相关模块如Kernel32的基地址,然后通过导出表获取相关API函数的地址,在分析中,我们发现,主要会获取如下的API地址。

GetProActive
GetTempPathA
ReadFile
GetFileSize
VirtualAlloc
GetThreadContext
ReadProcessMemory
VirtualQueryEx
VirtualProtect
VirtualAllocEx
WriteProcessMemory
SetThreadContext
ZwUnmapviewOfSection
![mark](http://hacky.wang/blog/20191019/B7P4RqXSjsx6.jpg?imageslim)
![mark](http://hacky.wang/blog/20191019/YXeq5BnwNXjs.jpg?imageslim)

显然,这像是一些进程替换技术所使用到的API函数。首先,shellcode会读取%tmp/8.t到内存,然后使用异或解密的方式解密成合乎规范的PE文件。

然后在利用VirtualProtect,WriteProcessMemory,SetThreadContext等函数注入EQNEDT32.exe进程。

通过转储注入到EQNEDT32.exe进程的PE文件8.t,并对其分析,我们发现8.t的逻辑很简单,就是在C:UsershackyAppDataRoamingMicrosoftWindowsNetwork Shortcuts下写入RasTls.dll和dascgosrky.exe,然后通过WinExec执行dascgosrky.exe,之后就退出,效果如三图

通过进一步的分析,我们发现,dascgosrky.exe是一个具有数字签名的正常文件,同时RasTls.dll是一个系统文件,

通过比较,我们发现差异存在于RasTls.dll文件上,下图,右侧是正常文件的导出信息,存在多个导出函数,右侧是恶意的RasTls.dll文件,只有一个DllEntryPoint函数。

在恶意的RasTls.dll中我们发现了一个有趣的现象,RasTls.dll先将自身复制到了堆区,然后修正自身的重定位信息,最后调转到重定位之前为72E314A0的地址。

在此地址处,我们发现首先调用FreeLibrary函数释放了dll模块,说明这个模块也可能只是一个壳子而已。 然后创建一个线程

我们发现样本通过在注册表SOFTWAREMicrosoftWindowsCurrentVersionRun下写入名为difxapi32的值实现了驻留,接着通过相同的方式入侵了dllhost.exe进程,并将shellcode写入进程中。

我们使用winhex将提取到的shellcode转化成C的格式,然后通过编程实现一个shellcode加载的环节,用于shellcode本身是地址无关的,所以我们无需担心内存地址冲突的问题

 

0x4 shellcode分析

样本只采用了一段shellcode,但是中间,分别利用VirtualAlloc开辟不同的内存,然后执行。每段开辟的堆区地址不同,为了方便描述,顾将shellcode分为多段。具体如下

通过对shellcode调试分析,我们发现shellcode也同样获取了Kernel32的基地址,然后获取GetProcAddress地址,然后利用明文的方式调用GetProcAddress获取可定的函数地址。

LoadLibrary
VirtualAlloc
FreeLibrary
Sleep
GetLastError
CreateMutex

如下

然后开辟一堆内容,然后将其地址传入sub_42179C中,解密shellcode

接着循环获取特定的API函数地址,并保存在一个全局数组中,以便后续的shellcode能直接使用,然后执行经过解密的shellcode

综上,第一段shellcode的作用只是初始化某些特定的API函数,共后续的调用,然后解密第二段shellcode。

第二段shellcode在线程中执行主要的操作,先创建了名为”{EA917329-DE48-4CC3-B4EF-2FFC9E18C6C7}”通过互斥来判断是否多开。然后将自身保存的数据复制到开辟的堆上,然后异或解密直接复制到堆中的数据,然后执行第三段shellcode。

第二段shellcode的作用是通过互斥方防止多开,然后xor解密下一段(第三段)的shellcode,并执行。

第三段shellcode里面存在大量的花指令,如下

我们发现第四段shellcode是另外一段内存空间,对VirtualAlloc下断。发现开辟了Size = 0x24A0000,地址为490000的内存区域,用于存放下一段shellcode

首先将58h,56h两个字节复制到开辟的堆区中。ascii编码为’XV’,这是日后定性的条件之一。然后循环复制一段数据到新的内容空间4C1000

接着,程序修复IAT,可以看到程序会依次获取Kernel32,User32,AdvApi32等基地址,然后利用GetProcAddress获取指定的API函数地址,然后将这些函数地址保存到指定的地址如4DF000,然后跳转到下一段Shellcode

在第四段shellcode中,首先会获取自身的进程名称,然后与C:ProgramDatagZwJElkSUikCYKmoic.exe比较,如果不相同的话就创建名为Globalkhlodtrlpaoefmt互斥体,其中khlodtrlpaoefmt和gZwJElkSUikCYK字符串都是可以确定样本家族的特征。

读取C:ProgramDatagZwJElkSUikCYKsjzvwqwujwead文件,如果不存在创建一个

在进程缓冲区中发现如下局域网地址和对应的掩码,而这些地址都是本地局域网相关的ip配置。可以推断sjzvwqwujwead文件可能保存的是加密之后的本地信息,然后通过读写C:UsershackyAppDataLocalMicrosoftWindowsTemporary Internet FilesContent.IE5index.dat,用来获取用户浏览记录并把其加密存储在sjzvwqwujwead文件中。创建并设置隐藏属性C:ProgramDatagZwJElkSUikCYKqucvctgvdtmfcwo,同时修改时间为2010.11.21

本地ip:192.168.76.130
255.255.255.0
默认网关:192.168.276.2
255.255.255.255
DHCP:192.168.76.254
DNS:192.168.76.2

如下

之后连接WOUDERFULU.impresstravel.ga,并发送加密之后的数据。然后尝试链接27.0.0.1

样本的功能远不止这些,因为我在分析shellcode中,发现了一些常见且很敏感的API函数,这里记录了其中的一些

通过检查之前提到的特定的字符例如XV,khlodtrlpaoefmtgZwJElkSUikCYK,我们将此次攻击的载荷确定为Plugx。

本次攻击发生在2018年,C2的信息以及发生更改,没有办法获取到链接C2后具体的行为,但是我们根据一些特定的API函数推测出一些可能的行为

  • 创建服务实现驻留
  • 枚举服务,包括删除,更改服务的属性
  • 枚举进程信息,包括模块信息
  • 截图
  • 捕获键盘记录信息
  • 获取计算机系统,物理,用户信息
  • 关闭/注销/重启计算机
  • 还有一些网络攻击的行为,获取DNS,Mib等信息
  • 具体行为如下:https://www.4hou.com/technology/10394.html

 

0x5 关联分析

  • 之前,我们说过本次共计的时间是在2018年,通过使用微步云沙箱查询域名解析相关信息,发现该域名在2018年绑定的是192[.]99.181.14。并且通过关联,发现一共有有多个域名曾经绑定在该IP上。
  • 接着我们查询192.99.181.14的关联信息,发现一共有5个域名同时解析到该IP上,分别是
    coco.sodexoa.com
    cat.toonganuh.com
    new.sggpnews.com
    wouderfulu.impresstravel.ga
    sz-00001935.rn-20404151.id-00000001.v0.tun.vpnoverdns.com
    

  • 并且在关联到的域名cat.toonganuh.com下发现了注册人信息florence1972@scryptmail.com,然后在sz-00001935.rn-20404151.id-00000001.v0.tun.vpnoverdns.com域名下同样的发现了注册人的信息,这次出现的账号是ab83c8cce420a01d52a100088385c27c-88140@contact.gandi.net

 

0x6 参考链接

本文由HaCky原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/189711

安全客 - 有思想的安全新媒体

分享到:微信
+16赞
收藏
HaCky
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66