1   1  /  1  页   跳转

应用软件限制策略加强系统安全

应用软件限制策略加强系统安全

前言:版块的“繁华”需要大家共同创造。[安全技术讨论]版块从“开张”到现在显得有些冷清,大家有空就经常进来讨论下相关问题,多发发贴吧,不要让本版块太寂寞了-_-|| 这样也可以促进大家共同进步。

本文算是我学习软件限制策略的一个小总结吧,有的地方还没涉及到,因为能力有限,越往下研究越发感到自己的知识是多么肤浅......

下面的内容我参考了绝大部分关于软件限制策略以其Vista中新增加的安全特性的相关文章,尽量做到准确。我相信也但愿您们能找出更多的问题来,如果有兴趣可以共同探讨。


软件限制策略是Windows2000以后系统增加的一特性。通过软件限制策略,管理员可以控制软件在本机上的运行能力。合理利用软件软件限制策略,在一定程度上可以增强系统安全性。当然不能替代反毒软件、防火墙以其其他安全特性等。

由于Vista系统中系统安全性有很大提高,其中包括软件限制策略的部分变更。下面我会分别指出VistaXP系统在这方面的不同点。
运行secpol.msc打开“本地安全策略”,选择“软件限制策略”。如果之前没有配置,会出现图示:

 附件: 您所在的用户组无法下载或查看附件




通过“操作”选择“创建软件限制策略”即可:

 附件: 您所在的用户组无法下载或查看附件


默认“安全级别”有不允许的、基本用户(Vista系统)、不受限的,xp下没有基本用户。上面也解释了各个含义。
可以通过修改注册表,增加额外的安全级别。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers下新建名为LevelsDWORD值,其数据与安全级别对应关系:


1000H4096)增加不信任的
10000H
65536)增加受限的
20000H
131072)增加基本用户
(针对XP,vsita下默认包含)

注:H表示数据为十六进制,括号中的是对应的十进制数据,实际在注册表中添加时不要带H。通过数据相加可以得到多个安全级别。如添加H110000(=H01000+H10000)可以同时添加不信任的与受限的,添加H31000可以添加不信任的,受限的以及基本用户

软件限制策略中标志软件的四条规则:
1.
哈希规则/散列规则(Hash Rule):使用可执行文件的加密指印。仅针对特定的文件。XP系统中文件散列由3部分组成:MD5 或 SHA-1 哈希值、文件长度、哈希算法ID编号。
哈希规则的格式如下所示:
[MD5 或SHA1 哈希值]:[文件长度]:[哈希算法 ID]
如哈希规则中添加level.txt,文件散列显示为:
1456f5cc7728e474b312368bd4886d98:87:32771
可以看出该文件MD5为:1456f5cc7728e474b312368bd4886d98
文件长度:87字节
哈希算法ID:32771
如下图示:


 附件: 您所在的用户组无法下载或查看附件


用别的工具检验下该文件:

 附件: 您所在的用户组无法下载或查看附件

是相符的。
在Vista系统中,支持SHA256算法,并且不显示文件散列:


 附件: 您所在的用户组无法下载或查看附件

2.证书规则
证书规则指定代码签名软件发布者的证书。证书规则是一种非常有效的标识软件的方法,因为它使用已签名文件的签名中包含的已签名哈希来匹配文件,而不管文件的名称或位置如何。
添加证书规则步骤:
先导出文件证书,然后再添加进去。下面以IE示例:
进入C:\Program Files\Internet Explorer,右键iexplore.exe选择属性——数字签名——详细信息——查看证书——详细信息——复制到文件,然后一直下一步就行了,中间选择证书保存路径。
添加规则时右键控制台左侧“其他规则”选择新建证书规则即可,通过“浏览”添加证书:


 附件: 您所在的用户组无法下载或查看附件


Vista系统中默认是忽略证书规则的,这可以在“强制”中设置,勾选“执行证书规则”:

 附件: 您所在的用户组无法下载或查看附件






                 


