- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 以最小特权运行 在上述例子中,应用程序需要以管理员的身份运行。通过MyToken.cpp,可以得到管理员令牌的默认内容: User NORTHWINDTRADERS\blake SIDS NORTHWINDTRADERS\Domain Users \Everyone BUILTIN\Administrators BUILTIN\Users NT AUTHORITY\INTERACTIVE NT AUTHORITY\Authenticated Users Restricting SIDS None Privileges SeChangeNotifyPrivilege (3) SeSecurityPrivilege (0) SeBackupPrivilege (0) SeRestorePrivilege (0) SeSystemtimePrivilege (0) SeShutdownPrivilege (0) SeRemoteShutdownPrivilege (0) SeTakeOwnershipPrivilege (0) SeDebugPrivilege (0) SeSystemEnvironmentPrivilege (0) SeSystemProfilePrivilege (0) SeProfileSingleProcessPrivilege (0) SeIncreaseBasePriorityPrivilege (0) SeLoadDriverPrivilege (2) SeCreatePagefilePrivilege (0) SeIncreaseQuataPrivilege (0) SeUndockPrivilege (2) SeManageVolumePrivilege (0) 第七章 以最小特权运行 步骤5,所有SID和特权是否都是必需的 让设计、开发和测试组的成员去分析令牌中每个SID和特权,并确定哪一个是所需要的。执行这个任务要将第4步中得到的令牌内容与资源列表以及在第1步和第2步中使用的API函数进行比较。如果令牌中的SID和特权与需求不一致,则可以考虑除去它们。 注意:许多SID是良性的,比如Users和Everyone,你不必从令牌中删除它们。 第七章 以最小特权运行 步骤6,调整令牌 后一步是降低令牌的能力,这可以使用三种方法: 允许较低权限的用户来执行你的应用程序。 使用限定的令牌。 永久地除去不必要的特权 允许较低权限的用户来执行你的应用程序 可以允许较低权限的用户来执行你的应用程序,但是却不能允许他们执行某些功能,如不允许执行备份等这样的功能。如一个基于Web的产品,不要因为需要管理员添加一个新的用户账户,而要求该应用程序以SYSTEM的身份来运行。 第七章 以最小特权运行 上述例子可采用如下方法: 以预置好的具有较低特权的账户来运行系统,而取代以本地系统账户来运行。 让程序要求管理员通过使用Windows身份验证来鉴别自己的身份,从而执行高特权的操作,如添加一个新的账户。 让程序模仿用户账号并尝试执行用户账户的数据库操作,如果操作系统拒绝访问,则这个账户不是管理员。 从安全的观点出发,以较低特权账户运行程序是不可替代的。如果一个进程以SYSTEM身份或其他较高权限的账户运行,这个进程将模拟用户来降低该进程的能力,攻击者能够通过注入代码来获得SYSTEM权限。比如通过缓冲区溢出,调用RevertToSelf,在这一时刻,进程停止模拟。而转为该进程的身份,即SYSTEM。 第七章 以最小特权运行 使用限定令牌 在Windows 2000及以后版本中添加了一个新的特性,即能够获得用户令牌并降低或限定它的能力。一个限定的令牌是原始或模仿的令牌在调用了CreateRestrictedToken函数之后产生的。在限定令牌的安全环境下运行的进程或线程,被限制了访问安全对象或执行特权操作的能力。可以使用CreateRestrictedToken函数对令牌执行下面三步操作来限制令牌: 从令牌中删除一些特权。 指定一个限定SID的列表。 对SID应用“只拒绝(deny-only)”的属性。 第七章 以最小特权运行 删除权限。删除在令牌中你不想要的任何特权,而且它们在以后也不会被添加进去。为了重新获得被删除的特权,该进程必须被销毁并重新创建。 指定限定SID。通过给访问令牌添加限定SID,你可以决定在令牌中允许哪些SID。当受限进程或线程试图去访问可用对象时,系统会同时在可用的SID集和限定SID列表中进行访问验证。只有两者检查都成功,才允许对指定对象的访问。 例如:一个文件的ACL允许Everyone具有读权限,而 Adminis
文档评论(0)