• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Adobe Flash Player Invalid Pointer Vulnerability
 

Adobe Flash Player Invalid Pointer Vulnerability

on

  • 1,686 views

 

Statistics

Views

Total Views
1,686
Views on SlideShare
1,679
Embed Views
7

Actions

Likes
1
Downloads
29
Comments
1

1 Embed 7

http://www.slideshare.net 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Adobe Flash Player Invalid Pointer Vulnerability Adobe Flash Player Invalid Pointer Vulnerability Presentation Transcript

    • FLASH漏洞分 析 陈志杰 SWF文件格式 . 无效指针利用 . 欺骗代码检查 Adobe Flash Player Invalid Pointer Vulnerability In the wild 代 码分析演示 . 漏洞分析 .. . . 总结 陈志杰1 1 北京大学计算机所信安中心 Mar. 2009 JoYAN . . . . . .
    • 内容大纲 FLASH漏洞分 析 陈志杰 . SWF文件格式 . . SWF文件格式 1 无效指针利用 欺骗代码检查 . In the wild 代 . . 无效指针利用 2 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 2
    • 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 3
    • SWF文件结构 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 4
    • SWF Header结构 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 5
    • DefineSceneAndFrameLabelData FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 6
    • DoABC FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 7
    • 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 8
    • IDA静态分析 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 码分析演示 IDA静态分析 . .. 总结 分 析0x30074F1B, 用 于load各 个TAG, 当 解 析 DefineScene- AndFrameLabelData 头时,触发漏洞,请看分析: . .. . . JoYAN 9
    • 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 10
    • ActionScript的检查/执行机制 FLASH漏洞分 析 陈志杰 . 欺骗原理 . SWF文件格式 .. verification 与 interpretation 分离; 无效指针利用 欺骗代码检查 每个 AVM2 (ActionScript Virtual Machine 2) 指令均可以 In the wild 代 按照编号操作寄存器和 AVM2 的各种栈; 码分析演示 AVM2 的栈是建立在函数 ActionScript3 Execute() 的运行 总结 栈里的,从而与其返回地址是在同一个栈中; verification 阶段检查完指令的有效性和对寄存器、栈操 作的合法性之后,interpretation阶段只管执行,遇到无 . 效指令则默默地跳过一个字节。 .. . . . Verification示例代码 . .. IBM LASVM Page 13. . .. . . JoYAN 11
    • 欺骗方法 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 构造marker命令 . 码分析演示 .. 总结 将AS3 argmask中某一0xFF标记的指令标记为有效,从而使 检验阶段的解释器认为其后的连续几个byte都是此指令的参 数从而不检查有效性和合法性。 . .. . . JoYAN 12
    • 欺骗方法 FLASH漏洞分 析 . 构造marker命令 . 陈志杰 .. SWF文件格式 将AS3 argmask中某一0xFF标记的指令标记为有效,从而使 无效指针利用 检验阶段的解释器认为其后的连续几个byte都是此指令的参 欺骗代码检查 数从而不检查有效性和合法性。 . .. . . In the wild 代 码分析演示 . 达到的目的 . 总结 .. ... 1 保存原始的 ActionScript3 Execute() 的 retEIP; ... 2 将 retEIP 重定向到用户可控数据区; ... 3 令 ActionScript3 Execute 返回; ... 4 shellcode中保存当前环境; ... 5 shellcode执行恶意代码; ... 6 shellcode恢复 EIP 及其他上下文; . .. . Flash 跟没事儿似的安全退出……- -b JoYAN 7 .. . . 13
    • AcrionScript的构造 FLASH漏洞分 . 析 达到的目的 . .. 陈志杰 ...1 保存原始EIP; SWF文件格式 无效指针利用 ...2 将EIP重定向到用户可控数据区; 欺骗代码检查 ...3 令 ActionScript3 Execute 返回; In the wild 代 码分析演示 ...4 shellcode中保存当前环境; 总结 ...5 shellcode执行恶意代码; ...6 shellcode恢复 EIP 及其他上下文; . .. . 7 Flash 跟没事儿似的安全退出……- -b .. . . . 手段 . .. ... 1 用 AS 指令将 EIP 存到栈上; ... 2 将栈上的某一指向用户可控区域的指针存入EIP。 (这一 指针就是 codePtr,指向下一条AS指令(IBM文中说的当 JoYAN . .. 前)) . 14 .
    • 溢出用的AS指令序列示意图 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 15
    • 对marker的要求 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 对marker的要求 . .. 码分析演示 总结 ... 1 其地址要加4能被12整除; ... 2 AVM2本身未用(0xFF); . .. .3 同时要是一条有效x86指令(codePtr指向了它)。 .. . . JoYAN 16
    • 对marker的要求 FLASH漏洞分 析 陈志杰 . SWF文件格式 对marker的要求 . .. ... 无效指针利用 欺骗代码检查 1 其地址要加4能被12整除; In the wild 代 码分析演示 ... 2 AVM2本身未用(0xFF); 总结 . .. .3 同时要是一条有效x86指令(codePtr指向了它)。 .. . . . 0xF5!!! . .. . .. 1 地址是 0x302047C4; . .. 2 0xF4-0xF7 AVM2都没用; . .. .3 0xF5是CMC指令。 .. . . JoYAN 17
    • AS指令构造1-Save retEIP FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 18
    • AS指令构造2-将codePtr压栈 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 19
    • AS指令构造3-构造x86指令 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 20
    • AS指令构造4-Pop FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 21
    • AS指令构造5-覆盖 retEIP FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 22
    • AS指令构造6-返回 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 23
    • 最终exlpoit SWF文件结构 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 . 欺骗代码检查 ... 1 SWF头部 . In the wild 代 码分析演示 ... 2 存在溢出的 DefineSceneAndFrameLabelData tag 总结 ... 3 存放shellcode的 DefineBits tag ... 4 存在恶意AS指令的 DoABC tag .. .. 5 ShowFrame tag,用于开始执行。 .. . . JoYAN 24
    • 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 25
    • In the wild 代码演示 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 hxxp://qs214.cn/www/a26/i47.swf . 码分析演示 总结 . .. 1 入侵演示; ... 2 libemu静态分析; .. .. 3 OllyDbg 动态分析。 .. . . JoYAN 26
    • 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 27
    • 总结 FLASH漏洞分 析 陈志杰 . SWF文件格式 健壮性 . .. 无效指针利用 欺骗代码检查 ... 1 只依赖一个绝对地址; In the wild 代 ... 2 除了 AS3 argmask 之外,未破坏任何数据结构; . .. 码分析演示 3. Flash可以正常退出。 总结 .. . . . 广泛性 . .. ... 1 IE/Firefox均存在漏洞; ... 2 XP/Vista均有效; . .. 3. ASLR 对 Flash 插件无效。 .. . . JoYAN 28
    • FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 码分析演示 总结 谢谢大家! . .. 欢迎提问! .. . . JoYAN 29