[img]file:///C:/Users/backway/AppData/Local/Temp/moz-screenshot.png[/img]

用户系统信息:Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)
最后编辑backway 最后编辑于 2009-08-03 13:02:34
分享到:
gototop
 

回复: 应用软件限制策略加强系统安全



Iexplore.exe的证书添加进去后,安全级别设为“不允许的”,然后运行IE看看效果:

 附件: 您所在的用户组无法下载或查看附件




可以看下系统日志记录,运行eventvwr打开:

 附件: 您所在的用户组无法下载或查看附件





3.路径规则:支持本地路径、UNC 路径、注册表路径。也支持环境变量和通配符”?””*”.



如果有多个匹配的路径规则,则最具体的匹配规则优先权最高。以下一组路径按优先权从最高(最具体的匹配)到最低(最一般的匹配)排序:



C:\folder1\folder2\sec.exe > C:\folder1\folder2\*.exe > *.exe> C:\folder1\folder2 > C:\folder1



Folder1代表文件夹1,类推。


文件夹规则会包括其下所有文件和子文件夹下文件。如 C:\windows 代表windows目录,比如包含system32下的所有可执行文件等等。添加路径规则:C:\windows
不允许的
会使explorer.exewindows下)、userinit.exesystem32下)、WMIADAP.exesystem32\wbem下)都无法运行(特殊情况除外)。
%windir%\sec.exe仅仅匹配%windir%\sec.exe,不匹配%windir%\folder\sec.exe


注册表路径格式: %<Registry Hive>\<Registry Key Name>\<ValueName>%
如果软件限制策略里的默认级别为“不允许的”,会发现默认添加了2条规则(Vista系统):

 附件: 您所在的用户组无法下载或查看附件


                             

%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\
CurrentVersion\SystemRoot%相当于%systemroot%

%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\ProgramFilesDir%相当于%programfiles%

这样就可以运行%systemroot%%programfiles%下的所有程序而阻止其他地方程序执行了。


4.网络区域规则(Zone Rule
):可以使用区域规则标识从下列任意区域(在 Internet Explorer 中定义)下载的软件:
Internet;
本地Intranet;
受限制的站点;
受信任的站点;
本地计算机

但是,目前Internet 区域规则仅适用于 Windows Installer (*.msi) 程序包。此规则不适用于通过Internet Explorer 下载的软件。

4个规则优先权:哈希规则>证书规则>路径规则>网络区域规则,但都大于默认规则。

软件限制策略的强制选项可以设置“DLL检查”(DLL
checking)和“跳过管理员”(SkipAdministrators):




 附件: 您所在的用户组无法下载或查看附件




DLL检查:默认设置下软件限制策略是不检查dll的,如上图示,这也是推荐设置。这是因为一个程序运行时会加载许多dll,如果设置不允许某个可执行文件sec.exe运行,直接阻止sec.exe运行即可,不必再设置dll。另外如果检查dll,会加重系统负担,降低系统性能。因为每个程序运行时会加载许多dll,结果系统会检查评估许许多多dll


跳过管理员:可以设置软件限制策略应用到所有用户还是除管理员之外的用户。如果管理员希望其他用户只能运行特定的程序,但希望本地Administrators
组中的成员能够运行所有程序则可以使用“除本地管理员以外的所有用户”设置。

指派的文件类型:定义什么是可执行代码,它们是标准程序文件类型(exe,dll,vbs等)的补充:

 附件: 您所在的用户组无法下载或查看附件




软件限制策略已与系统中的大多数脚本宿主集成,其中包括 cmdVBScriptCscript Jscript

软件限制策略并不是万能的,在特殊情况下会“失效”。因为软件限制策略不能适用于下列情形:驱动或运行于内核模式程序,以system账户运行的程序。
比如添加规则: ?script.exe
不允许的
双击wscript.exe时会出错:

 附件: 您所在的用户组无法下载或查看附件




但如果以system账户运行:

 附件: 您所在的用户组无法下载或查看附件
最后编辑backway 最后编辑于 2009-08-03 12:54:33
gototop
 

回复: 应用软件限制策略加强系统安全

在任务管理器里可以看到它是以system账户运行的:

 附件: 您所在的用户组无法下载或查看附件
[attachimg]550599[/attachimg]组策略中计算机配置文件存储在%windir%\System32\GroupPolicy\Machine下,用户配置文件存储在%windir%\System32\GroupPolicy\User下。软件限制策略配置文件存储在Machine\Registry.pol中。在注册表编辑器中展开到HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers,可以看到对应信息:

 附件: 您所在的用户组无法下载或查看附件




正如之前所说,2000H表示“基本用户”级别,1000H表示“不信任”的级别,10000H表示“受限的”级别。0表示“不允许的”级别,40000H表示“不受限的”级别。如果在某个级别下存储有不同的规则(哈希规则,路径规则,或网络区域规则),则其分支会显示。每个路径规则,哈希规则,或网络区域规则都有对应的globally unique identifierGUID)(全局唯一标识符),它是一个128位值,从统计意义上几乎可以保证每个GUID将是唯一的。即使对同一个可执行文件应用同一个规则,GUID也不会相同的。如下图示,规则?:\*.*
不允许的
在注册表中的信息:

 附件: 您所在的用户组无法下载或查看附件




我们可以利用路径规则来预防未知病毒文件的执行。比如禁止磁盘根目录下程序启动,可以用规则?:\*.*
不允许的(这条规则同样限制了磁盘根目录诸如名为folder.1的文件夹里的文件执行)。还可以防范双扩展名文件执行(比如mnm.wmv.exe),可以用*.*.* 不允许的,但这样同样限制了比如kuwo.12.exe可能正常的文件的执行,可以根据实际情况排查出特例。

网上流传有路径规则:
?:\autorun.inf
不允许的
来防范Autorun病毒。
%systemdriver%\*.sys  不允许的


Test:在D盘下建立autorun.inf,双击之,有阻止提示:

 附件: 您所在的用户组无法下载或查看附件




但这样并不防读:


 附件: 您所在的用户组无法下载或查看附件


实际情况是,插入带autorun病毒的U盘,svchost.exe会读取autorun.inf,之后explorer.exe读取,并向HKLM\\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\下根据autorun.inf写入信息。

%systemdrive%\*.sys也许是想可以阻止系统盘下加载驱动。我添加%windir%\system32\drivers\*.sys
不允许的。虽然双击某个sys也会出错,之后重启试下,如果真的阻止了加载驱动,重启必定会蓝屏的。结果是,一切正常。所以这条规则也是无意义的。

个人认为软件限制策略中的“基本用户”(Basic
User)最具有吸引力。“基本用户”与Vista系统中的UAC虽然本质不同,但也有相似之处。
我们知道在Vista中,以管理员身份登录系统时,系统会创建2份访问令牌,一份是完全的管理员访问令牌,令一份是标准用户访问令牌。但shell程序(默认explorer.exe)最终得到的是标准用户访问令牌,所以用户进程默认只有标准用户访问权限。
而当遇到执行程序需要提权时,系统会提示,这时提权方式是AAM(管理员批准模式)。标准用户登录系统后的提权方式是OTS(即时提升)。
下面分别比较2个系统下explorer.exe的访问令牌(下文中用UAC表示以管理员身份登录、开启UAC并没有设置软件限制策略的系统,secpol表示禁用UAC并在软件限制策略里设置explorer.exe的安全级别为“基本用户”的系统):
用工具accesschk查看explorer.exe(命令提示符中accesschk -pf explorer.exe):

UAC下:
[3068] explorer.exe

Medium Mandatory Level [No-Write-Up,No-Read-Up]


RW backway-PC\backway


RW NT AUTHORITY\SYSTEM


Token:


User: backway-PC\backway


Groups:


