FLASH漏洞分
    析

   陈志杰

SWF文件格式
                .
无效指针利用                                                                  ...
内容大纲
FLASH漏洞分
    析

   陈志杰

                   .
SWF文件格式
                . . SWF文件格式
                  1
无效指针利用

欺骗代码检查
 ...
内容大纲
FLASH漏洞分
    析

   陈志杰
                   .
                . . SWF文件格式
                  1
SWF文件格式

无效指针利用
         ...
SWF文件结构
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                     4
SWF Header结构
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                          5
DefineSceneAndFrameLabelData
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN            ...
DoABC
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                   7
内容大纲
FLASH漏洞分
    析

   陈志杰
                   .
                . . SWF文件格式
                  1
SWF文件格式

无效指针利用
         ...
IDA静态分析
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查
                .
In the wild 代
码分析演示           IDA静态分析           ...
内容大纲
FLASH漏洞分
    析

   陈志杰
                   .
                . . SWF文件格式
                  1
SWF文件格式

无效指针利用
         ...
ActionScript的检查/执行机制
FLASH漏洞分
    析

   陈志杰
                 .
                 欺骗原理                                      ...
欺骗方法
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查          .
In the wild 代   构造marker命令                           .
码分析...
欺骗方法
FLASH漏洞分
    析            .
                 构造marker命令                                            .
   陈志杰
         ...
AcrionScript的构造
FLASH漏洞分         .
    析
                 达到的目的                                       .
                .....
溢出用的AS指令序列示意图
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                          ...
对marker的要求
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查           .
In the wild 代    对marker的要求                        ...
对marker的要求
FLASH漏洞分
    析

   陈志杰
                 .
SWF文件格式
                 对marker的要求                                .
...
AS指令构造1-Save retEIP
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                    ...
AS指令构造2-将codePtr压栈
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                     ...
AS指令构造3-构造x86指令
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                        ...
AS指令构造4-Pop
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                         21
AS指令构造5-覆盖 retEIP
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                      ...
AS指令构造6-返回
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代
码分析演示

总结




JoYAN                        23
最终exlpoit SWF文件结构
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用
                .
欺骗代码检查
                  ...
                 ...
内容大纲
FLASH漏洞分
    析

   陈志杰
                   .
                . . SWF文件格式
                  1
SWF文件格式

无效指针利用
         ...
In the wild 代码演示
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查          .
In the wild 代   hxxp://qs214.cn/www/a26/i47.sw...
内容大纲
FLASH漏洞分
    析

   陈志杰
                   .
                . . SWF文件格式
                  1
SWF文件格式

无效指针利用
         ...
总结
FLASH漏洞分
    析

   陈志杰
                 .
SWF文件格式
                 健壮性                                    .
           ...
FLASH漏洞分
    析

   陈志杰

SWF文件格式

无效指针利用

欺骗代码检查           .
In the wild 代
码分析演示

总结
                      谢谢大家!       .


...
Upcoming SlideShare
Loading in …5
×

Adobe Flash Player Invalid Pointer Vulnerability

1,113 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,113
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
33
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Adobe Flash Player Invalid Pointer Vulnerability

  1. 1. FLASH漏洞分 析 陈志杰 SWF文件格式 . 无效指针利用 . 欺骗代码检查 Adobe Flash Player Invalid Pointer Vulnerability In the wild 代 码分析演示 . 漏洞分析 .. . . 总结 陈志杰1 1 北京大学计算机所信安中心 Mar. 2009 JoYAN . . . . . .
  2. 2. 内容大纲 FLASH漏洞分 析 陈志杰 . SWF文件格式 . . SWF文件格式 1 无效指针利用 欺骗代码检查 . In the wild 代 . . 无效指针利用 2 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 2
  3. 3. 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 3
  4. 4. SWF文件结构 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 4
  5. 5. SWF Header结构 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 5
  6. 6. DefineSceneAndFrameLabelData FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 6
  7. 7. DoABC FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 7
  8. 8. 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 8
  9. 9. IDA静态分析 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 码分析演示 IDA静态分析 . .. 总结 分 析0x30074F1B, 用 于load各 个TAG, 当 解 析 DefineScene- AndFrameLabelData 头时,触发漏洞,请看分析: . .. . . JoYAN 9
  10. 10. 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 10
  11. 11. 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
  12. 12. 欺骗方法 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 构造marker命令 . 码分析演示 .. 总结 将AS3 argmask中某一0xFF标记的指令标记为有效,从而使 检验阶段的解释器认为其后的连续几个byte都是此指令的参 数从而不检查有效性和合法性。 . .. . . JoYAN 12
  13. 13. 欺骗方法 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
  14. 14. 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 .
  15. 15. 溢出用的AS指令序列示意图 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 15
  16. 16. 对marker的要求 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 对marker的要求 . .. 码分析演示 总结 ... 1 其地址要加4能被12整除; ... 2 AVM2本身未用(0xFF); . .. .3 同时要是一条有效x86指令(codePtr指向了它)。 .. . . JoYAN 16
  17. 17. 对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
  18. 18. AS指令构造1-Save retEIP FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 18
  19. 19. AS指令构造2-将codePtr压栈 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 19
  20. 20. AS指令构造3-构造x86指令 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 20
  21. 21. AS指令构造4-Pop FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 21
  22. 22. AS指令构造5-覆盖 retEIP FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 22
  23. 23. AS指令构造6-返回 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 In the wild 代 码分析演示 总结 JoYAN 23
  24. 24. 最终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
  25. 25. 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 25
  26. 26. In the wild 代码演示 FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 hxxp://qs214.cn/www/a26/i47.swf . 码分析演示 总结 . .. 1 入侵演示; ... 2 libemu静态分析; .. .. 3 OllyDbg 动态分析。 .. . . JoYAN 26
  27. 27. 内容大纲 FLASH漏洞分 析 陈志杰 . . . SWF文件格式 1 SWF文件格式 无效指针利用 . 欺骗代码检查 . . 无效指针利用 2 In the wild 代 码分析演示 总结 . . . 欺骗代码检查 3 . . . In the wild 代码分析演示 4 . . . 总结 5 JoYAN 27
  28. 28. 总结 FLASH漏洞分 析 陈志杰 . SWF文件格式 健壮性 . .. 无效指针利用 欺骗代码检查 ... 1 只依赖一个绝对地址; In the wild 代 ... 2 除了 AS3 argmask 之外,未破坏任何数据结构; . .. 码分析演示 3. Flash可以正常退出。 总结 .. . . . 广泛性 . .. ... 1 IE/Firefox均存在漏洞; ... 2 XP/Vista均有效; . .. 3. ASLR 对 Flash 插件无效。 .. . . JoYAN 28
  29. 29. FLASH漏洞分 析 陈志杰 SWF文件格式 无效指针利用 欺骗代码检查 . In the wild 代 码分析演示 总结 谢谢大家! . .. 欢迎提问! .. . . JoYAN 29

×