Este post, é apenas um simple post, pois ainda não tenho domino totalmente do uso dessa ferramenta.
Estou escrevendo esse post apenas para comunicar as minhas experiências e nada mais.
O que é um Hash?
“Um hash (ou escrutínio) é uma sequência de bits geradas por um algoritmo de dispersão, em geral representada em base hexadecimal, que permite a visualização em letras e números (0 a 9 e A a F), representando 1/2 byte cada. O conceito teórico diz que “hash é a transformação de uma grande quantidade de informações em uma pequena quantidade de informações”.
Essa sequência busca identificar um arquivo ou informação unicamente. Por exemplo, uma mensagem de correio eletrônico, uma senha, uma chave criptográfica ou mesmo um arquivo. É um método para transformar dados de tal forma que o resultado seja (quase) exclusivo. Além disso, funções usadas em criptografia garantem que não é possível a partir de um valor de hash retornar à informação original.
Como a sequência do hash é limitada, muitas vezes não passando de 512 bits, existem colisões (sequências iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.” fonte: http://pt.wikipedia.org/wiki/Hash
Um função de hash que transforma nomes para inteiros de 0 até 15. Existe um colisão entre a chaves “John Smith” e “Sandra Dee”. fonte: http://pt.wikipedia.org/wiki/Hash
Hashcat tem várias versões:
Hashcat – que usa apenas o poder de processamento do processador da CPU, indicado para processar pequenas wordlists e hashlists.
Name | Version | md5sum | Date |
---|---|---|---|
hashcat | v0.38 | 16865cacd0da73b010c6da4501c0e1be | 2011.12.18 |
User Manual | v1.2 | a2b1080a9b78c844dd9554991fb173bd | 2011.08.09 |
Features
- Multi-Threaded
- Free
- Multi-Hash (up to 24 million hashes)
- Multi-OS (Linux & Windows native binaries)
- Multi-Algo (MD4, MD5, SHA1, DCC, NTLM, MySQL, …)
- SSE2 accelerated
- All Attack-Modes except Brute-Force and Permutation can be extended by rules
- Very fast Rule-engine
- Rules compatible with JTR and PasswordsPro
- Possible to resume or limit session
- Automatically recognizes recovered hashes from outfile at startup
- Can automatically generate random rules
- Load saltlist from external file and then use them in a Brute-Force Attack variant
- Able to work in an distributed environment
- Specify multiple wordlists or multiple directories of wordlists
- Number of threads can be configured
- Threads run on lowest priority
- 30+ Algorithms implemented with performance in mind
Screenshot
Attack-Modes
- Straight *
- Combination *
- Toggle-Case
- Brute-Force
- Permutation
- Table-Lookup
* accept Rules
Algorithms
- MD5
- md5($pass.$salt)
- md5($salt.$pass)
- md5(md5($pass))
- md5(md5(md5($pass)))
- md5(md5($pass).$salt)
- md5(md5($salt).$pass)
- md5($salt.md5($pass))
- md5($salt.$pass.$salt)
- md5(md5($salt).md5($pass))
- md5(md5($pass).md5($salt))
- md5($salt.md5($salt.$pass))
- md5($salt.md5($pass.$salt))
- md5($username.0.$pass)
- md5(strtoupper(md5($pass)))
- SHA1
- sha1($pass.$salt)
- sha1($salt.$pass)
- sha1(sha1($pass))
- sha1(sha1(sha1($pass)))
- sha1(strtolower($username).$pass)
- MySQL
- MySQL4.1/MySQL5
- MD5(WordPress)
- MD5(phpBB3)
- MD5(Unix)
- SHA-1(Base64)
- SSHA-1(Base64)
- SHA-1(Django)
- MD4
- NTLM
- Domain Cached Credentials
- MD5(Chap)
- MSSQL
- SHA256
- MD5(APR)
- SHA512
- SHA-512(Unix)
Se você tem um laptop, desktop ou servidor, sem placa de vídeo com um bom GPU, vale a pena tentar usar essa versão. Mas se você quer mais poder de processamento dessa ferramenta, você deverá usar tecnologia CUDA e deverá ter uma boa placa de vídeo 3D ATI ou NVidia.
Deployment
Você precisará descompactar o arquivo hashcat-0.38.7z em uma pasta que você deseja usar com local para instalar o hashcat. Se você estiver usando um Ubuntu/Debian e derivados, você vai precisar instalar pacotes que fazem descompactação/compactação dos arquivos *.7z (unzip), para isso:
$ sudo apt-get install lbzip2 liblzma2 p7zip p7zip-full p7zip-rar -y
Uso
Para help
strider@storm:/vm02/pentest/oclHashcat/hashcat-0.38$ ./hashcat-cli64.bin –help
strider@storm:/vm02/pentest/oclHashcat/hashcat-0.38$ ./hashcat-cli64.bin –help
hashcat, advanced password recovery
Usage: ./hashcat-cli64.bin [options] hashfile [wordfiles|directories]
Startup:
-V, –version print version
-h, –help print help
–eula print eula
Logging and Files:
–remove enable remove of hash from hashlist once it is cracked
–quiet suppress output
–stdout stdout mode
–disable-potfile do not write potfile
-r, –rules-file=FILE rules-file for hybrid-attack
-o, –output-file=FILE output-file for recovered hashes
–output-format=NUM 0 = hash:pass
1 = hash:hex_pass
2 = hash:pass:hex_pass
-e, –salt-file=FILE salts-file for unsalted hashlists
–debug-file=FILE debug-file
–debug-mode=NUM 1 = save finding rule (hybrid only)
2 = save original word (hybrid only)
-p, –seperator-char=CHAR seperator-char for hashlists
Resources:
-n, –threads=NUM number of threads
-c, –segment-size=NUM number of mb to cache from wordfile
-s, –words-skip=NUM skip number of words (for resume)
-l, –words-limit=NUM limit number of words (for distributed)
Attacks:
-g, –generate-rules=NUM number of self-generating rules
–generate-rules-func-min=NUM force number of functions per rule min
–generate-rules-func-max=NUM force number of functions per rule max
-a, –attack-mode=NUM number of attack-mode
0 = Straight *
1 = Combination *
2 = Toggle-Case
3 = Brute-Force
4 = Permutation
5 = Table-Lookup
* = for Hybrid-Attack use -r or -g
-m, –hash-mode=NUM number of hash-mode
0 = MD5 200 = MySQL
1 = md5($pass.$salt) 300 = MySQL4.1/MySQL5
2 = md5($salt.$pass) 400 = MD5(WordPress)
3 = md5(md5($pass)) 400 = MD5(phpBB3)
4 = md5(md5(md5($pass))) 500 = MD5(Unix)
5 = vBulletin < v3.8.5 600 = SHA-1(Base64)
6 = md5(md5($salt).$pass) 700 = SSHA-1(Base64)
7 = md5($salt.md5($pass)) 800 = SHA-1(Django)
8 = md5($salt.$pass.$salt) 900 = MD4
9 = md5(md5($salt).md5($pass)) 1000 = NTLM
10 = md5(md5($pass).md5($salt)) 1100 = Domain Cached Credentials
11 = md5($salt.md5($salt.$pass)) 1200 = MD5(Chap)
12 = md5($salt.md5($pass.$salt)) 1300 = MSSQL
15 = vBulletin > v3.8.5
30 = md5($username.0.$pass)
31 = md5(strtoupper(md5($pass)))
100 = SHA1 1400 = SHA256
101 = sha1($pass.$salt) 1600 = MD5(APR)
102 = sha1($salt.$pass) 1700 = SHA512
103 = sha1(sha1($pass)) 1800 = SHA-512(Unix)
104 = sha1(sha1(sha1($pass)))
105 = sha1(strtolower($username).$pass)
Toggle-Case specific:
–toggle-min=NUM number of alphas in dictionary minimum
–toggle-max=NUM number of alphas in dictionary maximum
Brute-Force specific:
–bf-pw-min=NUM password length minimum
–bf-pw-max=NUM password length maximum
–bf-cs-buf=CHARS charset for attack
Permutation specific:
–perm-min=NUM number of chars in dictionary minimum
–perm-max=NUM number of chars in dictionary maximum
Table-Lookup specific:
-t, –table-file=FILE table file
–table-min=NUM number of chars in dictionary minimum
–table-max=NUM number of chars in dictionary maximum
Para executar um exemplo e testar:
strider@storm:/vm02/pentest/oclHashcat/hashcat-0.38$ ./hashcat-cli64.bin examples/A0.M0.hash examples/A0.M0.word
Explicação dos Comandos:
./hashcat-cli64.bin = é o binário executável do hashcat, que aceita apenas comandos em shell, na versão para CPU x86_64
examples/A0.M0.hash = é uma pasta de exemplos com arquivos contendo vários hashes (*.hash)
examples/A0.M0.word = é uma pasta de exemplos com arquivos contendo váriais senhas e palavras (*.word)
OBS: Antes da primeira execução, o hashcat exibe um EULA, qual você concorda digitando YES (em letra maiuscula) e aperta ENTER:
O Resultado é isso: