新葡京官方直营_葡京娱乐_新澳门葡京官方网站
欢迎来到兴华永恒!加入收藏设为首页 葡京娱乐
您当前所在位置:首页 > 手艺专栏 > 专业公布
手艺专栏

针对CVE-2015-2545破绽研讨阐发(下篇)


3.5.11 pNext指向添补机关数据空间

察看下一次轮回的数据规划状况如`图1`所示,`图1`断点<`EPSIMP32!RegisterPercentCallback+0x4664`>,颠末第一个call的时分,则key与value都被变动成了我们机关好的数值如`图2`所示,此时的`pNext`为0也就是下一次不消轮回了,此中key和value都被赋值了我们之前机关好的,其中的`0462e0b0`是之前开释空间前的数据,不是我们机关的所带的数据,这个数据可以说是个保守的地址;此中我们从eps文件格式上面大概静态调试上面看也能够大要推测 `00000500`为字符串范例

1491894008528077.png

图1

2017-03-28_105259.png

图2

3.5.12 机关stirng范例长度为0x7ffffff及ROP PostScript代码

为了快速定位位置,我们能够在响应`memcopy`的位置下断点,如许便利我们定位数据的位置,终极机关出巨细为0x7fffffff的可读写字符串空间。在该空间内作随便读写操纵,做后续的处置(ROP/SHELLCODE),此中shellcdoe pe copy巨细为`0x00000430`,和`0x0001a010`巨细,最初经由过程`bytesavailable`跑`ROP`,此中`ROP`是间接经由过程PostScript语法来搜索获得的如`图2`所示。

1491894085904655.png

图1(string范例字符串00000000-7ffffffff巨细)

1491894122642750.png

图2(搜索ROP链)

3.6 调试阐发-ROP/SHELLCODE[第三个标的目的]

3.6.1 如何绕过EMET

Rop很简朴,间接单步跟随便可,指令都是EPSIMP32.FLT模块中的指令,单步跟随察看便可,如`图1`所示,关于`0xd7`十进制`215`为NtProctectVirtulMemory函数的挪用号码,能够经由过程`PChunter`这个软件翻开SSDT表便可,如`图2,3`所示,如许做是为什么呢?我们持续往下面跟进察看如`图4`所示,跑到了`ZwCreateEvent+5`的位置了,这个位置一看就是要3环进0环的的处所,这就是绕过了EMET检测,因为EMET在体系的枢纽API停止了检测也就是`mov eax,挪用号`这里停止了`jmp xxxx`检测,以是样本的做法为了绕过这个检测,就需求找没有被EMET hook的的函数,恰好,ZwCreteEvent没有被hook那么就间接挪用到这里来改我们的内存庇护。

1491894197835550.png

图1

2017-03-28_151446.png

图2

1491894243728314.png

图3

1491894270450299.png

图4

3.6.2 shellcode

Shellcode的功用次要为开释一个plugin.dll并加载施行。

4. POC/操纵

关于POC,由因而forall中呈现的成绩,以是样本呈现成绩的位置:dict{}forall,而且此中只要copy才会触发破绽以是POC的PostScript的语法是,这里枚举的是伪代码。

 dict {dict1 dict2 copy....} forall

    ----------------------------------------------------------------------------------

    %%创立dict2并添补它

    %%几个键值对

    / dict2 5 dict def

    dict2 begin

    / k1 1000 array def

    / k2 1000 array def

    ...

    dict2 end

    %%创立dict1并添补它

    %%一个键值对在k1

    / dict1 3 dict def

    dict1 begin

    / k1 1000 array def

    dict1 end

    %%在dict2上开端forall列举

    dict2 {

        dict1 dict2 copy

        .......

        0 <00000000ff0300000005000000000000000000002000e01303000000000000000000000044444444> putinterval

    } forall

4.2 浅易弹框

关于操纵,纵观已知网上的cve-2015-2545的样本,用的操纵方法都是在最后的样本模块上面停止加以革新,以是只需求对其shellcode的方面停止变动便可,`图1`则为变动样本弹出简朴的对画框

<6A006A006A006A00B811EA2177FFD06A006AFFB8B51FFF75FFD090> putinterval

1491894531288704.png

图1

5. Word插入EPS

Word在插入EPS格式文件以后,第一运转完其目次`wordmedia`中的`image1.eps`会变成`.wmf`格式文件,假如想每次都运转完`.eps`以后不会变成`.wmf`格局的文件,需求经由过程修正紧缩包内里的一些内容便可,如`图1,2, 3`所示。

第一个文件:rels/document.xml 追加内容:


<Relationship Id="rId8" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" 

Target="media/image1.eps"/<Relationship Id="rId9" 

Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" 

Target="ooxWord://word/media/image1.eps" TargetMode="External"/></Relationships>

   



图1

第二个文件:world/document.xml 追加内容:


<w:p><w:r><w:pict><v:shape style="width:1;height:1"><v:imagedata r:id="rId8" r:href="rId9"/></v:shape></w:pict></w:r></w:p>

   



图2

第三个文件:[Content_Types].xml:


<Default ContentType="application/postscript" Extension="eps"/>

   

6.破绽防护

阐发都调试完成,大白其破绽发作的位置,那么我们需求去防备cve-2015-2545破绽,防备能够分为两个方面来完成:

1.静态防备(yara划定规矩)
2.静态防备

6.1 静态防备

6.1.1 github yara

1.GitHub上面有关于cve-2015-2545的yara划定规矩检测,可是本人寓目了一下,能够看出划定规矩写的不像是针对eps/doc写的,而是对dll,exe停止的yara划定规矩编写,本人停止测试,如下图所示。

葡京官网

图1(未检测出来样本)

1491894879692938.png

图2(检测出来样本天生的文件)

6.1.2 本人写的yara

本人写关于eps的文件的检测,需求对其内里的eps文件划定规矩停止检测,本人浅易写的yara划定规矩[针对的是EPS文件]以下`图1`所示,检测出来歹意机关的EPS文件。

 /*

        Yara Rule Set

        Author: Boluo

        Date: 2017年3月28日19:16:16

        Identifier: CVE-2015-2545

    */

     

    /* Rule Set ----------------------------------------------------------------- */

     

    rule cve_2015_2545 : BASE

    {

        meta:

            description = "Check The EPS File"

            author = "Boluo"

            date = "2017年3月28日19:16:16"

            hash1 = "1f9b7d8e692a1c9fadbdd05b794e8c49502323b073b44becaae5eee5e2186fc4"

        strings:

            $s1 = {3C 30 30 30 30 30 30 30 30 66 66 30 33 30 30 30 30 30 33 30 30 30 30 30 30 30 30 30 30 

30 30 30 30 30 30 30 30 30 30 30 30 34 34 34 34 34 34 34 34 30 30 30 35 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30}

        condition:

            $s1

             

    }


 澳门新萄京

1491895044848928.png

图1(检测eps文件为歹意)


6.2 静态防备

静态防备经由过程hook两个点来停止防备,第一个hook点的位置为`pNext`进入PROC前此中0x28的内容保留一下,第二个hook点的位置为`pNext`在进入PROC后中0x28的内容能否发作变革停止hook,以后停止比力其内容停止判定便可,之所以不能在轮回遍历删除的位置检测是由于PostScript中只要`dict1 dict2 copy`城市先把dict2的内容局部开释掉然后再申请空间,不能直观判定能否为cve-2015-2545范例破绽样本,在开释空间的位置停止检测相当于给其打了补钉而不能直观检测为cve-2015-2545范例破绽;测试成果如下图所示。

1491895108430984.png

图1(静态检测)

7. 结语

该破绽及操纵样本的要挟水平十分高,能够在多种情况下胜利操纵,而且其机关的ROP链及shellcode可以绕过多款安全性加强东西的检测。以是需求做好防备事情。

8.参考资料

1.http://seclab.dbappsecurity.com.cn/?p=603
2.http://bbs.pediy.com/thread-216045.htm
3.http://bbs.pediy.com/thread-216046.htm
4.https://www-cdf.fnal.gov/offline/PostScript/PLRM2.pdf
5.https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/twoforonefinal.pdf
6.https://github.com/Yara-Rules/rules/tree/master/CVE_Rules
7.https://wenku.baidu.com/view/55adb37c8e9951e79b8927ed.html
新葡京官方直营
*本文为 华兴永恒安全团队公布,如若转载,请说明来源于:www.ardsec.com葡京官网
在线征询 周一至周五
09:00-18:00