backway-PC\None                      MANDATORY


Everyone                                    MANDATORY


backway-PC\Debugger Users    MANDATORY


BUILTIN\Administrators              DENY


BUILTIN\Users                            MANDATORY


NT AUTHORITY\INTERACTIVE    MANDATORY


NT AUTHORITY\Authenticated Users    MANDATORY



NT AUTHORITY\ThisOrganization    MANDATORY


backway-PC\S-1-5-5-0-154302-backway    LOGONID,MANDATORY


LOCAL                                          MANDATORY


NT AUTHORITY\NTLM Authentication    MANDATORY


Mandatory Label\Medium MandatoryLevel    INTEGRIT


Privileges:


SeShutdownPrivilege                            DISABLED


SeChangeNotifyPrivilege                        ENABLED


SeUndockPrivilege                                  DISABLED


SeIncreaseWorkingSetPrivilege              DISABLED



SeTimeZonePrivilege                              DISABLED



Secpol下:

[3488] explorer.exe

High Mandatory Level [No-Write-Up,No-Read-Up]


RW BUILTIN\Administrators


RW NT AUTHORITY\SYSTEM


RW LH-0PXGGSTYNHOY\backway


Token:


User: LH-0PXGGSTYNHOY\backway


Groups:


LH-0PXGGSTYNHOY\None                MANDATORY


Everyone                                            MANDATORY


BUILTIN\Administrators                        DENY


BUILTIN\Users                                    MANDATORY


NT AUTHORITY\INTERACTIVE            MANDATORY


NT AUTHORITY\Authenticated Users  MANDATORY


NT AUTHORITY\This Organization        MANDATORY


BUILTIN\S-1-5-5-0-108090-Administrators          LOGONID,MANDATORY


LOCAL          MANDATORY


NT AUTHORITY\NTLM Authentication        MANDATORY


Mandatory Label\High Mandatory Level          INTEGRITY



Privileges:


SeChangeNotifyPrivilege        ENABLED


上面那些也可以通过Proccess Explorer对某个进程属性——安全选项页查看:




 附件: 您所在的用户组无法下载或查看附件




两者对比,UAC下比secpol下的特权(privileges)多了4: SeShutdownPrivilege(关闭系统)SeUndockPrivilege(从扩展坞上移除计算机)
SeIncreaseWorkingSetPrivilege(增加进程工作集)、SeTimeZonePrivilege(更改时区)。正是因为有了SeShutdownPrivilege
,标准用户登录系统后才有能力关闭系统,而secpolexplorer.exe没有此特权,开始菜单中出现这种情况:

 附件: 您所在的用户组无法下载或查看附件





最后编辑backway 最后编辑于 2009-08-03 14:25:44
gototop
 

回复: 应用软件限制策略加强系统安全



两者都启用了SeChangeNotifyPrivilege(跳过遍历检查),它又是什么特权呢?
NTFS磁盘系统中,可以利用该特权跳过中间目录的权限检查。
TEST
D盘(确保文件系统为NTFS,如不是,可以使用convert d: /fs:ntfs无损转换)创建文件夹folder,其下创建文本文file.txt,里面添加内容为:windows
现在标准用户都可以自由访问file.txt。更改file.txt权限如下(让其取得上级目录的权限,而不继承其权限,这样后来对上级目录folder修改权限时不会影响它):

 附件: 您所在的用户组无法下载或查看附件




然后更改folder文件夹权限,可以如下设置:

 附件: 您所在的用户组无法下载或查看附件




给当前登录账户选择完全控制——拒绝。
当我们打开C:\folder时会出现意料中的拒绝访问:




 附件: 您所在的用户组无法下载或查看附件






有了它的阻止,我们也就无法直接打开其下的file.txt了。
但如果利用文件完整路径尝试打开文件呢?




 附件: 您所在的用户组无法下载或查看附件




File.txt打开了。
当然可以不分配此特权,但这是不推荐的做法,可能会影响客户端、服务和应用程序的兼容性。
UAC下多的4个特权状态是disabled。要想使用特权,该特权必须出现在当前的令牌中。但特权只有在有必要使用时,才会Enabled。所以在UAC控制的标准用户下可以不经过提权而直接可以修改时区,虽然SeTimeZonePrivilege显示是Disabled。打开“日期和时间”对话框时会出现进程rundll32.exe,其命令行是"C:\Windows\system32\rundll32.exe"Shell32.dll,Control_RunDLL "C:\Windows\System32\timedate.cpl",,当点击“更改时区”时,SeTimeZonePrivilege变成Enabled

 附件: 您所在的用户组无法下载或查看附件




secpol下正是因为没有SeTimeZonePrivilege,所以无法更改时区,没有SeShutdownPrivilege特权,所以从开始菜单关机。

Secpol下基本用户级别的进程仅仅只有SeChangNotifyPrivilege特权。正如Windows  Internals中提到的,有五个Super PrivilegesSeDebugSeLoadDriverPrivilgegeSeRestorePrivilegeSetakeOwnershipSeTcbPrivilege。利用这样的特权,可以对系统有完全的控制权,获得对资源的未授权访问以及操作。Secpol下将大大降低这种潜在的危害。

可以看出,两者Groups都有BUILTIN\Administrators
DENY

Administrators组被标记为拒绝(Deny),这表明将被排除管理员组的权限。这与ACL相结合,可以更好的管理资源,防止被有意或无意的更改,特别是系统资源。在大部分情况下,标准用户将不能修改只有administrators组才能修改的资源对象,包括与系统相关联的文件、注册表等。比如,我们可以看下%widnir%文件夹的权限(在命令提示符中icacls %windir%,XP中可以用cacls命令):



C:\Windows NTSERVICE\TrustedInstaller:(F)


NTSERVICE\TrustedInstaller:(CI)(IO)(F)


NT AUTHORITY\SYSTEM:(M)


NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)


BUILTIN\Administrators:(M)


BUILTIN\Administrators:(OI)(CI)(IO)(F)


BUILTIN\Users:(RX)


BUILTIN\Users:(OI)(CI)(IO)(GR,GE)


CREATOROWNER:(OI)(CI)(IO)(F)


上面列出的组TrustedInstallerSYSTEMAdministratorsUsers CREATOR OWNER中标准用户仅属于Users组,因此只有Users所具有的RX(读取与执行权限),而不能修改其中的文件等。
也可以直接在windows文件夹属性——安全选项页中查看(上面那种形式主要是为了看清楚各个组的访问权限):

 附件: 您所在的用户组无法下载或查看附件

我们也可以根据实际情况手工分配权限。不过默认情况下系统分配的权限已经很好的照顾了安全性了。
如果磁盘文件系统不是NTFS,建议使用convert命令将其转换成ntfsConvert
x: /fs:ntfs)。
这样可以更好的配合基本用户的访问权限保护资源对象了。
还会注意到,UAC下显示Medium Mandatory Levelsecpol下显示High Mandatory Level。这个又说明了什么呢?
Vista系统引入了新的安全特性:Mandatory Integrity Control (MIC),强制完整性控制。在Vista中,安全主体(Security principals)能否访问安全对象(securable objects),不仅取决于对象的ACL,还要看各自的完整性级别(integrity levels,简称IL)。如果某个主体IL比对象IL
低,那么它无法向该对象写入。
Windows定义了4个完整性级别:: low,medium, high, and system(有的资料显示还有Trusted Installer Untrusted 2个级别)。UAC下默认情况下标准用户进程ILMedium,除非显示指明了IL。右键某个快捷方式或可执行文件选择“以管理员身份运行”并提权成功后,程序将会以完全管理员身份运行。服务应用程序IL一般为system
而且在UAC下如果开启了IE保护模式,IE将会运行在low的完整性级别上。实际上虽然我们运行的是iexplore.exe,它会继承explore.exeIL,应该为Medimu。但它会创建另一个ILlowiexplore.exe,然后自身退出:

 附件: 您所在的用户组无法下载或查看附件






