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

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

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

话题:

图5

看看CreateAppContainerProcessW的逻辑片段,把传入的CapabilitySIDs和PackageSID加入到ProcThreadAttributes,然后通过STARTUPINFOEX结构把ProcThreadAttributes传给了CreateProcessW。

图6

图7

图8

搞清楚IE Tab进程的创建逻辑,我们就可以创建自己的AppContainer进程了。

直接复用IE的PackageSID和CapabilitySIDs来创建AppContainer进程。如果需要定义自己的PackageSID,可以参考MSDN上的CreateAppContainerProfile等API,这里就不讨论了。

成功的创建出了具有AppContainer隔离机制的记事本进程。32位和64位进程都可以。可以自由组合Capability,这里我选择了IE Tab6个Capability里的3个。

图9

图10

如果程序在设计时没有考虑使用AppContainer隔离机制,依赖没有授权给AppContainer的系统资源,比如系统根目录,用户根目录等,使用AppContainer隔离机制启动程序会失败。

AppContainer的访问权限控制

为描述方便,AppContainer进程的AccessToken我们简称为LowBoxToken(下同)。

下面是一个LowBoxToken的部分信息,可以看到TokenFlags的掩码位0×4000是置位的,这表示该Token是一个LowBoxToken。我们还可以看到PackageSid、Capabilities等信息(图2里标志为AppContainer和Capability的SID)。

图11

DACL

DACL的遍历是在SepNormalAccessCheck/SepMaximumAccessCheck里进行的。这里我们以SepNormalAccessCheck为例,来看一看如何处理AppContianer相关的ACE。    

一般来说,在遍历DACL时,如果满足以下3个条件中的任意一个,检查停止。

1.有一个access-denied ACE明确拒绝了请求访问权限中的任意一个;

2.有一个或者多个access-allowed ACEs明确给予了所有的请求访问权限;


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