restrict which apps and files a user can run. Rules may be applied to the following file types:
Executable files: .exe, .com
Windows Installer files: .msi, .msp
Scripts: .js, .ps1, .vbs, .cmd, .bat
Packaged apps: .aappx
Dynamic-Link Libraries: .dll
In practice, Dynamic-Link libraries are not typically restricted, since Microsoft requires administrators to explicitly enable this rule collection due to reduced system performance issues.
Enumerating AppLocker
Get-AppLockerPolicy-Effective -Xml
<SNIP><FilePathRule Id="921cc481-6e17-4653-8f75-050b80acca20" Name="(Default Rule) All files located in the Program Files folder" Description="Allows members of the Everyone group to run applications that are located in the Program Files folder." UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions> <FilePathConditionPath="%PROGRAMFILES%\*" /> </Conditions></FilePathRule><SNIP>
...[SNIP]...<RuleCollectionType="Exe"EnforcementMode="Enabled"> <FilePathRule Id="921cc481-6e17-4653-8f75-050b80acca20" Name="(Default Rule) All files located in the Program Files folder" Description="Allows members of the Everyone group to run applications that are located in the Program Files folder." UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions> <FilePathConditionPath="%PROGRAMFILES%\*" /> </Conditions> </FilePathRule> <FilePathRule Id="a61c8b2c-a319-4cd0-9690-d2177cad7b51" Name="(Default Rule) All files located in the Windows folder" Description="Allows members of the Everyone group to run applications that are located in the Windows folder." UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions> <FilePathConditionPath="%WINDIR%\*" /> </Conditions> </FilePathRule> <FilePathRule Id="fd686d83-a829-4351-8ff4-27c7de5755d2" Name="(Default Rule) All files" Description="Allows members of the local Administrators group to run all applications." UserOrGroupSid="S-1-5-32-544" Action="Allow">
<Conditions> <FilePathConditionPath="*" /> </Conditions> </FilePathRule></RuleCollection>...[SNIP]...
Enumerate folders inside %WINDIR% which standard users can both write to and execute from:
Copying NotMalware.exe to C:\Windows\Tasks, we notice that AppLocker does not prevent us from running the file
A brief look at the default ruleset for restricting scripts shows that the same bypass can be used.
...[SNIP]...<RuleCollectionType="Script"EnforcementMode="Enabled"> <FilePathRule Id="06dce67b-934c-454f-a263-2515c8796a5d" Name="(Default Rule) All scripts located in the Program Files folder" Description="Allows members of the Everyone group to run scripts that are located in the Program Files folder." UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions> <FilePathConditionPath="%PROGRAMFILES%\*" /> </Conditions> </FilePathRule> <FilePathRule Id="9428c672-5fc3-47f4-808a-a0011f36dd2c" Name="(Default Rule) All scripts located in the Windows folder" Description="Allows members of the Everyone group to run scripts that are located in the Windows folder." UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions> <FilePathConditionPath="%WINDIR%\*" /> </Conditions> </FilePathRule> <FilePathRule Id="ed97d0cb-15ff-430f-b82c-8d7832957725" Name="(Default Rule) All scripts" Description="Allows members of the local Administrators group to run all scripts." UserOrGroupSid="S-1-5-32-544" Action="Allow">
<Conditions> <FilePathConditionPath="*" /> </Conditions> </FilePathRule></RuleCollection>...[SNIP]...