下面的实验说明在UACIL低的进程(explore.exe)无法写入IL高的文件(D:\a.txt),尽管a.txtACL允许explore.exea.txt写入的权限。
a.txt的属性——安全里查看其权限(设置Users完全控制):




 附件: 您所在的用户组无法下载或查看附件




这样explore.exe将有对其完全控制权限。
最后编辑backway 最后编辑于 2009-08-03 14:30:48
gototop
 

回复: 应用软件限制策略加强系统安全

现在修改a.txtIL(默认为Medium)为high




 附件: 您所在的用户组无法下载或查看附件




之前也知道explorer.exeILMedium。现在向a.txt写入“test”然后保存,看看怎样:

 附件: 您所在的用户组无法下载或查看附件

当然也可以用ILlowIE程序做实验。

可见,在UAC下标准用户得到的ILMedium,如果选择“以管理员身份运行”才可以提升到High。而在secpol下,默认得到的是ILHigh,即时在软件限制策略里设置安全级别为基本用户。而且IE保护模式不再起效。这方面,UACsecpol更安全。下图显示的是secpol下将explore.exe安全级别设置为“基本用户”的情形,将会看到explorer.exe及其子进程IL均为High:


 附件: 您所在的用户组无法下载或查看附件

Vista系统还引入了UIPI(用户界面特权隔离),以防止较低完整性级别的进程向较高完整性级别进程的窗口发送大多数窗口消息。这个只有在开启UAC下才能更好的发挥作用。

默认情况下,子进程会继承其创建者的访问令牌,除非子进程被重新分配了令牌。所以默认情况下,进程A不能访问的资源,其子进程B也无法访问;A不能加载驱动(如果没有SeLoadDriverPrivilege特权),B也不能;AILMediumBIL也会是Medium。在软件限制策略约束下,B的权限将不会大于A,特权不会多于AIL不会高于A(如果在“强制”选项里将软限制策略不应用到管理员账户或以system账户运行程序会发生改变)。即使假定这样一种情况,A的安全级别为“基本用户”,B的为“不受限的”,最终B将会运行在“基本用户”的安全级别上。
这也可以通过runas指定某个程序运行在某个安全级别上的一次运行。Runas可以查看系统上的安全级别:




 附件: 您所在的用户组无法下载或查看附件

另外2个级别不允许的和不受限的没有显示,XP下显示。
让某个程序以“基本用户”级别运行(cmd.exe为例):

 附件: 您所在的用户组无法下载或查看附件




这与在软件限制策略里限制cmd.exe是一样的,只是runas只指定了它的一次运行时的安全级别。可以再快捷方式里指定今后一直按这种级别运行:



 附件: 您所在的用户组无法下载或查看附件

利用这种继承性,可以更好的保护资源对象。
如以IE“基本用户”级别运行,让其执行某个vbs脚本(这里仅仅在软件限制策略里对iexplore.exe做限制),企图向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加启动项run,其数据为C:\windows\notepad.ex。脚本内容如下:
const HKEY_LOCAL_MACHINE= &H80000002
strComputer ="."
Set StdOut =WScript.StdOut
SetoReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer &"\root\default:StdRegProv")
strKeyPath ="SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
strValueName ="test"
strValue ="C:\Windows\notepad.exe"
oReg.SetStringValueHKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

而基本用户所属组并没有向HKLM下的项写入的权限。这样,让IE执行该脚本,将不会成功创建test启动项的。



因此,应尽量不要让程序运行在管理员账户下且有“不受限”的安全级别,尽量将它们进行“无害化处理”。

(文中使用的部分命令行工具非系统自带,可以google下载)
最后编辑backway 最后编辑于 2009-08-03 17:51:35
gototop
 

回复:应用软件限制策略加强系统安全

太强大了,很长,慢慢看
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT