Skip to main content

KerbWolf

Kerberos roasting and hash extraction toolkit for Active Directory.

CI PyPI Python 3.11+ License: Apache 2.0 Docs

Guide • Installation • Commands

  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.

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

Metadata

Release files for kerbwolf 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kerbwolf 0.4.0
File Size Uploaded
kerbwolf-0.4.0.tar.gz 591.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kerbwolf 0.4.0
File Interpreter ABI Platform
kerbwolf-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / kerbwolf-0.4.0.tar.gz

Download URL kerbwolf-0.4.0.tar.gz
Size 591.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9d1696d5794ef6fd8b2d33a0eb3da8410b0cc3b6bfd0677f9aade32afa81a9f7
BLAKE2b-256 checksum
How to use checksums
1fd8aebff682175e941ae87fbede0d9222e5a4736655d8fe79dabc3cf131abcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.

Transparency log

Release files / kerbwolf-0.4.0-py3-none-any.whl

Download URL kerbwolf-0.4.0-py3-none-any.whl
Size 577.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a174950d4b7bd221759e81fcbe688c2d324e4d6a84512e2129913c12212bcf75
BLAKE2b-256 checksum
How to use checksums
9e1635177155a66b55b236dd961a93ba57c7c49077cfb40a396609691c576e53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page