Skip to main content

KerbWolf

Kerberos roasting and hash extraction toolkit for Active Directory.

CI PyPI Python 3.11+ License: Apache 2.0 Docs

GuideInstallationCommands

  1. Kerberos roasting - extract crackable hashes from Kerberos authentication
  2. Timeroasting - unauthenticated MS-SNTP hash extraction for computer and gMSA accounts
  3. Pcap extraction - offline Kerberos, NTLM, and SNTP hash extraction from network captures

Example

Kerberoast every SPN account discovered over LDAP and write hashcat-ready hashes:

$ kw-roast -k -c admin.ccache --ldap
[+] sql_svc      $krb5tgs$23$*sql_svc$CORP.LOCAL$MSSQLSvc/db01*<...>   (hashcat 13100)
[+] backup_svc   $krb5tgs$18$*backup_svc$CORP.LOCAL$cifs/fs01*<...>    (hashcat 19700)
[*] 2 SPN accounts roasted -> hashes.txt

Installation

Install from PyPI:

uv tool install kerbwolf        # recommended
pip install kerbwolf             # or with pip

Or install from source:

uv tool install git+https://github.com/StrongWind1/KerbWolf

See the installation guide for development setup and dependencies.

Kerberos roasting

Request encrypted tickets from domain controllers and crack them offline. Supports all 5 Windows encryption types.

Command Attack Auth required
kw-roast TGS-REP Roast (Kerberoast) Yes (password, hash, or ccache)
kw-asrep AS-REP Roast No (LDAP discovery needs auth)
kw-tgt TGT acquisition (pass-the-key) Yes
# Get a TGT
kw-tgt -d CORP.LOCAL --dc-ip 10.0.0.1 -u admin -p 'Password1!' -o admin.ccache

# Kerberoast via LDAP auto-discovery
kw-roast -k -c admin.ccache --ldap

# AS-REP Roast
kw-asrep -d CORP.LOCAL --dc-ip 10.0.0.1 -t jsmith

Features: LDAP enumeration, hashcat + John output, all 5 etypes (DES/RC4/AES128/AES256), ccache auto-detection, DNS SRV resolution, TCP/UDP with auto-fallback.

Timeroasting

Extract password-equivalent hashes from domain controllers via MS-SNTP. No authentication needed - just a valid RID.

Command Auth required
kw-timeroast No (LDAP discovery needs auth)
# Blind RID scan (no auth)
kw-timeroast 10.0.0.1 -r 500-5000 -o hashes.txt

# LDAP discovery + cracking wordlist
kw-timeroast 10.0.0.1 --ldap -d CORP.LOCAL -u admin -p 'Pass!' --wordlist crack.txt

Features: 68-byte MD5 (hashcat 31300) + 120-byte KDF+HMAC-SHA512, current/previous password selection, LDAP discovery of computer + gMSA accounts, cracking wordlist output.

Pcap extraction

Extract all crackable hashes from network captures. One tool, all protocols.

Command What it extracts
kw-extract Kerberos (AS-REQ, AS-REP, TGS-REP), SNTP (timeroast), NTLM (NTLMv1, NTLMv1-ESS, NTLMv2, LMv2)
# Extract everything from a capture
kw-extract capture.pcap -o hashes.txt

# Pipe from tcpdump
tcpdump -i eth0 -w - 'port 88 or port 123 or port 445' | kw-extract -

Kerberos (port 88): AS-REQ pre-auth timestamps, AS-REP encrypted parts, TGS-REP service tickets. All 5 etypes, 15 hash formats.

SNTP (port 123): 68-byte MD5 and 120-byte KDF+HMAC-SHA512 timeroast responses.

NTLM (8 transports): Extracts NTLMv1, NTLMv1-ESS, NTLMv2, and LMv2 hashes with automatic TCP stream reassembly and Type 2/Type 3 connection tracking.

Transport Ports Spec
SMB 445, 139 [MS-SMB], [MS-SMB2]
HTTP 80 [MS-NTHT]
WinRM 5985, 5986 [MS-WSMV]
LDAP 389 SASL/SPNEGO
SMTP 25, 587 [MS-SMTPNTLM]
POP3 110 [MS-POP3]
IMAP 143 [MS-OXIMAP]
Telnet 23 [MS-TNAP]

Attack matrix

Kerberos (15 hash types)

DES-CBC-CRC (1) DES-CBC-MD5 (3) AES128 (17) AES256 (18) RC4 (23)
AS-REQ $krb5pa$1$ $krb5pa$3$ $krb5pa$17$ (19800) $krb5pa$18$ (19900) $krb5pa$23$ (7500)
AS-REP $krb5asrep$1$ $krb5asrep$3$ $krb5asrep$17$ (32100) $krb5asrep$18$ (32200) $krb5asrep$23$ (18200)
TGS-REP $krb5tgs$1$ $krb5tgs$3$ $krb5tgs$17$ (19600) $krb5tgs$18$ (19700) $krb5tgs$23$ (13100)

Numbers in parentheses are hashcat mode numbers. The 9 RC4/AES modes work in hashcat and John today.

Timeroasting (MS-SNTP)

Format Algorithm Hashcat mode
68-byte Authenticator MD5(NTOWFv1 || salt) 31300
120-byte ExtendedAuth KDF(SP800-108, HMAC-SHA512) proposed

NTLM (from pcap)

Type Hashcat mode
Net-NTLMv1 / NTLMv1-ESS 5500
Net-NTLMv2 / LMv2 5600

Development

git clone https://github.com/StrongWind1/KerbWolf.git
cd KerbWolf
uv sync                        # install dev dependencies
make check                     # run lint + typecheck + tests
make docs                      # build documentation
make format                    # auto-fix formatting
make build                     # build wheel (runs check + docs first)

Credits

Built on Impacket and ldap3. Inspired by Rubeus, GetUserSPNs.py, and hashcat.

Related tools

Other projects in this collection:

  • AD-SecretGen - derive AD password hashes and Kerberos keys from a password
  • NTDSWolf - offline NTDS.dit parser and credential extractor
  • CredWolf - Active Directory credential validation
  • Kerberos - Kerberos in Active Directory: protocol, security, and attacks

Disclaimer

KerbWolf is intended for authorized penetration testing, red team engagements, and security audits only. You must have explicit written permission from the system owner before attacking any Active Directory environment. Unauthorized access to computer systems is illegal. The authors are not responsible for any misuse or damage caused by this tool.

License

Apache License 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kerbwolf-0.4.0.tar.gz (591.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kerbwolf-0.4.0-py3-none-any.whl (577.5 kB view details)

Uploaded Python 3

File details

Details for the file kerbwolf-0.4.0.tar.gz.

File metadata

  • Download URL: kerbwolf-0.4.0.tar.gz
  • Upload date:
  • Size: 591.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for kerbwolf-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9d1696d5794ef6fd8b2d33a0eb3da8410b0cc3b6bfd0677f9aade32afa81a9f7
MD5 bad978247c2dc9166a50e91b3d725e9a
BLAKE2b-256 1fd8aebff682175e941ae87fbede0d9222e5a4736655d8fe79dabc3cf131abcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for kerbwolf-0.4.0.tar.gz:

Publisher: publish.yml on StrongWind1/KerbWolf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kerbwolf-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: kerbwolf-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 577.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for kerbwolf-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a174950d4b7bd221759e81fcbe688c2d324e4d6a84512e2129913c12212bcf75
MD5 e110e975e934ee92dca58fe68634e9f4
BLAKE2b-256 9e1635177155a66b55b236dd961a93ba57c7c49077cfb40a396609691c576e53

See more details on using hashes here.

Provenance

The following attestation bundles were made for kerbwolf-0.4.0-py3-none-any.whl:

Publisher: publish.yml on StrongWind1/KerbWolf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page