CVE-2017-0199漏洞利用样本分析

本帖最后由 hjm666 于 2019-10-22 17:19 编辑

CVE-2017-0199漏洞利用样本分析



        一路成长路上总要留下点什么。

样本信息

md5 :0087AA25E20070186AC171BE6C528DA6
文件大小:31752 字节(31kb)
文件类型:PDF


        样本初始文件是由PDF文件伪装,在其PDF数据流段中隐藏了,一个word文件,且在其PDF中隐藏了一段JS代码,当PDF被打开后,JS代码会被执行随后,会调用计算机默认打开word文件的软件打开该word文件,随后如果计算机默认关联打开word文件的软件是该漏洞版本内的office,会默认执行下载word中的恶意链接。

   用PDFstreamDumper 查看该PDF的各个段数据,这是内嵌数据流段的Word文件

1.png




隐藏的JS代码,该代码使用exportDataObject函数导出该word文件,执行后让计算机打开该wrod文件

2.png




     简述一下 CVE-2017-0199 漏洞原理 :漏洞利用office OLE对象链接技术,将恶意链接包裹至文档内,文档被打开后该恶意链接能被执行。


将word文件转存下来后,解压下来在  word\_rels文件夹的document.xml.rels文件中找到了该word携带的恶意链接地址。

3.png

攻击载荷

文件md5 :AAFD0EBFE1AFBCAE1834430FEEBD5A31
文件类型:BinExecute/Microsoft.EXE[:X86]
时间戳:2013-5-19 23:53:57
是否加壳:无壳
编译语言:nsis打包程序


样本描述;
           该样本为NSIS的打包程序,运行该样本后,样本会陆续调用其资源文件中 [collages.dll Corticoid.cab System.dll] (其中System.dl为无害),随后调用LoadLibraryExA函数加载System.dllSystem.dll 会继续调用collages.dll地址并调用LoadLibraryA函数加载collages.dll, collages.dll会对Corticoid.cab压缩文件进行解密操作将样本的核心shellcode解密出来,随后collages.dll会进程注入技术,创建一个子傀儡进程,将解密出的shellcode数据,注入进子进程中并执行shellcode,以达到伪装目的执行恶意代码。
发现其是nsis 打包后的软件后,用7-zip进行解压,可看到其相关资源文件。该cab文件是一个损坏文件,cab压缩文件大小及其文件类型及其可疑是shellcode


资源文件

4.png

5.png

加载资源文件,一开始分析了这两个dll,没有发现什么恶意行为代码,把注意力放在了cab文件中,在打包程序中转了好久,(忽略了collages.dll 中大量的指针函数利用导致浪费了大量时间)

6.png

7.png

进入collages.dll 后,该dll会进行大量的进程遍历,多次循环用来延迟杀毒软件分析时间

8.png

读取cab文件

9.png

获取解密函数对资源段中的cab文件进行解密,解密出shellcode

10.png

解密出来的shellcode

17.png

创建子进程,准备进行注入shellcode

11.png

Process Hollowing 进程注入后任务栏中会出现一个同名子进程,看起来是正常的,这种技术可以对运行中的进程进行动态修改,并且整个过程既不用挂起进程    步骤简述:创建一个挂起的进程,卸载它原来的模块,写入恶意数据,进行恢复线程详解见看雪:https://bbs.pediy.com/thread-224706.htm

  进行注入前准备工作

12.png

从解密出的cab压缩数据中的shellcode截取出注入新线程

15.png

注入完成后,该dll 分别利用了SetThreadContext 设置子进程的入口,ResumeThread创建一个挂起的线程,至此该shellcode以及执行

16.png

    子进程挂起后想要进行相关调试的话,需要在刚创建子进程时对子进程进行附加,此时OD要设置在新模块载入是断下,即可断下,父进程也能正常进行调试,然后根据SetThreadContext设置的入口偏移地址断点。 个人没有在ResumeThread之后没有让子进程停在入口处,以及不能进行正常调试。       最后捡起了,在还没有进行注入前解密出来时dump下来的 shellcode 进行调试以及分析 (至于为什么这个时候dump下来,当时dump下来以为是400多个函数,20几个API以为IAT,dump过不知道多少次,浪费了很多时间···)

shellcode分析

功能描述     
      运行该shellcode 后,该shellcode会通过读取特定的一些注册表键值,盗取用户个人的浏览器等敏感数据,以及盗取用户FTP等敏感信息,还在特定目录中遍历相关文件,获取用户计算机中所安装的相关软件,利用注册表键值以及各敏感文件获取到用户的数据后,会对数据进行md5加密,并将加密后的数据向目标服务器发送,与此同时还会在用户本地创建隐藏目录,并将自身数据拷贝随机命名,同时设置为隐藏文件,潜伏在用户目录中。
简单流程

1.png

    查找文件,获取相关注册键值内容

2.png

3.png

4.png

5.png

6.png

7.png

8.png

10.png

获取了与FTP相关的还有:
file:C:\Users\test\AppData\Roaming\FileZilla\recentservers.xml
file: C:\Users\test\AppData\Roaming\Far Manager\Profile\PluginsData\42E4AEB1-A230-44F4-B33C-F195BB654931.db
file: C:\ProgramFiles(x86)\FTPGetter\Profile\servers.xml
file:C:\Users\test\AppData\Roaming\FTPGetter\servers.xml
file:C:\Users\test\AppData\Roaming\Estsoft\ALFTP\ESTdb2.dat
key: HKEY_CURRENT_USER\Software\Far\Plugins\FTP\Hosts
key:HKEY_CURRENT_USER\Software\Far2\Plugins\FTP\Hosts
key: HKEY_CURRENT_USER\Software\Ghisler\TotalCommander
key: HKEY_CURRENT_USER\Software\LinasFTP\SiteManager

获取的浏览器敏感文件有:

file: C:\Users\test\AppData\Roaming\Mozilla\Firefox\Profiles\i072kp8z.default-1494515848972\secmod.db
file:C:\Users\test\AppData\Local\Google\Chrome\User Data\Default\Login Data
file:C:\Users\test\AppData\Roaming\Mozilla\Firefox\Profiles\i072kp8z.default-1494515848972\cert8.db
file: C:\Users\test\AppData\Roaming\Mozilla\Firefox\Profiles\i072kp8z.default-1494515848972\key3.db
file:C:\Users\test\AppData\Roaming\Mozilla\Firefox\Profiles\i072kp8z.default-1494515848972\signons.sqlite
file:C:\Users\test\AppData\Roaming\Mozilla\Firefox\profiles.ini


同时也获取本地文件路径创建隐藏文件夹

11.png

收集相关文件后开始处理数据向目标服务器发送数据
测试目标服务器

12.png

构建请求头

13.png

数据进行发送

14.png

将自身数据替换

15.png

替换后的隐藏文件程序

16.png

   如有错误,还望指正,谢谢!

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称