26
Overshadow Tech.

Overshadow Tech

Embed Size (px)

DESCRIPTION

Overshadow Tech. Agenda. 要解决的问题. 内存中的 code & data 保护 不改变现有操作系统 不改变被保护的程序. 假设前提. 任何 OS 不被信任. 关键思路. 内核 (OS Kernel) 只能看到密文 (Encrypted Page) 受保护应用能看到明文( Decrypted Page ). 一个客户机物理页( GPPN )对应多个实际物理页 (MPN), 从而对同一客户机物理地址根据 Context 不同而展现不同的内存内容. 基本流程图. 1 , 5 : OS 读 / 写,对内存加密,成为密文。 - PowerPoint PPT Presentation

Citation preview

Page 1: Overshadow Tech

Overshadow Tech.

Page 2: Overshadow Tech

Agenda

Page 3: Overshadow Tech

要解决的问题• 内存中的 code & data 保护• 不改变现有操作系统• 不改变被保护的程序

假设前提• 任何 OS 不被信任

Page 4: Overshadow Tech

关键思路• 内核 (OS Kernel) 只能看到密文 (Encrypted

Page)

• 受保护应用能看到明文( Decrypted Page )

• 一个客户机物理页( GPPN )对应多个实际物理页 (MPN), 从而对同一客户机物理地址根据 Context 不同而展现不同的内存内容

Page 5: Overshadow Tech

基本流程图• 1 , 5 : OS 读 / 写,对

内存加密,成为密文。

• 3 : APP 读,解密,并赋予只读属性

• 2 , 4 : APP 写,如果是从密文状态( 2 ),则解密。如果是从只读状态( 4 ),解密。

Page 6: Overshadow Tech

Overshadow Architecture

Hardware

VMM

Apps

OS Kernel

Uncl oaked Shi m

Cl oaked Shi m

Cl oaked App.

VMM 层主要作用:• 判断当前所处

Context

• 提供加密 / 解密功能

Page 7: Overshadow Tech

Overshadow Architecture

Hardware

VMM

Apps

OS Kernel

Uncl oaked Shi m

Cl oaked Shi m

Cl oaked App.

• Uncloaked Shim– kernel 与 cloaked app.

之间的数据交换

– 用于从 kernel 陷入回 VMM 的代码(因此可以返回 Cloaked Shim ) (trampoline)

Page 8: Overshadow Tech

Overshadow Architecture

Hardware

VMM

Apps

OS Kernel

Uncl oaked Shi m

Cl oaked Shi m

Cl ocked App.

• Cloaked Shim– Cloaked Thread Conte

xt (CTC) 存放于此– Cloaked Dispatch Han

dler (proxying the system call)

– 一个用于加载 Cloaked App. 的 loader

Page 9: Overshadow Tech

Overshadow Architecture

Hardware

VMM

Apps

OS Kernel

Uncl oaked Shi m

Cl oaked Shi m

Cl oaked App.

• Cloaked Application– 被保护的第三方程序

Page 10: Overshadow Tech

任务 (Scenario)

• 启动过程 ( 加载过程 )

• 中断与异常处理• 系统调用

Page 11: Overshadow Tech

任务 - 启动过程 ( 加载过程 )

Page 12: Overshadow Tech

任务 - 中断与异常处理1. 发生 Fault ,控制

移交到 VMM 层。

Page 13: Overshadow Tech

任务 - 中断与异常处理2. VMM 层保护当前

App. 的寄存器到CTC 中。将中断返回 IP 和使用 SP 指向弹簧函数(Uncloaked Shim)

移交控制到 OS前清空通用寄存器

Page 14: Overshadow Tech

任务 - 中断与异常处理3. OS 正常中断 / 异

常处理4. 弹簧函数会调用

self-identifying call 回到 VMM 层

5. VMM 层恢复 App.的寄存器,交还控制权

Page 15: Overshadow Tech

任务 - 系统调用• 与中断 / 异常处理最主要区别:

–涉及 Cloaked App. Data 与 OS Kernel的交互

• 因此涉及 App Data 的加密 / 解密并与 OS 交互• 与 VMM 的交互更复杂

Page 16: Overshadow Tech

任务 - 系统调用1. App 发生 Syscall ,

控制移交到 VMM层。

Page 17: Overshadow Tech

任务 - 系统调用2. VMM 层保护当前

App. 的寄存器到CTC 中。将 IP 指向 Syscall Proxy , SP 指向Private Stack (两者均在 Cloaked Shim中 )

移交控制前不清空寄存器

Page 18: Overshadow Tech

任务 - 系统调用3. Syscall Proxy 会

向 VMM 层发出调用 OS Syscall 的请求根据需要复制 Syscall 所需Argument 到Uncloaked Shim中

Page 19: Overshadow Tech

任务 - 系统调用4. VMM 层保护当前

CTC 中的通用寄存器到 CTC 中。将返回 IP 和使用SP 指向弹簧函数(Uncloaked Shim)

移交控制前清空不会被该Syscall使用的寄存器

Page 20: Overshadow Tech

任务 - 系统调用5. 常规 OS Syscall

调用6. 弹簧函数会调用

self-identifying call 回到 VMM 层

Page 21: Overshadow Tech

任务 - 系统调用7. VMM 层恢复第 4

步保存的寄存器。通过设置 IP 和 SP恢复 Syscall Proxy 在 Cloaked Shim 的执行。

Page 22: Overshadow Tech

任务 - 系统调用8. 执行 Syscall

Proxy 剩下的代码,把 Uncloaked Shim 中的 Syscall执行结果加密装回到相应寄存器 / 内存中(重装)移交控制权到VMM

Page 23: Overshadow Tech

任务 - 系统调用9. VMM 层恢复第 2

步保存的寄存器。(包含调用结果)恢复 App 的执行

Page 24: Overshadow Tech

未解决的问题• Overshadow 貌似不能解决不让 OS 知道按

下键盘哪个按键的问题。换句话说overshadow 只是用来保护 application 的数据的,不能保护外部中断数据

Page 25: Overshadow Tech

一些想到的问题• 在 windows 上实现 overshadow 不仅要考

虑 syscall ,还要考虑 exception

• 我觉得不一定要在 Ring 3 上实现PELoader, 把 Cloaked Shim(PELoader) 放到 VMM ?(我们假定 OS 是不可信任的)

Page 26: Overshadow Tech

一些想到的问题• 我觉得我们的 PEloader 做法应该是 Hook

Subsystem API( 参见 Shim Memory/Cloaked Shim)

(Hook 住被调用的 API 后直接与 VMM 进行相应的通信 )