Do you Control Thy Applications?

Application Control or Restriction policies are a very powerful security control solution. It is a very powerful way of doing things, but it is also the least deployed feature from what I have seen in all the PC and VDI deployments I have worked with over the past 19 years too.

With the release of Windows XP release in 2001 is when Software Restriction Policies first arrived and then renamed to AppLocker when Windows 7 was released. Without an application execution restriction system then you are at risk for sure even with an Antivirus solution deployed too. When execution is unrestricted and phishing email is sent with a malicious executable your only hope is your AV solution to know it is bad and block it. Defense in depth is a basic security strategy to use solutions in a layered methodology to attempt to secure the gaps between the solutions and provide an overall more secure deployment. Using Application Control\Allowlisting is a key component of any Windows security strategy.

Now there are two main ways you can do application restriction and control with Microsoft right now.

  1. AppLocker
  2. Windows Defender Application Control (WDAC)

Why is this the least deployed Security Policy?

Here are some of my guesses why it isn’t used as much.

  1. Hardly ever talked about at Microsoft Events.
    1. It isn’t that bright and shiny of a feature to get a lot of attention.
    1. Microsoft has gone over many generations\eras of their enterprise product offerings and that hasn’t helped bolster this AppLocker ability. Most of the news at these events are about the next release and just a quick overview of some of the features that are deemed most relevant in a pile of features that have been continually added.
    1. Some of the big Microsoft Product Eras:
      1. Desktop Operating System
      1. Office Products
      1. Server Operating System
      1. Exchange
      1. SQL
      1. Xbox
      1. Mobile Phones
      1. Tablets
      1. CRM, Maps, .Net
      1. Office365
      1. Azure
      1. HoloLens AR and VR
      1. Teams
  2. Not a lot of Fan Fare on the Internet overall for it
    1. With not a lot of attention at the Microsoft Events this trickles down to the internet too, where there are not lot of step-by-step guides out there on how things could\should be deployed.
    1. There also isn’t lots of chatter in the forums or on other social media about it which just further keeps it out of the mainstream deployment tasks for many deployments.
  3. Not a lot of Training
    1. Trying to find some training on how to implement it beyond just the documentation on the Microsoft website can be tough. There are lots of ways AppLocker could be deployed along with WDAC and I don’t think there is an official wrong way, but there are also ways that can make things easier for you and your users in a phased approach.
  4. Constant Windows Upgrades steal the focus
    1. Keeping up with 2 Windows Builds each year can be a more than full time job depending on the number of endpoints and the amount of applications you have to support. With a now 18-month and 30-month release cycle we don’t get an operating system for 2-10 years like we had just 5 years ago. This new faster update tempo leaves less time for new things to be introduced.  Less time each year leaves less time to add a new control like AppLocker or WDAC or other Allowlisting solutions.
  5. Bad Deployment Experiences
    1. If anyone has tried to deploy AppLocker and didn’t get a chance to do it slowly and use the “Audit only” ability, then you probably only allowed the programs you thought your users were using and you may have missed the “others” they are actually running. Then many tried to roll it out too fast and then instead of adding the missing programs when they come up, they just turn the enforcement off to get things back and operational again.
  6. Who is going to manage it?
    1. Windows or Security admins are normally the top two roles that may be on the hook for maintaining solutions. From where I have seen AppLocker or WDAC implemented over 80% were managed by the Windows team. When you make it to a pure allowlist situation there will be a good chunk of maintenance required to keep updated programs running or allowing new programs to run. Depending on how you deploy each solution will determine if every update you must change or change settings.

Pros and Cons of using AppLocker

