
Referência do Hashcat para OSCP/testes de penetração: identificação de hashes, sintaxe de cracking para Linux, Windows, arquivos, bancos de dados, tickets Kerberos e ataques baseados em regras.
Cheatsheet do Hashcat para OSCP https://hashcat.net/wiki/doku.php?id=hashcat
hash-identifier
Exemplos de Hashes: https://hashcat.net/wiki/doku.php?id=example_hashes
Descobri que consigo extrair um pouco mais de desempenho da minha quebra de hashes adicionando estes parâmetros:
--force -O -w 4 --opencl-device-types 1,2
Essas opções forçam o Hashcat a usar a interface CUDA da GPU, que é instável, mas oferece mais desempenho (–force), otimizam para senhas de 32 caracteres ou menos (-O) e definem a carga de trabalho como "Insana" (-w 4), o que deve tornar o seu computador praticamente inutilizável durante o processo de quebra. Por fim, "--opencl-device-types 1,2" forçará o Hashcat a usar TANTO a GPU QUANTO a CPU para realizar a quebra.
Crie um arquivo .hash com todos os hashes que deseja quebrar puthasheshere.hash: $1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/
Exemplo do Hashcat quebrando senhas Linux md5crypt $1$ usando rockyou:
hashcat --force -m 500 -a 0 -o found1.txt --remove puthasheshere.hash /usr/share/wordlists/rockyou.txt
Exemplo do Hashcat quebrando senhas do Wordpress usando rockyou:
hashcat --force -m 400 -a 0 -o found1.txt --remove wphash.hash /usr/share/wordlists/rockyou.txt
Hashes de Exemplo http://openwall.info/wiki/john/sample-hashes
A Not So Secure criou uma regra personalizada com a qual tive sucesso no passado:
https://www.notsosecure.com/one-rule-to-rule-them-all/
A regra pode ser baixada do site deles no Github:
https://github.com/NotSoSecure/password_cracking_rules
Normalmente eu coloco o OneRuleToRuleThemAll.rule na subpasta rules e o executo desta forma no meu computador com Windows (com base no artigo do notsosecure):
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 é o mesmo que:
?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Força bruta em todas as senhas de comprimento 1-8 com caracteres possíveis A-Z a-z 0-9
hashcat64 -m 500 hashes.txt -a 3 ?1?1?1?1?1?1?1?1 --increment -1 ?l?d?u
| ID | Description | Type |
|---|---|---|
| 3000 | LM | Sistemas Operacionais |
| 1000 | NTLM | Sistemas Operacionais |
Depois de capturar ou extrair o NTDS.dit e o hive de registro SYSTEM, ou extrair a memória do LSASS de uma máquina Windows, você geralmente acaba com hashes NTLM.
| Caminho | Descrição |
|---|---|
| C:\Windows\NTDS\ntds.dit | Banco de dados do Active Directory |
| C:\Windows\System32\config\SYSTEM | Hive de registro contendo a chave usada para criptografar os hashes |
E usando o Impacket para extrair os hashes
impacket-secretsdump -system SYSTEM -ntds ntds.dit -hashes lmhash:nthash LOCAL -outputfile ntlm-extract
Você pode quebrar o dump de hashes NTLM usando a seguinte sintaxe do hashcat:
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 usando uma Nvidia 2060 GTX: Velocidade: 7000 MH/s Taxa de Recuperação: 12.47% Tempo Decorrido: 2 Horas 35 Minutos
Um nome de principal de serviço (SPN) é um identificador exclusivo de uma instância de serviço. Os SPNs são usados pela autenticação Kerberos para associar uma instância de serviço a uma conta de logon de serviço. Isso permite que um aplicativo cliente solicite que o serviço autentique uma conta, mesmo que o cliente não tenha o nome da conta. KRB5TGS - Kerberoasting em contas de serviço que usam SPN. Depois de identificar uma conta de serviço kerberoastável (Bloodhound? Powershell Empire? - provavelmente uma conta de serviço do MS SQL Server), qualquer usuário do AD pode solicitar um hash krb5tgs dela, que pode ser usado para quebrar a senha.
Com base nos meus benchmarks, a quebra de KRB5TGS é 28 vezes mais lenta que a de NTLM.
O Hashcat suporta várias versões do hash KRB5TGS, que podem ser facilmente identificadas pelo número entre os cifrões no próprio hash.
KRB5TGS Tipo 23 - lista de palavras Crackstation humans only com a lista de regras de mutações OneRuleToRuleThemAll.
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 usando uma Nvidia 2060 GTX: Velocidade: 250 MH/s Tempo Decorrido: 9 Minutos
Você pode ser solicitado a recuperar uma senha de uma autenticação SMB (NTLMv2) a partir de uma captura de pacotes. A seguir está um processo de 9 etapas para formatar o hash corretamente para fazer isso. 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
O Hashcat parece ter problemas com alguns formatos de hash zip gerados pelo zip2john. Você pode corrigir isso editando o conteúdo do hash zip para alinhá-lo com o formato de hash zip de exemplo encontrado na página de exemplos do hashcat:
$zip2$*0*3*0*b5d2b7bf57ad5e86a55c400509c672bd*d218*0**ca3d736d03a34165cfa9*$/zip2$
O John parece aceitar uma variedade maior de formatos zip para quebra.
PRINCE (PRobability INfinite Chained Elements) é um utilitário do hashcat para gerar aleatoriamente senhas prováveis:
pp64.bin --pw-min=8 < dict.txt | head -20 shuf dict.txt | pp64.bin --pw-min=8 | head -20
Referência:
https://github.com/hashcat/princeprocessor
O ataque Purple Rain usa uma combinação de Prince, um dicionário e regras de mutação aleatórias para criar dinamicamente combinações infinitas de senhas.
shuf dict.txt | pp64.bin --pw-min=8 | hashcat -a 0 -m #type -w 4 -O hashes.txt -g 300000
Referência:
https://www.netmux.com/blog/purple-rain-attack
| ID | Description | Type |
|---|
| 500 | md5crypt $1$, MD5(Unix) | Sistemas Operacionais |
| 200 | bcrypt $2*, Blowfish(Unix) | Sistemas Operacionais |
| 400 | sha256crypt $5$, SHA256(Unix) | Sistemas Operacionais |
| 1800 | sha512crypt $6$, SHA512(Unix) | Sistemas Operacionais |
| ID | Description | Type |
|---|
| 900 | MD4 | Hash Bruto |
| 0 | MD5 | Hash Bruto |
| 5100 | Half MD5 | Hash Bruto |
| 100 | SHA1 | Hash Bruto |
| 10800 | SHA-384 | Hash Bruto |
| 1400 | SHA-256 | Hash Bruto |
| 1700 | SHA-512 | Hash Bruto |
| ID | Description | Type |
|---|
| 11600 | 7-Zip | Arquivos |
| 12500 | RAR3-hp | Arquivos |
| 13000 | RAR5 | Arquivos |
| 13200 | AxCrypt | Arquivos |
| 13300 | AxCrypt in-memory SHA1 | Arquivos |
| 13600 | WinZip | Arquivos |
| 9700 | MS Office <= 2003 $0/$1, MD5 + RC4 | Documentos |
| 9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 | Documentos |
| 9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 | Documentos |
| 9800 | MS Office <= 2003 $3/$4, SHA1 + RC4 | Documentos |
| 9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1 | Documentos |
| 9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2 | Documentos |
| 9400 | MS Office 2007 | Documentos |
| 9500 | MS Office 2010 | Documentos |
| 9600 | MS Office 2013 | Documentos |
| 10400 | PDF 1.1 - 1.3 (Acrobat 2 - 4) | Documentos |
| 10410 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1 | Documentos |
| 10420 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2 | Documentos |
| 10500 | PDF 1.4 - 1.6 (Acrobat 5 - 8) | Documentos |
| 10600 | PDF 1.7 Level 3 (Acrobat 9) | Documentos |
| 10700 | PDF 1.7 Level 8 (Acrobat 10 - 11) | Documentos |
| 16200 | Apple Secure Notes | Documentos |
| ID | Description | Type | Example Hash |
|---|
| 12 | PostgreSQL | Servidor de Banco de Dados | a6343a68d964ca596d9752250d54bb8a:postgres |
| 131 | MSSQL (2000) | Servidor de Banco de Dados | 0x01002702560500000000000000000000000000000000000000008db43dd9b1972a636ad0c7d4b8c515cb8ce46578 |
| 132 | MSSQL (2005) | Servidor de Banco de Dados | 0x010018102152f8f28c8499d8ef263c53f8be369d799f931b2fbe |
| 1731 | MSSQL (2012, 2014) | Servidor de Banco de Dados | 0x02000102030434ea1b17802fd95ea6316bd61d2c94622ca3812793e8fb1672487b5c904a45a31b2ab4a78890d563d2fcf5663e46fe797d71550494be50cf4915d3f4d55ec375 |
| 200 | MySQL323 | Servidor de Banco de Dados | 7196759210defdc0 |
| 300 | MySQL4.1/MySQL5 | Servidor de Banco de Dados | fcf7c1b8749cf99d88e5f34271d636178fb5d130 |
| 3100 | Oracle H: Type (Oracle 7+) | Servidor de Banco de Dados | 7A963A529D2E3229:3682427524 |
| 112 | Oracle S: Type (Oracle 11+) | Servidor de Banco de Dados | ac5f1e62d21fd0529428b84d42e8955b04966703:38445748184477378130 |
| 12300 | Oracle T: Type (Oracle 12+) | Servidor de Banco de Dados | 78281A9C0CF626BD05EFC4F41B515B61D6C4D95A250CD4A605CA0EF97168D670EBCB5673B6F5A2FB9CC4E0C0101E659C0C4E3B9B3BEDA846CD15508E88685A2334141655046766111066420254008225 |
| 8000 | Sybase ASE | Servidor de Banco de Dados | 0xc00778168388631428230545ed2c976790af96768afa0806fe6c0da3b28f3e132137eac56f9bad027ea2 |