锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
如何通过修改注册表绕过AppLocker

作者: 佚名  日期:2017-05-25 08:24:57   来源: 本站整理

 一、前言
AppLocker(应用程序控制策略)已经成为限制Windows主机的事实上的标准。AppLocker是Windows 7及Windows Server 2008 R2开始引入的一项新功能,是软件限制策略(Software Restriction Policies,SRP)的后继者。管理员可以使用AppLocker允许特定用户或用户组运行特定程序,同时也可以拒绝访问其他程序。
在本文中,我们将向读者介绍一种通过修改注册表键值以绕过AppLocker的简单方法。
我们的目标是在默认安装的Windows主机上,利用AppLocker默认规则中信任的任何程序运行任意代码。同时我们不会使用某些常用的可疑程序来实现这一目标,如regsvr32、 rundll32、InstallUtil、regsvsc、regasm、powershell、powershell_ise以及cmd。
二、环境配置
Windows 10实验主机上的AppLocker规则如下所示:

细心的读者可能会注意到,我们可以使用几种方法绕过上述规则。比如,某人可以在“ftp.exe”程序中,在任意命令前加上“!”符号,就可以执行任意命令,也可以将任何受限程序拷贝到“C:\Windows”目录中的任何一个可写目录(如“C:\Windows\Task”,“授权用户(Authenticated Users)”组的成员默认情况下都可以写这些目录)完成执行目的。这些AppLocker规则并不意味着系统对攻击者来说是坚不可摧的,其目的在于确保攻击者不能使用规则所禁止应用程序来绕过AppLocker。
此外,虽然上述策略是基于路径条件的规则,但本文描述的方法也能绕过基于程序发布者(Publisher)以及文件哈希(File Hash)的AppLocker限制策略。
三、技术细节
这项技术最开始的出发点是基于CPL的绕过思路。CPL本质上就是.dll文件,这些文件的导出函数为CPIApplet回调函数。控制面板通过CPL将所有选项在同一个位置呈现给用户。
我创建了一个dll文件,将其扩展名改为.cpl,双击该文件。这种方式与在命令行中运行“control.exe 
”的效果一致,最终会执行MainDLL函数中的代码。不幸的是,在我们的实验环境中,这样做会导致rundll32弹出AppLocker错误窗口:

然而,使用rundll32运行控制面板自带的CPL却是可行的。这样我们就会有两个疑问:
1、控制面板如何加载默认的CPL?
2、控制面板从何处获取CPL列表?
第一个问题跟我们最终的目标关系不大,因为我们知道,在此时此刻,控制面板并没有使用rundll32或者其他黑名单程序来加载默认的CPL。如果你想进一步了解这个问题,你可以在shell32.dll中找到COpenControlPanel COM对象(06622D85-6856-4460-8DE1-A81921B41C4B)的函数:

有趣的是,观察control.exe程序的字符串,我们发现某些CPL(比如joy.cpl)仍然是通过rundll32启动的。为了证实这一点,我们可以在控制面板中,点击“设置USB游戏控制器(Set up USB game controllers)”,此时会再次弹出rundll32的AppLocker错误窗口。
接着看下一个问题,控制面板从何处获取CPL列表?通过Procmon我们可以快速找到问题的答案:

注册表中的“HKLM\Software\Microsoft\Windows\CurrentVersion\Control Panel\CPLs”包含一个CPL列表,这些CPL会在控制面板启动时加载:

我们发现系统也会检查HKCU中相同的路径!默认情况下,每个用户对他们自己的hive文件都具有写权限。MSDN有一篇非常有趣的文章,其中介绍了如何注册dll控制面板选项。我们只关心如何加载我们自己的CPL,因此文章介绍的第一个步骤就能满足我们需求。
我们可以使用多种方法,来修改我们自己的注册表:
1、使用“reg”命令:

2、使用“regedit”或者“regedt32”程序:

3、使用VBScript脚本:

4、使用Jscript脚本:

“reg“和”regedit“都是微软签名的程序,都位于可信的目录中,因此默认情况下不会被AppLocker拦截:
如果这两个程序被组策略所阻止,那么JScript以及VBScript应该也能奏效。
此外我们还可以通过各种方法启动控制面板:
1、运行C:\windows\system32\control.exe
2、使用%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Control Panel.lnk快捷方式
3、直接使用CLSID:    
shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}
shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}
shell:::{ED7BA470-8E54-465E-825C-99712043E01C}
4、使用映射文件夹(Junction Folder):
My Control Panel.{ED7BA470-8E54-465E-825C-99712043E01C}
因此,绕过AppLocker并不难。首先,我们可以创建一个启动命令提示符的DLL文件,当然使用其他载荷也可以,为了演示方便,我们还是使用这种简单示例。将DLL拷贝到某个可写的目录中,比如桌面或者临时文件夹中,根据需要将其重命名为CPL文件,然后使用前文描述的方法将这个CPL的路径写入HKCU注册表中,使用前面提到的任何一种方法启动控制面板。这样控制面板就会加载这个DLL文件,最终弹出一个命令提示符:

四、总结
本文介绍的方法可能不是绕过AppLocker的最简单或者最直接的方法,然而它的确提出了另一种可行的攻击方法,攻击者可以利用该方法在受限的计算机上运行任意代码。
如果不考虑性能影响,我们可以在AppLocker属性窗口的“Advanced“选项卡中,启用”DLL Rule Collection“选项避免这种攻击方式:



热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等