adobe flash player invalid pointer vulnerability

Post on 28-Jun-2015

927 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN . . . . . .

.

.. ..

.

.

Adobe Flash Player Invalid Pointer Vulnerability漏洞分析

陈志杰1

1北京大学计算机所信安中心

Mar. 2009

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 2

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 3

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 4

SWF文件结构

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 5

SWF Header结构

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 6

DefineSceneAndFrameLabelData

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 7

DoABC

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 8

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 9

IDA静态分析

.IDA静态分析..

.. ..

.

.

分析0x30074F1B,用于load各个TAG,当解析 DefineScene-AndFrameLabelData 头时,触发漏洞,请看分析:

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 10

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 11

ActionScript的检查/执行机制

.欺骗原理..

.. ..

.

.

verification 与 interpretation 分离;每个 AVM2 (ActionScript Virtual Machine 2) 指令均可以按照编号操作寄存器和 AVM2 的各种栈;AVM2的栈是建立在函数 ActionScript3 Execute()的运行栈里的,从而与其返回地址是在同一个栈中;

verification 阶段检查完指令的有效性和对寄存器、栈操作的合法性之后,interpretation阶段只管执行,遇到无效指令则默默地跳过一个字节。

.Verification示例代码.... ..

.

.IBM LASVM Page 13.

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 12

欺骗方法

.构造marker命令..

.. ..

.

.

将AS3 argmask中某一0xFF标记的指令标记为有效,从而使检验阶段的解释器认为其后的连续几个byte都是此指令的参数从而不检查有效性和合法性。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 13

欺骗方法

.构造marker命令..

.. ..

.

.

将AS3 argmask中某一0xFF标记的指令标记为有效,从而使检验阶段的解释器认为其后的连续几个byte都是此指令的参数从而不检查有效性和合法性。

.达到的目的..

.. ..

.

.

...1 保存原始的 ActionScript3 Execute() 的 retEIP;

...2 将 retEIP 重定向到用户可控数据区;

...3 令 ActionScript3 Execute 返回;

...4 shellcode中保存当前环境;

...5 shellcode执行恶意代码;

...6 shellcode恢复 EIP 及其他上下文;

...7 Flash 跟没事儿似的安全退出……- -b

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 14

AcrionScript的构造.达到的目的..

.. ..

.

.

...1 保存原始EIP;

...2 将EIP重定向到用户可控数据区;

...3 令 ActionScript3 Execute 返回;

...4 shellcode中保存当前环境;

...5 shellcode执行恶意代码;

...6 shellcode恢复 EIP 及其他上下文;

...7 Flash 跟没事儿似的安全退出……- -b.手段..

.. ..

.

.

...1 用 AS 指令将 EIP 存到栈上;

...2 将栈上的某一指向用户可控区域的指针存入EIP。(这一指针就是 codePtr,指向下一条AS指令(IBM文中说的当前))

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 15

溢出用的AS指令序列示意图

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 16

对marker的要求

.对marker的要求..

.. ..

.

.

...1 其地址要加4能被12整除;

...2 AVM2本身未用(0xFF);

...3 同时要是一条有效x86指令(codePtr指向了它)。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 17

对marker的要求

.对marker的要求..

.. ..

.

.

...1 其地址要加4能被12整除;

...2 AVM2本身未用(0xFF);

...3 同时要是一条有效x86指令(codePtr指向了它)。.0xF5!!!..

.. ..

.

.

...1 地址是 0x302047C4;

...2 0xF4-0xF7 AVM2都没用;

...3 0xF5是CMC指令。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 18

AS指令构造1-Save retEIP

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 19

AS指令构造2-将codePtr压栈

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 20

AS指令构造3-构造x86指令

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 21

AS指令构造4-Pop

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 22

AS指令构造5-覆盖 retEIP

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 23

AS指令构造6-返回

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 24

最终exlpoit SWF文件结构

.

.. ..

.

.

...1 SWF头部

...2 存在溢出的 DefineSceneAndFrameLabelData tag

...3 存放shellcode的 DefineBits tag

...4 存在恶意AS指令的 DoABC tag

...5 ShowFrame tag,用于开始执行。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 25

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 26

In the wild 代码演示

.

.. ..

.

.

hxxp://qs214.cn/www/a26/i47.swf...1 入侵演示;...2 libemu静态分析;...3 OllyDbg 动态分析。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 27

内容大纲

.. .1 SWF文件格式

.. .2 无效指针利用

.. .3 欺骗代码检查

.. .4 In the wild 代码分析演示

.. .5 总结

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 28

总结

.健壮性..

.. ..

.

.

...1 只依赖一个绝对地址;

...2 除了 AS3 argmask 之外,未破坏任何数据结构;

...3 Flash可以正常退出。.广泛性..

.. ..

.

.

...1 IE/Firefox均存在漏洞;

...2 XP/Vista均有效;

...3 ASLR 对 Flash 插件无效。

FLASH漏洞分析

陈志杰

SWF文件格式

无效指针利用

欺骗代码检查

In the wild 代码分析演示

总结

JoYAN 29

.

谢谢大家!欢迎提问!.. .. ..

.

.

top related