首页 > 菜鸟学院 > 深度解析Windows最新进程隔离机制AppContainer

深度解析Windows最新进程隔离机制AppContainer

时间:2015-03-04 | 来源:互联网 | 阅读:154

话题:

Win8开始,Windows引入了新的进程隔离机制AppContainer,MetroAPP以及开启EPM的IE Tab进程都运行在AppContainer隔离环境,在最新的Win10Pre(9926)上,仍然如此。腾讯反病毒实验室对AppContainer的工作机制做一深入解读。

AppContainer带来的变化

Vista以前的系统,如XP,用安全描述符(简称SD,下同)里的DACL(discretionaryaccess control list)来控制用户和用户组的访问权限。

Vista以后,增加了IntegrityMechanism,在SD的SACL(system access control list)里增加一个mandatory label的ACE,扩展了Windows安全体系。默认的控制策略是No-Write-Up,允许较低完整性级别的进程读访问较高完整性级别的对象;禁止较低完整性级别的进程写访问较高完整性级别的对象。

Win8引入了AppContainer隔离机制,提供了更细粒度的权限控制,能够阻止对未授权对象的读写访问。

以Win10PreX64(9926)开启EPM的IE Tab进程为例,看看有哪些变化。

从ProcessExplorer里可以看到,IE Tab进程的完整性级别不再是Low,而是变成了AppContainer:

图1

在进程属性的Security标签可以看到,增加了标志为AppContainer以及Capability的SID:

图2

一个AppContainer进程可以访问的对象,在SD的DACL里增加了额外的ACE。以IE Tab进程的进程对象为例:

图3

如何使用AppContainer隔离机制

这里我们不讨论MetroAPP,主要看看DesktopAPP如何使用AppContainer隔离机制。

仍然以Win10PreX64(9926)开启EPM的IE Tab进程为例:在IE选项里开启EPM,下断点nt!NtCreateLowBoxToken,然后新建IE Tab,命中断点,截取最上面的几层调用栈:

图4

可见,通过CreateProcess这个API就可以创建出AppContainer进程。

看看CreateAppContainerProcessStrW的逻辑片段,把PackageSIDString(图2里标记为AppContainer的SID)和CapabilitySID(图2里标记为Capability的SID) string转为SID后,传给了CreateAppContainerProcessW:

小编推荐


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网