apt28组织新的flash漏洞利用包dealerschoice分析
17号paloalto发布了文章dealerschoice-sofacys-flash-player-exploit-platform,文中提到apt28正在编写adobe flash player的利用工具包,遂将样本下下来分析了一番。
和之前很多的flash漏洞利用不同,这次apt28将自身的漏洞利用工具作为ole的一部分捆绑到rtf文件中,运行结果如下,可以看到运行之后,直接显示的是一个word文档,内容是关于俄罗斯的,看来这次是要搞老毛子咯。。。。。。
Rtf文件处理

直接通过officeMalScanner跑显示是一个rtf文档。

那就使用REFScan解包咯,结果是两个OLE。

解压之后发现这两个ole文件中有一个即为swf文件。

Swf分析
反编译之后,符合paloalto文中提到的Main,ExtSwf,ExtSwf1,ExtSwf2的结构

具体的main函数如下分别解密shellcode,和exp.swf。

获取flash版本,根据版本返回对应的exp。

直接在loadBytes前通过trace将解密的swf输出。

这个地方报错了,主要是一开始使用的flash版问题,此时使用的是flash10,使用18以上就没有问题了。

换成高版本flash之后,可以看到log记录下的swf文件。

反编译解密之后的swf文件,结果不论是as3,还是ffdec都出问题了,尤其是AS3中报的错为zlib解压失败,通常的swf文件是FWS和CWS两种格式,CWS是压缩格式,flash在运行的时候通过文件头的标记判断,如果是CWS格式,则从偏移0x8的位置开始通过zlib解压,这个地方报错的话,说明我们的log中的文件出了问题。


在010中跑模板之后,可以看到这个地方UncompressedSize的长度确实是有问题(太大了。。。。。)

Windbg dump
这样的话就只好通过调试,使用我自己编写的监控工具,可以看到flash运行起来后的函数调用,如下图所示,对flash漏洞熟悉的话,就会知道这个地方是CVE-2015-7645的利用代码。

直接在LoayBytes的jit函数下断点,运行之后断下。

此时内存中的解密之后的exp.swf,可直接dump。

漏洞exp.swf触发后使用的shellcode。

此时再反编译dump出的exp,可以看到,这是一个标准的CVE-2015-7645利用。

在利用代码里还可以看到apt28准备将该工具实现跨平台的野心。

漏洞触发之后,shellcode会解压出对应的nshwmpfs.dll,熟悉apt28的都知道,nshwmsf.dll是近年apt28组织漏洞触发之后用于常驻的木马,该木马改编自13年泄露源码的carberp木马,这也是paloalto将这个样本归属为apt28的有力证据。

之后会通过设置HKCU\Software\Microsoft\Office test\Special\Perf:来实现常驻自启动,这个键值会在用户打开office的时候实现该恶意dll的自动加载,和通常的开机加载有很大的区别,这样做的好处就是一般的沙盒无法直接跑这一类的样本,而这样的做法也是apt28在今年早些时候使用的一种技巧,这也是将样本归属为apt28的有力证据,

