
Hashcat-Referenz für OSCP/Penetrationstests: Hash-Identifizierung, Cracking-Syntax für Linux, Windows, Archive, Datenbanken, Kerberos-Tickets und regelbasierte Angriffe.
Hashcat-Cheatsheet für OSCP https://hashcat.net/wiki/doku.php?id=hashcat
hash-identifier
Beispiel-Hashes: https://hashcat.net/wiki/doku.php?id=example_hashes
Ich habe festgestellt, dass ich meinem Hash-Knacken mit diesen Parametern noch etwas mehr Leistung entlocken kann:
--force -O -w 4 --opencl-device-types 1,2
Diese zwingen Hashcat, das CUDA-GPU-Interface zu verwenden, das fehleranfällig ist, aber mehr Leistung bietet (–force), optimieren für Passwörter mit 32 Zeichen oder weniger (-O) und setzen die Arbeitslast auf "Insane" (-w 4), was deinen Computer während des Knackvorgangs praktisch unbenutzbar machen soll. Schließlich erzwingt "--opencl-device-types 1,2", dass HashCat sowohl die GPU als auch die CPU für das Knacken verwendet.
Erstelle eine .hash-Datei mit allen Hashes, die du knacken möchtest, puthasheshere.hash: $1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/
Hashcat-Beispiel zum Knacken von Linux-md5crypt-Passwörtern $1$ mit rockyou:
hashcat --force -m 500 -a 0 -o found1.txt --remove puthasheshere.hash /usr/share/wordlists/rockyou.txt
Hashcat-Beispiel zum Knacken von Wordpress-Passwörtern mit rockyou:
hashcat --force -m 400 -a 0 -o found1.txt --remove wphash.hash /usr/share/wordlists/rockyou.txt
Beispiel-Hashes http://openwall.info/wiki/john/sample-hashes
Not So Secure hat eine benutzerdefinierte Regel erstellt, mit der ich in der Vergangenheit Erfolg hatte:
https://www.notsosecure.com/one-rule-to-rule-them-all/
Die Regel kann von ihrer Github-Seite heruntergeladen werden:
https://github.com/NotSoSecure/password_cracking_rules
Normalerweise lege ich OneRuleToRuleThemAll.rule in den Unterordner rules und führe sie von meinem Windows-Rechner aus folgendermaßen aus (basierend auf dem notsosecure-Artikel):
hashcat64.exe --force -m300 --status -w3 -o found.txt --remove --potfile-disable -r rules\OneRuleToRuleThemAll.rule hash.txt rockyou.txt
predefined charsets
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff
?l?d?u ist dasselbe wie:
?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Führe Brute-Force für alle Passwörter der Länge 1-8 mit den möglichen Zeichen A-Z a-z 0-9 aus
hashcat64 -m 500 hashes.txt -a 3 ?1?1?1?1?1?1?1?1 --increment -1 ?l?d?u
| ID | Beschreibung | Typ |
|---|---|---|
| 3000 | LM | Betriebssysteme |
| 1000 | NTLM | Betriebssysteme |
Nach dem Sichern oder Auslesen der NTDS.dit- und SYSTEM-Registrierungshive-Datei oder dem Auslesen des LSASS-Speichers von einem Windows-Rechner erhältst du oft NTLM-Hashes.
| Pfad | Beschreibung |
|---|---|
| C:\Windows\NTDS\ntds.dit | Active-Directory-Datenbank |
| C:\Windows\System32\config\SYSTEM | Registry-Hive, der den Schlüssel zum Verschlüsseln der Hashes enthält |
Und mit Impacket die Hashes dumpen
impacket-secretsdump -system SYSTEM -ntds ntds.dit -hashes lmhash:nthash LOCAL -outputfile ntlm-extract
Du kannst den NTLM-Hash-Dump mit der folgenden Hashcat-Syntax knacken:
hashcat64 -m 1000 -a 0 -w 4 --force --opencl-device-types 1,2 -O d:\hashsample.hash "d:\WORDLISTS\realuniq.lst" -r OneRuleToRuleThemAll.rule
Benchmark mit einer Nvidia 2060 GTX: Geschwindigkeit: 7000 MH/s Wiederherstellungsrate: 12.47% Benötigte Zeit: 2 Stunden 35 Minuten
Ein Dienstprinzipalname (Service Principal Name, SPN) ist eine eindeutige Kennung einer Dienstinstanz. SPNs werden von der Kerberos-Authentifizierung verwendet, um eine Dienstinstanz einem Dienst-Anmeldekonto zuzuordnen. Dadurch kann eine Clientanwendung verlangen, dass der Dienst ein Konto authentifiziert, selbst wenn der Client den Kontonamen nicht kennt. KRB5TGS - Kerberoasting von Dienstkonten, die SPN verwenden: Sobald du ein Kerberoastbares Dienstkonto identifiziert hast (Bloodhound? Powershell Empire? - wahrscheinlich ein MS SQL Server-Dienstkonto), kann jeder AD-Benutzer einen krb5tgs-Hash davon anfordern, der zum Knacken des Passworts verwendet werden kann.
Basierend auf meinen Benchmarks ist das Knacken von KRB5TGS 28-mal langsamer als das von NTLM.
Hashcat unterstützt mehrere Versionen des KRB5TGS-Hashes, die leicht an der Zahl zwischen den Dollarzeichen im Hash selbst zu erkennen sind.
KRB5TGS Typ 23 - Die Nur-Menschen-Wortliste von Crackstation mit der OneRuleToRuleThemAll-Mutationsregelliste.
hashcat64 -m 13100 -a 0 -w 4 --force --opencl-device-types 1,2 -O d:\krb5tgs.hash d:\WORDLISTS\realhuman_phill.txt -r OneRuleToRuleThemAll.rule
Benchmark mit einer Nvidia 2060 GTX: Geschwindigkeit: 250 MH/s Benötigte Zeit: 9 Minuten
Möglicherweise wirst du gebeten, ein Passwort aus einer SMB-Authentifizierung (NTLMv2) aus einem Paketmitschnitt wiederherzustellen. Im Folgenden findest du einen 9-stufigen Prozess, um den Hash dafür korrekt zu formatieren. https://research.801labs.org/cracking-an-ntlmv2-hash/
unshadow passwd-file.txt shadow-file.txt
unshadow passwd-file.txt shadow-file.txt > unshadowed.txt
zip2john Zipfile.zip | cut -d ':' -f 2 > hashes.txt
hashcat -a 0 -m 13600 hashes.txt /usr/share/wordlists/rockyou.txt
Hashcat scheint Probleme mit einigen von zip2john erzeugten ZIP-Hash-Formaten zu haben. Du kannst das beheben, indem du den Inhalt des ZIP-Hashes so anpasst, dass er dem Beispiel-ZIP-Hash-Format auf der Beispielseite von Hashcat entspricht:
$zip2$*0*3*0*b5d2b7bf57ad5e86a55c400509c672bd*d218*0**ca3d736d03a34165cfa9*$/zip2$
John scheint beim Knacken eine größere Bandbreite an ZIP-Formaten zu akzeptieren.
PRINCE (PRobability INfinite Chained Elements) ist ein Hashcat-Dienstprogramm zum zufälligen Generieren wahrscheinlicher Passwörter:
pp64.bin --pw-min=8 < dict.txt | head -20 shuf dict.txt | pp64.bin --pw-min=8 | head -20
Referenz:
https://github.com/hashcat/princeprocessor
Der Purple-Rain-Angriff nutzt eine Kombination aus PRINCE, einem Wörterbuch und zufälligen Mutationsregeln, um dynamisch unendliche Passwortkombinationen zu erzeugen.
shuf dict.txt | pp64.bin --pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
| ID | Beschreibung | Typ |
|---|
| 500 | md5crypt $1$, MD5(Unix) | Betriebssysteme |
| 200 | bcrypt $2*$, Blowfish(Unix) | Betriebssysteme |
| 400 | sha256crypt $5$, SHA256(Unix) | Betriebssysteme |
| 1800 | sha512crypt $6$, SHA512(Unix) | Betriebssysteme |
| ID | Beschreibung | Typ |
|---|
| 900 | MD4 | Roh-Hash |
| 0 | MD5 | Roh-Hash |
| 5100 | Half MD5 | Roh-Hash |
| 100 | SHA1 | Roh-Hash |
| 10800 | SHA-384 | Roh-Hash |
| 1400 | SHA-256 | Roh-Hash |
| 1700 | SHA-512 | Roh-Hash |
| ID | Beschreibung | Typ |
|---|
| 11600 | 7-Zip | Archive |
| 12500 | RAR3-hp | Archive |
| 13000 | RAR5 | Archive |
| 13200 | AxCrypt | Archive |
| 13300 | AxCrypt in-memory SHA1 | Archive |
| 13600 | WinZip | Archive |
| 9700 | MS Office <= 2003 $0/$1, MD5 + RC4 | Dokumente |
| 9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 | Dokumente |
| 9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 | Dokumente |
| 9800 | MS Office <= 2003 $3/$4, SHA1 + RC4 | Dokumente |
| 9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1 | Dokumente |
| 9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2 | Dokumente |
| 9400 | MS Office 2007 | Dokumente |
| 9500 | MS Office 2010 | Dokumente |
| 9600 | MS Office 2013 | Dokumente |
| 10400 | PDF 1.1 - 1.3 (Acrobat 2 - 4) | Dokumente |
| 10410 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1 | Dokumente |
| 10420 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2 | Dokumente |
| 10500 | PDF 1.4 - 1.6 (Acrobat 5 - 8) | Dokumente |
| 10600 | PDF 1.7 Level 3 (Acrobat 9) | Dokumente |
| 10700 | PDF 1.7 Level 8 (Acrobat 10 - 11) | Dokumente |
| 16200 | Apple Sichere Notizen | Dokumente |
| ID | Beschreibung | Typ | Beispiel-Hash |
|---|
| 12 | PostgreSQL | Datenbankserver | a6343a68d964ca596d9752250d54bb8a:postgres |
| 131 | MSSQL (2000) | Datenbankserver | 0x01002702560500000000000000000000000000000000000000008db43dd9b1972a636ad0c7d4b8c515cb8ce46578 |
| 132 | MSSQL (2005) | Datenbankserver | 0x010018102152f8f28c8499d8ef263c53f8be369d799f931b2fbe |
| 1731 | MSSQL (2012, 2014) | Datenbankserver | 0x02000102030434ea1b17802fd95ea6316bd61d2c94622ca3812793e8fb1672487b5c904a45a31b2ab4a78890d563d2fcf5663e46fe797d71550494be50cf4915d3f4d55ec375 |
| 200 | MySQL323 | Datenbankserver | 7196759210defdc0 |
| 300 | MySQL4.1/MySQL5 | Datenbankserver | fcf7c1b8749cf99d88e5f34271d636178fb5d130 |
| 3100 | Oracle H: Type (Oracle 7+) | Datenbankserver | 7A963A529D2E3229:3682427524 |
| 112 | Oracle S: Type (Oracle 11+) | Datenbankserver | ac5f1e62d21fd0529428b84d42e8955b04966703:38445748184477378130 |
| 12300 | Oracle T: Type (Oracle 12+) | Datenbankserver | 78281A9C0CF626BD05EFC4F41B515B61D6C4D95A250CD4A605CA0EF97168D670EBCB5673B6F5A2FB9CC4E0C0101E659C0C4E3B9B3BEDA846CD15508E88685A2334141655046766111066420254008225 |
| 8000 | Sybase ASE | Datenbankserver | 0xc00778168388631428230545ed2c976790af96768afa0806fe6c0da3b28f3e132137eac56f9bad027ea2 |