欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源:本站整理 作者:佚名 时间:2017-09-06 TAG: 我要投稿

近来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展现了其事情道理:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载