频道栏目
首页 > 安全 > 网络安全 > 正文

对MSOffice的新变种木马(毒藤)进行深入的研究

2017-09-08 09:19:20      个评论      
收藏   我要投稿

近来FortiGuard实验室研讨团队发觉Poison Ivy木马(毒藤)新变种开端在沾染的ppt文件中流传,Office利用(Word、Excel、PowerPoint、Works等)受此木马影响。咱们捕获到了一个名为Payment_Advice.ppsx的ppt文件,该文件为OOXML格局,一旦受害者利用office办公软件关上此文件,文件中的歹意代码就会履行,它会下载Poison Ivy歹意软件到受害者主机上运转。本文将具体论述该木马的沾染进程、利用的技巧和对受害者主机做了甚么。

PPT样本

图一是样本ppt关上时的截图。

\

图1 关上Payment_Advice.ppsx

可以或许看到,ppsx文件主动播放,后缀ppsx代表“PowerPointShow”,以演示形式关上,这容许歹意代码主动履行,弹出的正告信息框正告用户能够正在运转不安全的内部法式,提醒内容表示用户点击容许,让咱们看一下植入ppt文件中的歹意代码。OOXML文件是一种zip格局文件,解压此文件可以或许看到它的文件/文件夹布局以下。

\

图2 PPSX文件布局

进入.\ppt\slides\子目录下看到,slide1.xml是图1中主动展现的幻灯片,.\_rels\slide1.xml.rels文件是干系文件,界说了slide1.xml用到的资本,在slide1.xml文件中有以下xml代码:

\

这个a标签意味着用户鼠标挪动到此元素时,会触发slide1.xml.rels中名为“rld2”的代码,图3展现了它们以前的干系:

\

图3 rld2中的代码

参加到启动组

rld2中的代码利用了cmd.exe敕令来输入vbs代码到开端菜单->Startup文件夹的Thumbs.vbs文件,如许受害者主机启动时Thumbs.vbs文件就会履行。

\

图4 开端文件夹中的Thumb.vbs文件及内容

下载文件

Thumb.vbs从hxxp://203.248.116.182/images/Thumbs.bmp下载了一个文件并经由进程msiexec.exe履行,msiexec.exe是微软装置法式,也是.MSI文件的默许句柄,Msiexec.exe可被用来装置/卸载/更新windows软件。MSI文件是包括一个PE文件的装置包,这个PE在msiexec.exe加载它时履行,该PE文件可以或许被歹意软件替换来绕过反病毒软件的检测。咱们也发明,越来越多歹意软件作者开端利用此办法运转他们的歹意软件,MSI文件在微软OLE复合文件格局中,用DocFile浏览器可以或许看到下载的Thumbs.bmp文件内容。

\

图5下载的Thumb.bmp文件内容

接下来从流中提取PE文件到一个文件中,利用PE阐发工具发明它是一个64位的.Net法式,这意味着该歹意软件只会沾染64位Windows体系。

阐发运转.Net代码

将提取的这个文件加载到dnSpy以后可以或许看到进口函数Main(),如图6:

\

图6 主函数

主函数挪用了rGHDcvkN.Exec()函数,该函数领有一个大数组,数组中的数据实在便是要被新创立的线程作为线程函数履行的代码,图7 展现了数组中的代码履行进程。

\

图7 .Net法式在大数组中运转一个线程来履行代码

假如代码运转在64位体系IntPtr.Size值便是8,大数组被赋值给array3数组,随后挪用rGHDcvkN.VirtualAlloc()来分派内存缓冲区,再挪用Marshal.Copy()函数从array3复制代码到新分派的内存,末了挪用rGHDcvkN.CreateThread()函数运转代码。在调试器中启动此.Net法式,给CreateThread API下了断点来阐发数组中的代码履行时会做甚么,每一次阐发数组代码都是一次加载进程,重要目标是从内存空间静态加载歹意软件代码到新分派的内存缓冲区,而后依据新基地点修复重定位成绩并修改代码主体的API偏移,末了才挪用主体代码的进口函数。

反阐发技巧

1、 一切API都是暗藏的,获得挪历时才规复,以下代码片断是暗藏的CreateRemoteThread的挪用。

sub_1B0E6122proc near

mov rax, 0FFFFFFFF88E23B10h

neg rax

jmp rax ;; CreateRemoteThread

sub_1B0E6122endp

2、 一切字符串均颠末加密,利用前才解密,好比以下是加密的ntdll字符串:

