Applocker使用参考
以下内容综合了各种途径得到的资料,因进行了综合整理,恕不一一注明出处。
一、AppLocker是干什么用的?
AppLocker是微软提供给企业版和旗舰版用户使用的一种本机原生HIPS防护工具,它通过各种规则来允许或限制程序、脚本的执行。
Applocker可以按照规则优先级的方式编制过滤体系。
Applocker可以对程序(com和exe)、安装、脚本、dll进行执行控制(但一般不要添加对DLL的过滤,那会非常慢!)。
Applocker可以用规则集(每条规则实际上是一个规则的结合)的方式简化规则管理。
Applocker与软件限制策略不可以并用,只能二选一。如果同时应用,不但软件限制策略里的规则无效,还可能造成意外的问题。如果你先前启用过软件限制策略,请把“其它规则”里面的内容清空。
Applocker的程序控制,帮助里说是只针对exe与com格式,但实测对scr和pif格式也有效,对vxd和cpl格式无效!
二、黑名单白名单规则的设计思想
规则设计可分为黑名单和白名单两种设计思路。
其中,黑名单最宽松,即默认大家都是好人,只有黑名单的才是坏人。特点是误杀最少,适合一般不太严格的多数场景。一般用户建议使用黑名单规则即基本满足流氓程序的防范需求。
而白名单则最严格,即默认所有人都是坏人,只有白名单上的才是好人。
具体的设计思路各有不同:
黑名单规则:
1.允许所有程序运行(可添加例外);
2.阻止特定特征(发行者、路径、产品等)的程序运行(可添加例外)。
白名单规则:
1.全局拒绝:Everyone运行任何路径()的任何程序(),但微软的程序、用户自定义的路径下的程序(如WXR)等例外。
2.全局允许:微软发布的程序,但脚本宿主和任务计划等危险命令例外;用户特定的目录(如WXR等,可以是多个)。非程序员一般是用不上脚本之类的命令的,关闭后能够极大提升系统安全性。
3.局部拒绝:对于腾讯等,可能只需要它的部分程序比如QQ等,其他的全家桶不想要它运行,则可对该公司发布的程序一律拒绝,然后将需要保留的列入例外。
4.局部允许:与上述局部拒绝类似,主要看操作和控制的方便性。比如搜狗拼音,就可允许搜狗发布的程序,但那些后台无关的进程名称或不需要的产品名称全部加入例外。其他如典型的驱动程序、网银等都可采取局部允许的方式处理。
5.特别拒绝:为了防范流氓程序感染,将各种下载器、各种全家桶的安装程序、主程序等全部纳入拒绝,一网打尽,这样即使把流氓程序放在WXR之类的允许运行的目录也运行不起来,非常解恨!
四、规则创建方法示例
以下仅供方法上的参考,关键是防护思路要明晰,不可照搬。
例1 全局允许微软程序运行
可执行规则,允许,Everyone(或根据权限需求选择合适的用户或组),发布者,引用任意一个微软文件,设置为发布者为微软。这样任何目录下的、所有发布者为微软的程序都能够运行;例外:%SYSTEM32%\wscript.exe,%SYSTEM32%\cscript.exe(如果确实需要运行用户脚本,可把脚本宿主程序wscript.exe拷贝到其他被许可的目录下运行之,如此可防范所有利用脚本宿主运行的病毒脚本)。
如果是服务器,可再将%SYSTEM32%目录下的cmd.exe conhost.exe diskpart.exe find.exe fsutil.exe mshta.exe net.exe net1.exe netsh.exe ftp.exe query.exe reg.exe regedit.exe regsvr32.exe sc.exe taskkill.exe replace.exe autofmt.exe regini.exe autoconv.exe等这些危险的工具也纳入例外,以极大地添加入侵者的麻烦。
可执行规则:拒绝,Everyone,路径为,例外:微软发布者的程序,用户的可信任的程序。这条是适合服务器的全局拒绝配置,不建议桌面系统使用。这样,所有磁盘的所有目录路径下都无法运行许可之外的其他程序。因太严格,不适合经常折腾的桌面系统。
脚本规则:只建议服务器设置。拒绝,Everyone,路径规则,,不添加例外。如此将阻止任何位置的脚本执行,一切利用脚本干坏事的病毒木马皆受到严重制约。
封装应用规则:创建默认的EXE规则后,Windows 10的操作中心、小娜等封装应用都将不能打开!此时请在“封装应用规则”中创建一条规则:阻止,Everyone,任何发布者,例外:以微软的封装应用为样本提取发布者信息。
例2 限制Windows目录下任何无关程序的运行
可执行规则:拒绝,Everyone,路径规则,%WINDIR%*,例外:发布者为微软的程序;桌面系统为增加兼容性,路径%WINDIR%\Temp*也设置为例外(服务器则可不加TEMP目录的许可,以增强安全性)。
服务器系统如果已经设置了前述的全局拒绝规则,则本条规则重叠,可忽略不加。
如此一来,任何非微软的程序在Windows目录(包括子目录)都无法执行,能够阻止所有exe类型的病毒木马的运行。
脚本规则:拒绝,Everyone,路径规则,%WINDIR%*,例外:可执行规则,拒绝,%WINDIR%\Temp*(其例外是任意发行者。这样,对于没有发行者信息的第三方程序就有一定限制了),这是以便能够运行以临时目录为自解压位置的压缩包中的脚本(这可能被病毒木马利用,对安全要求高时可不加!),服务器系统则不加任何例外。服务器系统如果在全局规则中添加了前述全局拒绝的脚本规则,则本条功能重叠,可忽略不加。
例3 限制Program Files目录的无关程序运行
Program Files在此其实也包括Program Files (x86)目录,Applocker对应的路径变量名%PROGRAMFILES%同时对应环境变量的%ProgramFiles% 和 %ProgramFiles(x86)%,因此只需写一套规则二者共用。
总体思路是对程序目录进行全面限制运行的同时,排除微软发布的程序以及用户主动安装的可信任的程序。方法如下:
①在Program Files目录或者Program Files (x86)目录下(或其他你愿意的位置,后面的规则路径也指向你自定义的位置即可),创建一个专门存放用户安装的应用程序程序的目录,这个目录名称要有个性(这里以Program Files\WXR为例。王小二:为什么总是我?我招谁惹谁了?),比如以你的英文昵称命名等,目的是不能让病毒木马作者找到固定规律,同时不要用中文名(因为有些应用程序在中文路径下可能运行存在问题)。以后任何用户主动安装的应用程序都一律安装到这个目录,这样就方便规则设置时针对我们这个专用目录进行运行许可设置。
极个别不支持自定义安装目录的应用程序如Apple的应用等则另行设置许可规则。
②针对上述设置的用户程序目录(这里如Program Files\WXR)设置许可策略:允许,Everyone,路径%PROGRAMFILES%\WXR,无例外。
由于路径%PROGRAMFILES%路径下的微软程序已经在前面的全局规则中得到允许,因此路径%PROGRAMFILES%中的微软程序运行没有问题,而其他非微软的、同时不在%PROGRAMFILES%\WXR中的任何程序都无法运行。
例4 允许硬件厂商程序运行
操作系统都不可避免要安装一些硬件驱动程序,由于前面的全局拒绝,全影响到驱动程序的升级安装和相关程序的运行,因此要单独设置允许运行的规则。方法:
在驱动之家等下载站点,将主流的各种硬件驱动程序分别任意下载一个作为引用的文件样本;一一添加允许规则,分别选择这些样本文件,引用层次为发布者。常见的如Intel、AMD、Nvidia、Realtek、HP等,可根据自己的硬件类型选择。比较合理的做法是安装好所有驱动程序后,再启用Applocker并一一为它们设置规则。
例5 其他特定程序的允许可执行规则设置
如Apple的应用、各种网银等,按发布者进行规则设置。
为方便下载的应用程序能够安装运行,可以对下载目录设置为允许任何发布者的程序运行(存在一定不安全因素,要配合其他策略限制下载器和流氓程序的运行)。
对于安装后没有exe可执行文件的(如一些控件类程序),可不必设置可执行规则。
例6 特定程序的拒绝运行规则设置
如果已经在前述的全局规则中设置了*路径的拒绝运行规则,则本条可忽略。但桌面系统为了方便运行散布在各处的用户程序,一般都不设置全局拒绝规则的,则对于一些特定的恶意程序必须设置拒绝运行规则。方法如下:
①安装一款系统保护程序,如Shadow Defender,并对C:盘设置为影子模式;
②搜索“软件下载”,找到主流的下载站点,一一进去后,随意下载任意一个Windows平台的应用程序,注意在下载页面一定要点击醒目的“立即下载”等图标链接,如此可快速下载到一大堆五花八门的下载器程序。通常到上十个左右的主流下载站各下载一个下载器文件即可。
③一一运行下载到的下载器程序,一律按照默认选项安装,很快它们会捆绑植入一大堆五花八门的垃圾软件。整个过程中注意不要重启系统。
④分别在策略编辑器中为上述下载器以及它们植入的你不想要的垃圾应用程序设置拒绝策略,规则级别为发布者。个别无法提取发布者信息的垃圾程序,就用其安装路径进行设置。
⑤鼠标右键点击策略编辑器中的Applocker,选择“导出策略”,将策略导出并保存到其他安全位置(不可保存到C:盘,因为C:盘目前处于影子保护模式);保存完毕,打开Shadow Defender,退出所有影子模式,重启。重启后,上述安装的所有垃圾程序已经自动全部消失;此时再进入策略编辑器,鼠标右键点击策略编辑器中的Applocker,选择“导入策略”,找到上一步导出保存的策略备份,则策略配置得到恢复。
例7 移动介质的规则设置
控制U盘或移动硬盘:%HOT%*;可移动媒体(CD/DVD) %REMOVABLE%*。分别在可执行规则和脚本规则中,将这两个路径设置为Everyone拒绝运行,没有例外,可防止一切移动介质上的可执行文件的运行。如果要运行上面的可信任程序,可复制到硬盘的有执行权限的目录中运行即可。
三、常见问题
1.如何通过事件日志了解Applocker对程序的作用情况?
可使用事件查看器 (eventvwr.msc)查看AppLocker事件 。在事件查看器中,AppLocker事件存储在以下目录的日志中: Applications and Services Logs\Microsoft\Windows\AppLocker。 其中包含两个子日志: 一个用于可执行文件和DLL,另一个用于Windows Installer文件和脚本。
2.为什么有些程序在安装中途失败?明明安装程序已经在运行了呀!
可能是安装程序在安装过程中需要释放临时文件到TEMP目录,而规则中又对TEMP目录中运行程序进行了限制。特别是有些安装程序在临时目录中会生成扩展名为.tmp的临时文件并以可执行文件来运行,此时就只能为它开放TEMP目录中的所有程序的运行权限。安装完毕后记得恢复较严格的运行权限!
3.一些我认为绝对安全的程序也运行不了,怎么办?
建议专门设定一个目录用于存放可信任的应用程序,并对这个目录设置允许运行的规则。把在其他位置不能运行的程序放到这个目录运行就行了!
要想知道是哪个规则阻止了程序的运行,可查看事件日志。
4.如何将已经配置好的策略移植到其他电脑?
策略可以在本地安全策略中导出,再在其他电脑中导入。但目标电脑的操作系统一定要支持Applocker,即Windows7及以上版本的企业版和旗舰版。
5.对于未设置规则的路径或程序文件,想临时运行怎么办?
可在可执行规则中添加一条规则:允许,路径为即任何程序,Administrators组;为安全起见,例外中添加路径%OSDRIVE%\。这样,只需鼠标右键点击并选择以管理员身份运行即可,非常方便,但同时系统分区的其他不在允许规则中的程序却无法运行。这样既可灵活运行C:盘之外其他位置的用户程序,又可防范各种恶意程序在C:盘各个角落潜藏运行。
如果禁用了用户帐户控制 (UAC),则此条规则比较危险,因为当你以管理员身份登录时,几乎可运行一切程序而没有提示!因此本条规则慎用!
6.如何在命令行导出或导入策略文件?
运行cmd,再运行powershell,输入以下命令并回车执行之:
导出策略到指定文件:Get-AppLockerPolicy -Effective -Xml | Set-Content (‘c:\curr.xml’)
导入指定策略文件到系统:Set-AppLockerPolicy -XMLPolicy c:\curr.xml(导入时要求策略文件符合Applocker导出的XML格式)
7.如何高效地以一条规则有选择地处理某个厂商的系列软件?
可使用例外排除法。比如腾讯的各种产品中,我只想用它的QQ和微信主程序,其他的如QQ管家、QQ浏览器,甚至是QQ自带的其他组件我都不希望它运行,怎么办?可创建一个全局可执行规则,拒绝,Everyone,发布者,随便找一个腾讯程序来提取发布者信息,再在例外中添加\QQ.exe路径、微信安装程序和主程序文件则分别在例外中添加它们的发布者信息(级别到产品名称)。如此一来,除了例外中排除的程序外,其他的程序一律无法运行,从而极大地简化了规则。当然,如果我们把QQ安装在前述的专用用户程序文件夹,则有这一条拒绝规则即可顺利运行QQ;如果QQ在其他位置,则必须再为\QQ.exe、*\Wechat.exe分别创建允许规则,否则将无法运行。
8. 为什么Win10的Metro模式的WinApps不能使用?
你得在Applocker中应用“封装应用规则”,通常只需右键生成默认规则即可!
9.脚本规则在制定时的可控制参数太少,限制太严则偶尔使用不便,限制太松则危险性太大。怎么办?
可以在禁止Everyone运行脚本的基础上,设置允许本地管理员运行脚本,但建议系统盘除外。这样,万一以管理员身份在登录使用系统,当用户自己主动要运行脚本时,可以以管理员身份在非系统分区中运行(更严格一点的话可以限制在指定的目录下运行),而绝大多数恶意脚本可能被放在系统分区运行,通过这样的全局允许与系统分区的局部限制,可在安全性与方便性之间得到一个平衡。