Pros

  • Free’ish
    • If you own a Windows, then you are entitled to use AppLocker. The only cost to you past that is your time configuring, testing and then deploying it. Depending on the number of applications and the methods used it can take a while or be very quick when there may only be 20-30 applications a user “needs” to run. I have seen it take a couple days to a couple months.
      • Windows Enterprise and Education Editions (Windows 7, 8 and 10) and all Server Operating Systems.
  • Secure all the Application Launches (Long Road)
    • Denylist – Great place to start off to understand the mechanics of the AppLocker and be able to stop access to many applications that cannot be blocked via Group Policies.
    • Allowlist – Only allowing defined applications to run is a great place to be at and can eliminate a lot of potential threats but it also means that it will be a long-term relationship too.
  • Can secure things to also catch gaps in many Antivirus solutions too
    • Antivirus solutions look for known bad things and then also look for abnormal programs that are not within the windows system along with looking at possible malicious methods with good OS programs used for bad things.

Cons

  • No easy button
    • This isn’t a solution you just go into the Group Policy Management Console and click some things and you will be done in a couple minutes like the thousands of other policies for Windows.
      • Also, the more you configure the more complicated this console will be, and auditing will become more difficult. I hope that this can be modernized and integrated with some launching analytics of what is used. Then you can step into things slowly but then be able to adjust quickly when there are issues that need to be Allowed and/or Denied.
  • Long Term Relationship
    • Have to be agile to adjust policies on a regular basis with Program Updates and New Programs. If you end up using File Hashes to define a program to run or not run then when that program gets updated the policy will need to be adjusted which may mean making a policy for the new and the old at the same time until the old is removed.
  • Smaller Support Community
    • I hope this changes this year, but there isn’t as much help and chatter that you can use to help you when your deploying or get into a weird configuration state. The good thing is the solution is pretty simple to administer but you can sometimes need help on what to do next or in this situation and that can be hard to find like so many other things with an internet search.

Pros and Cons of using Windows Defender Application Control

Pros

  • Official Windows Security Project
  • Free’ish
    • If you own a Windows, then you are entitled to use AppLocker. The only cost to you past that is your time configuring, testing and then deploying it. Depending on the number of applications and the methods used it can take a while or be very quick when there may only be 20-30 applications a user “needs” to run. I have seen it take a couple days to a couple months.
      • Windows Enterprise and Education Editions (Windows 7, 8 and 10) and all Server Operating Systems.
  • Fast to Implement
    • Once you have your master image ready to roll you run a single command to show the system what is allowed to run and anything else will not be allowed to execute.
  • Can secure things to also catch gaps in many Antivirus solutions too
    • Antivirus solutions look for known bad things and then also look for abnormal programs that are not within the windows system along with looking at possible malicious methods with good OS programs used for bad things.

Cons

  • No pretty console.
    • It uses a series of command line operations to make .p7b files that are then placed under C:\Windows\System32\CodeIntegrity to get the party started with Audit or Enforced Mode.  Editing this file and running a new scan is needed with program updates as binaries change
  • Fast to Fail
    • Since it is either on or off for everything unlike AppLocker which can just Denylist things for specific users.  You still have Audit and Enforced mode, but it is an all or nothing kind of thing.
  • Signed Applications
    • Do you have them?  If not, then you have another process that is required to get them going with WDAC to get the catalog
  • No easy button
    • This isn’t a solution you just go into the Group Policy Management Console and click some things and you will be done in a couple minutes like the thousands of other policies for Windows.
      • I hope that this can be modernized and integrated with some launching analytics of what is used. Then you can step into things slowly, but then be able to adjust quickly when there are issues that need to be Allowed and/or Denied.
  • Long Term Relationship
    • You have to be agile to adjust policies on a regular basis with Program Updates and New Programs. Every update to signed applications that have a new certificate will have to be reauthorized and if it is unsigned you may also have to make a new catalog also.
  • Even Smaller Support Community
    • Unlike AppLocker this has only been around in its current form since Windows 10. This is not as easy to administer as AppLocker because there is no GUI and all CLI commands and how it is either on or off. I think Microsoft is starting pick this as the new go forward strategy.

Other Application Limiting Options (Application Control)

This industry is normally called Application Control when you are looking for a product that does Application Allowlisting and/or control application launching. There are a couple other ways to accomplish the same thing with AppLocker under the hood and a different management UI and/or a different solution all together that uses its own methods for limiting application launches.

Antivirus Solutions

This is the most common alternate method I see deployed. Depending on your vendor this process could be easier or harder than using AppLocker. Depending on the size of the organization and the AV solution will determine your capabilities.  In many cases depending on how you have integrated your AV solution you may have ended a notification system already setup for alerts which can make deploying application control easier. Finding a deployment that has a good Windows Event Log forwarding solution is far and few between. So, with better out of the box alerting and maybe UI that is close to AppLocker then it may win in your deployment. This also comes back to who runs Application Allowlisting?  Windows or the Security teams. Another part of this equation is licensing costs for your AV, many include this feature or some charge for it as a premium add-on so check with your AV vendor.

Purpose Built Solutions

There is a growing market for this type of solution based on the attack surface ever growing and limiting the execution can slow lateral movement in many attacks if implemented in a strict method. There are lots of solutions out there and some are related to also your firewall vendor like Checkpoint, Cisco, Palo or Fortinet because they all have some form of threat protection clients.

Then you have Privileged Account Management solutions like BeyondTrust and CyberArk which go into the Threat Intelligence space, but also have Application control abilities too. The main one that I have seen deployed for years is Ivanti’s Application Control (Under a couple different names, AppSense Application Manager and some others during its transitions) which had abilities that other solutions didn’t. Some solutions still don’t have the ability remove access to menus within an application like Ivanti Application Control has. Depending on your relationship and solution from your AV and/or Firewall vendor these solutions may make it easier to get started and may keep your list of vendors you need to support lower too.

PolicyPak

Then last but not least you have solutions like PolicyPak which go way beyond Application Control.  It does so many things that every Windows administrator needs to make their job easier. Their product Least Privilege Manager is amazing when it comes to reducing or eliminating practical threats by removing admin rights, limiting application launches based not only by rules, but also by file ownership to control what a user can launch automatically without a lot of tuning and policies. If a user has downloaded something shady it won’t allow it to execute. SecureRun is what PolicyPak calls this magical solution that gets configured in just a couple clicks and then define what AD group member installed the application and you’re done. Then anything that wasn’t installed by the Admins in that group will not be allowed to run as a user. Being able to limit application execution this quickly is why in my opinion it can be the best solution especially with all the other useful features that all Windows deployments could use if your running multiple browsers, Java and many other items.  Check it out!

Top 3 Things to Do to Secure Windows 10 with AppLocker

First make a GPO that applies to your Test Users and then Deny your Administrators or whoever you deem should run PowerShell to Deny the GPO from applying so they can still user PowerShell when needed, which is very often.

  1. Limit User PowerShell Access – PowerShell is a very common method for Recon and execution of malicious items as an attacker. PowerShell Restriction policies are an ok start, but there are too many ways to work around them if you have access to the console. Setting up AppLocker to block both the 32bit and 64bit versions of the shell are important but also make sure you block access to ISE also since allowing it just helps a potential attacker from making syntax errors. If you are going to Limit PowerShell, make sure you also limit Command Prompt Access with its group policy too (GPO:User Configuration/Administrative Templates/System/Prevent access to the command prompt)
    1. To get to AppLocker in your GPO Editor head here.
    1. GPO: Computer Configuration\Policies\Windows Settings\Security Settings\Application Control Policies\AppLocker
    1. These are the Paths you will want to “Deny” Access to.
      1. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
      1. C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
      1. C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
      1. C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe
  2. Application Auditing – What are your users launching on a daily basis?  You can use AppLocker or WDAC and the Windows Logs to find out. There is also no need to boil the ocean especially in a VDI (Server or Desktop) deployment because you can just enable it on one or some of your desktops or servers to get enough of a sampling to make your rules along with having a better application list for free. Setting up the policies for “Audit Only” is easy to do and there is a low to no risk turning it on in most deployments. Then once it is on you can just filter the logs and look for this log Event ID
    1. You should see an 8003 Event Error if you have AppLocker Enabled to “Audit Only”
    1. Then later in your journey you will eventually see this when you start enforcing the policies.
      1. You should see an 8004 Event Error if you have AppLocker Enabled to “Enforce Rules”
  3. Use Something – This may be an unlikely Top 3, but using Application Control whether using Microsoft AppLocker, WDAC, AV solution or one of the other solutions to regulate the launching of unknown applications.
    1. Level 1 – Audit Only on a couple systems to get a profile of what should be allowed to run.
      1. This may lead you to a Windows Event Log Forwarding solution so you can view these logs and know when unknown applications are launched that could have been blocked and later in the process of what was blocked.
    1. Level 2 – Limit Admin Applications (Denylist) this is a good way to get used to the mechanics and the console and you will start to get an understanding of how much work it can be to allowlist all your applications.
    1. Level 3 – Allowlist only authorized applications this will be a long road depending on the amount of applications and just like mentioned earlier this will be a long-term relationship as applications are updated and new programs are assimilated in your deployment. Most deployments that have an Application Control solution usually have a good Windows logging solution to be able to know what is being blocked and adjust policies or even start an incident response.

What to expect when deploy AppLocker or other Application Control solutions?

Just like any IT solution you deploy without proper planning and testing it isn’t going to be a good time for you or your users. You need to plan on how you want to implement and which department or group you want to start with and then if you are going to make things a standard or not for all systems.  A good application inventory will help you also to know what is expected to run on each system type.

Knowing what your endgame is very important too. The goal for any application control deployment should be the total allowlisting of all applications that users interact with or whatever is equivalent for the solution you pick. Getting to that goal will take some time and you shouldn’t think this will can be done over a weekend without some planning and testing.

There will be bumps in the road when you start to “Enforce” your policies, there will be something that you didn’t think users were using and or even ones they didn’t launch during your auditing and planning phase. If you put most of your effort in planning, auditing and testing you will be able to have less bumps along the way and provide a better solution too. There will be programs that you did define, but after an upgrade you will need to either update the rules, replace the rules or add new rules during the upgrade period until you can remove them after the upgrade is replaced. Keeping track of these type of things will be something new that you haven’t had to do before an application control solution. Also know that if you are allowing an older version of a program to run you may still be better off than most because you are limiting applications from launching, but you also need to know where your threats are based on what is allowed to run.

I hope this has helped explain a little bit about Microsoft AppLocker, Microsoft Defender Application Control and some of the other Application Control options and what they can do for you and what you have to do for them. You will see and hear more about AppLocker and WDAC from me later this year in much more detail. Your mileage will vary with each of these solutions based on your applications and your update tempo and staffing. Running some application control solution is highly recommended in any windows deployment to help slow and/or stop the attackers.

If you want to learn more about AppLocker then I suggest following @OddvarMoe on Twitter and his blog https://oddvar.moe he has done so much work as a Microsoft MVP and a Red Teamer to work to get the word out on how to get AppLocker going, how to Harden it and how bypasses work.  He was the first to talk about a LOLBIN (Living off the Land Binaries) which is a methodology of using known good windows programs to do malicious or unintended things because they are trusted. He has now started LOLBAS (Living off the Land Binaries and Scripts) which incorporates some of the scripts that Windows has to do things too.  I would check out his GitHub because there is awesome stuff for Red Teamers (Attackers) and Blue Teams (Defenders).

Microsoft Documentation Links

https://docs.microsoft.com/en-us/windows/security/threat-protection/applocker/applocker-policies-deployment-guide

https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/using-event-viewer-with-applocker

https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/windows-defender-application-control

https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/deploy-catalog-files-to-support-windows-defender-application-control

Great way to deploy AppLocker is using AaronLocker Scripts.  Great Documentation!  I highly recommend starting with this because it helps automate a lot of the rules getting created based on where the user has rights to write.

https://github.com/microsoft/AaronLocker

Great Visual Timeline of Microsoft History

https://www.computerhope.com/history/windows.htm

https://en.wikipedia.org/wiki/Timeline_of_Microsoft