unk_1AFD538C db 54h, 0B2h, 9Bh, 0F1h, 47h, 0Ch ; ==> "ntdll"

3、 运转一个线程(定名为ThreadFun6)来检测API能否设置了断点,假如设置了断点则会启用另一个线程来挪用TerminateProcess疾速参加以后进程,线程函数在以下模块中反省一切的API:“ntdll”, “kernel32”, “kernelbase” 和 “user32”,图8展现了其事情道理:

\

图8 在ntdll模块中反省API断点

4、 运转一个线程检测能否存在运转的阐发工具,经由进程创立特别定名的管道来实现。好比管道\\.\Regmon代表注册表监控工具RegMon,管道\\.\FileMon代表当地文件监控工具FileMon,另有管道\\.\NTICESoftIce等等。假如此中一个定名管道无奈创立,意味着此中的一个阐发工具正在运转,歹意代码就会很快停止进程。

5、 会经由进程检测一切运转的windows法式能否有包括特别字符的windows类名来断定有无运转中的阐发工具,好比WinDbgFrameClass是Windbg主windows类名,这类反省也是在线程中结束(定名为Threadfun3),下图9展现了该线程函数的事情进程。

\

图9 反省windows类名

6、 经由进程检测能否存在名为“Wireshark-is-running-{…}”的互斥工具(经由进程挪用OpenMutex函数)来采用反抓包手腕。

7、 经由进程挪用“IsDebuggerPresent”这个API来检测进程能否运转在调试器中(前往1),这是一种反调试检测,也会挪用IsDebuggerPresent来检测履行光阴,假如超过了1000毫秒,阐明进程是在调试器中或虚构机中运转的就会参加进程。

以上这些都是该歹意软件采用的反阐发技巧,这些检测大部门都是在线程中每秒结束一次,任何一次婚配的检测都邑招致歹意软件进程结束。为了继承阐发该歹意软件,起首必要绕过这些检测,这可以或许经由进程静态调试的办法来实现,好比,转变IsDebuggerPresent的前往值为0来绕过“能否在调试器中运转”的检测。

从解密字符串中天生把戏字符串

解密3组字符串并合在一起获得一个把戏字符串”Poison IvyC++”,该字符串存储在全局变量qword_1B0E4A10中,从以下代码片断中可以或许看到这个把戏字符串的发生进程。

\

图10 发生把戏字符串

在6个分歧模块中暗藏症结功效

该歹意软件从加密数据中加载了几个模块,创立了一个双链接列表并保留和治理这些加载的模块,来自这些模块的导出函数实现了歹意软件的重要功效,这类办法给静态调试带来了挑衅,变量qword_1AFE45D0保留双链接列表头部,每个列表中的工具有以下布局:

+00H pointer to previous object in the list

+08H pointer to next object in the list

+18H for Critical Section object use

+28H the base address of the module this object isrelated to

+30H pointer to export function table

歹意软件随后一一解密并解压这6个模块,并增加他们到双链接列表中,图11展现了从这6个模块中解密的一个代码片断。

\

图11解密解压模块

每个模块都有一个初始化函数,该函数在模块实现解密和解压时被挪用,此中3个模块有类似于上文描写的反阐发才能,为了继承阐发此歹意代码,必要窜改代码来绕过检测函数。随后挪用这些模块的导出函数,从unk_1AFE3DA0处的缓冲区解密设置装备摆设数据,此设置装备摆设数据在进程运转时代被解密屡次,告诉歹意代码若何事情,下文会具体论述设置装备摆设数据。

歹意软件从设置装备摆设数据中提取一个字符串“%windir%\system32\svchost.exe”,随后挪用CreatProcess来运转svchost.exe,从歹意代码运转内存中注入代码和数据到新创立的svchost.exe中,末了挪用注入代码并参加以后运转的进程,歹意代码后续的事情在svchost.exe中实现。

SVCHOST.exe

注入的代码和数据是全部歹意软件的焦点,在svchost.exe进程中重新开端,以前发生的每一步会在svchost.exe中反复结束,好比履行反阐发检测代码,获得把戏字符串,创立双链接列表,解密模块并参加到双链接列表等。

在履行模块2的01736C2 cmp dword ptr [rdi+0Ch]指令时会抉择分歧的代码分支,[rdi+0ch]是一个标记位,会在代码初始化实现时通报,标记位值为0时运转svchost.exe并注入代码,标记位值为1时衔接C&C办事器,标记位在svchost.exe注入代码履行前被置为1,图12展现了代码分支逻辑。