具体导致加载的dll为wwlib.dll,其会加载该键值下的dll,并调用该dll导出的函数_GetPerfhostHookVersion@0,_InitPerf,_PerfCodeMarker,_UnInitPerf,覆盖版本2007,2010,2013,2015,2016的word,ppt,excel,outlook,onenote。
当然在你的机器上可以通过创建HKCU\Software\Microsoft\Office test,并移除当前用户对此键值的写权限来避免此类攻击。
实际上该键值是微软开发时的一个类似调试使用的键值,正常安装的时候根本不会使用,结果被apt28使用了。。。。。。
目前来看apt28的该工具包还不够成熟,虽然使用的漏洞确实够了,但是对于样本的保护相比于成熟的exploitkit还有很大的差距,paloalto中提到的dealerschoice2,在该版本中将exp代码移到了服务端,但是具体还处于测试阶段,而这种做法也确实是很多成熟flash exploitkit使用的技巧,后期会持续关注这个exploitkit的成长。。。。。。。
参考自:http://researchcenter.paloaltonetworks.com/2016/10/unit42-dealerschoice-sofacys-flash-player-exploit-platform
apt28组织新的flash漏洞利用包dealerschoice分析的更多相关文章
- msf客户端渗透(二):PDF漏洞、恶意网站、flash漏洞、IE漏洞、java漏洞、android漏洞、VBScript感染payload
这个漏洞利用只在XP上有效 利用pdf漏洞利用payload exploit生成一个pdf文件 传到被攻击机上 启动msf侦听 exploit -j XP上双击运行这个pdf时,kali获取到一个sh ...
- SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议
SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议 实验环境: Kali msf以及wireshark Win7开启网络共享(SMB协议) 实验步骤: 1.查看本机数据库是否开启,发现数 ...
- Kali Linux渗透基础知识整理(三):漏洞利用
漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...
- LFI漏洞利用总结
主要涉及到的函数 include(),require().include_once(),require_once() magic_quotes_gpc().allow_url_fopen().allo ...
- FCKeditor漏洞利用
FCKeditor漏洞利用 查看编辑器版本 FCKeditor/_whatsnew.html fckeditor/editor/dialog/fck_about.html —————————————— ...
- ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
这个编辑器按脚本分主要有4个版本,ASP/ASPX/PHP/JSP 每个版本都有可以利用的漏洞.判断网站是否使用了eWebEditor查看程序源代码,看看源码中是否存在类似”ewebeditor.as ...
- Nmap备忘单:从探索到漏洞利用(Part 2)
这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...
- Nmap备忘单:从探索到漏洞利用 Part1
在侦查过程中,信息收集的初始阶段是扫描. 侦查是什么? 侦查是尽可能多的收集目标网络的信息.从黑客的角度来看,信息收集对攻击非常有帮助,一般来说可以收集到以下信息: 电子邮件.端口号.操作系统.运行的 ...
- LFI漏洞利用总结(转载)
主要涉及到的函数include(),require().include_once(),require_once()magic_quotes_gpc().allow_url_fopen().allow_ ...
随机推荐
- [译]C#编码约定
原文:https://msdn.microsoft.com/en-us/library/ff926074.aspx 编码约定的目的是: 创建统一格式的代码,让读者的注意力更集中在内容上面,而不是结构 ...
- 个人对RCU的理解
本文对于RCU的概念不进行解释. 考虑一种比较让人困惑的情形,就是在grace period期间,有新的读者进入,那么这个读者拿到的是新数据还是旧数据,查阅了很多资料都没找到答案,当然对于链表的情况这 ...
- jvm--1.class文件结构
1.字节码(1)bytecode是构成平台无关性的基石 (2)当jvm发展到1.7-1.8的时候,jvm设计者通过,JSR-292,基本可以让其他语言运行在jvm上面. 如,Clojure , Gro ...
- linux vi(vim)常用命令汇总
1 查找 /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找其中xxx可以是正规表达式,关于正规式就不多说了. 一般来说是区分大小写的, 要想不区分大 ...
- JS判断字符串长度(中文长度为2,英文长度为1)
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; ...
- bzoj4314
首先,我们考虑原题取消k的限制后怎么做. 设(xy)是一个n次单位根,f(x)=(1+x^0)*(1+x^1)*(1+x^2)*...*(1+x^n-1) 参见 http://bx2k.is-prog ...
- ping 或者ssh 发生connect: No buffer space available 错误
如果遇到这种情况,一般说明你的本地服务器的arp表缓存太大,而服务器内核设定的回收条数太小,一直被回收造成的. 可以用一下命令扩大arp表可以缓存的记录条数: echo 512 > /proc/ ...
- powershell例子
例子如下: $ErrorActionPreference="Stop" function getlist{ ls D:\tmp2|select name,extension,ful ...
- tcp 出现rst情况整理
正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下: 1. GFW 2. 对方端口未打开,发生在连接建立 如果对方sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会 ...
- 原生js封装ajax:传json,str,excel文件上传表单提交
由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...