\

图12 代码分支片断

从PasteBin获得C&C办事器信息

C&C办事器的IP地点和端口被加密保留在PasteBin网站中,PasteBin是文本代码分享网站,注册用户可以或许粘贴文本代码并分享给其他人,歹意代码作者创立了4个如许的页面并在页面参加了C&C办事器IP和端口信息,还记得先前提到的加密设置装备摆设数据吗?它包括4个PasteBin 的URL,分别是:

hxxps://pastebin.com/Xhpmhhuy

hxxps://pastebin.com/m3TPwxQs

hxxps://pastebin.com/D8A2azM8

hxxps://pastebin.com/KQAxvdvJ

图13展现了解密的设置装备摆设数据。

\

图13 解密的设置装备摆设数据

拜访此中任何一个URL会看到Python代码,加密的办事器IP地点和端口被暗藏在python代码中,检查主函数有以下代码:

win32serviceutil.HandleCommandLine({65YbRI+gEtvlZpo0qw6CrNdWDoev})

花括号中的数据是加密IP和端口信息,图14是具体信息。

\

图14 PasteBin中加密的C&C办事器IP和端口

解密后的内容见图15,

\

图15 解密的IP地点和端口

从图15可以或许肯定解密的C&C办事器IP是172.104.100.53,端口是1BBH也便是443端口。必要留意的是4个页面中的IP和端口都是不一样的,该歹意软件的作者经由进程简略更新4个PasteBin页面中的python代码就可以或许更新这些IP地点和端口信息。

与C&C办事器通讯

该歹意软件获获得IP和端口信息后就会提议衔接并发送数据到C&C办事器,它和办事器之间传输的一切数据包都颠末公有算法加密,数据包布局就像如许(前14H字节是头部部门,14H今后是数据部门):

+00 4 bytesare a key for encryption or decryption.

+04 4 byte,are the packet command.

+0c 4 bytes isthe length in bytes of the data portion of the packet.

+14 4 bytes.From this point on is the real data.

与办事器树立衔接以后,会发送30001指令,办事器经由进程30003指令应对,30003指令哀求客户端网络受害者主机信息,一旦歹意软件收到此指令,就会挪用大批API来网络主机信息。

a) 挪用GlobalmemoryStatusEx网络体系物理内存和虚构内存的以后利用环境

b)从体系注册表“HKLM\HARDWARE\DESCRIPTION\SYSTEM\CENTRALPROCESSOR\0\~MHz”中获得CPU速率信息

c) 挪用GetDiskFreeSpaceExA获得一切分区的余暇磁盘空间

d)挪用GetNativeSysstemInfo获得CPU架构

e) 挪用EnumDisplaySetting获得表现设置

f) 从kernel32.dll网络文件信息

g)挪用GetComputerName和GetUserName获得以后盘算机名和用户名

h) 挪用GetSystemTime获得体系光阴,挪用GetVersionEx获得体系版本信息

i) 末了从解密的设置装备摆设数据中复制svchost.exe的完备门路和常量字符串PasteBin83(见图13)

图16可以或许看到网络到的未加密体系信息,图17展现了要被发往C&C办事器的加密数据,前四个字节用来加密或解密以下数据:

\

图16 从受害者主机网络的信息

\

图17 加密的受害者主机信息

阐发发明,歹意软件连续从PasteBin获得C&C办事器IP并坚持与C&C办事器的轮回通讯(经由进程Sleep(1000)挂起履行)。到目前为止,只发明指令“030001” 和 “030003”被利用过,后续会连续监控和阐发该歹意软件的行动来看它还会做甚么。

办理办法

FortiGuard反病毒办事曾经可以或许辨认”Payment_Advice.ppsx”文件为MSOFFICE/PoisonIvy.A!tr.dldr病毒,辨认”Thumbs.bmp”为MSOFFICE/PoisonIvy.A!tr病毒。

IOC

URL:

hxxp://203.248.116.182/images/Thumbs.bmp

样本SHA-256哈希:

Payment_Advice.ppsx

E7931270A89035125E6E6655C04FEE00798C4C2D15846947E41DF6BBA36C75AE

Thumbs.bmp

A3E8ECF21D2A8046D385160CA7E291390E3C962A7107B06D338C357002D2C2D9

上一篇:Struts2 S2-052(CVE-2017-9805)远程代码执行漏洞bug研究
下一篇:针对相册类型木马的专题研究
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站