Offline
Geralmente encontramos senhas e/ou outras credenciais em SO, interceptações e em bancos de dados. Provavelmente a senha será um hash e, portanto, precisamos primeiro identificar qual é o hash e depois tentar decifrá-lo. Os hash podem ser identificados por informações como:
O comprimento do hash
Conjunto de caracteres
Quaisquer caracteres especiais
Podemos também utilizar ferramentas como hashid
e hash-identifier
(vide na sessão de criptografia) para identificar alguns hashes.
Quebrando WPA-2 (Handshake)
John The Ripper
Docker
Caso não tenha o John dispinível, utilize o comando abaixo para iniciar via Docker:
Unshadow
Antes de começar, vá no terminal e jogue as senhas para um único arquivo:
Modo gráfico
Para abrir o JTR em modo gráfico, basta executar o comando johnny
.
Quebrando Senhas
Quebrando Senhas em Arquivos DOC
Sessions
JTP salva seu progress em sessões. Mesmo dando CTRL
+ C
, ele continua em background
Restaurando a sessão salva com --session-<nome-sessao>
OBS.: Utilize o comando restore no mesmo diretório onde utilizou o comando --session-<nome-sessao>
, pois irá ser criados dois arquivos com extensões .log
e .rec
.
Rules
OBS.: Com essa regra, será adicionado @20xx
no final de cada palavra da wordlist. Caso queira adicionar no início da palavra, use o ^
ao invés do $
Incremental
OBS.: Pode se utilizar mais opções para o --increment
, como alnum
. Ver em /etc/john/john.conf
as demais opções
HashCat
Procurando tipos de hash para o hashcat quebrar. Utilize um grep
para ajudar na localização
Quebrando Senhas UNIX
DICA: Algumas vezes o Hashcat retorna erro "Already an instance running on pid 5". Para corrigir, execute o comando: rm -rf ~/.hashcat/sessions/hashcat.pid
A opção -m 1800
equivale a senhas SHA-512 (Unix). Utilize a opção -h
(help) para ver a lista de códigos completa.
O arquivo hash.txt
contém o hash salvo. Para quebrar uma senha UNIX, devemos remover alguns valores da hash, como no exemplo abaixo:
Brute Force
Tentando diversas senhas sem a utilização de uma wordlist. No exemplo abaixo estamos utilizando 6 caracteres, sendo cada caracter (letras minúsculas/maiúsculas, números e caracteres especiais) representado pelo ?a
. Vide tabela abaixo para saber qual parâmentro utilizar.
?l
abcdefghijklmnopqrstuvwxyz
?u
ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d
0123456789
?h
0123456789abcdef
?H
0123456789ABCDEF
?s
«space»!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
?a
?l?u?d?s
?b
0x00 - 0xf
Caso prefira, também é possível selecionar os determinados de caracteres que irão fazer parte do Brute Force. No exemplo abaixo, selecionamos os caracteres abcdefgABCDEF1234!@#$
, mas sinta-se a vontade para adicionar ou remover caracteres.
Adicionando Prefixo e Posfixo nas Palavras
Adiciona o ano no final das palavras do wordlist
Primeira letra maiúscula seguida de 7 letras minúsculas e número no final
Semelhante ao comando anterior, porém nesse, o final será caracteres esepcias e números, ao invés de somente números
Podemos também criar arquivos com regras específicas, como no exemplo abaixo, onde teremos regras para diferentes tamanhos:
Também podemos trabalhar com prefixos, sendo útil em muitos casos, já que as pessoas costumam utilizar nas suas senhas, nomes de empresas, parceiros, filhos, animais de estimação, etc. No exemplo abaixo estou utilizando o nome Mysther
como prefixo, então ajuste para o seu cenário.
Para utilizarmos nossa regra personalizada, basta executar:
Combinator
Junta as palavras de duas wordlist. No exemplo do comando abaixo, irá pegar uma palavra de wordlist-1.txt
, adicionar um -
, depois uma palavra de wordlist-2.txt
e para finalizar, uma !
.
Híbrido
Utilizando a opção -a 6
, iremos anexar valores a uma wordlist. Para exemplo abaixo, considere que sua wordlist contém a palavra Senha
, então o hashcat irá tentar de Senha0000
até Senha9999
Caso queira que os números fiquem antes da palavra, ficando de 0000Senha
à 9999Senha
, utilize a opção -a 7
, ficando da seguinte maneira:
kwprocessor
Existe um utilitário externo que fica separado do Hashcat principal, chamado kwprocessor
(deve ser baixado manualmente). Este, é um utilitário para gerar senhas key-walk
, que são senhas baseadas nas sequências das teclas do computador, por exemplo qwerty
e 1q2w3e4r
. Com o kwprocessor, podemos definir as direções e o tipo de teclado para gerar uma wordlist.
NTLM (Windows)
Tipos de Ataques
ATAQUE
DESCRIÇÃO
Combination
Usa mais do que um dicionário para fazer a quebra. Se você possui 1 dicionário com 50 palavras e no outro 100, então ele irá mesclar esses 2 dicionários, criando então uma lista com 50 * 100 = 5000 palavras
Table-Lookup
Este modo de ataque também é baseado em dicionários, porém você pode adicionar caracteres a serem substituídos em seus dicionários, por exemplo: a=A
ou a=@
ou e=3
Toggle-case
Este método utiliza todas as letras maiúsculas e minúsculas de um dicionário. Por exemplo, vamos usar a palavra test. Neste caso ele irá tentar as seguintes combinações: Test
, tEst
, teSt
e tesT
Permutation
Esta técnica não funciona muito bem, mas caso um dia precise, está aqui para usá-la. Com este modo, você inverte caracteres de posição, por exemplo, usaremos a palavra pass123:
pass123, pass321, 1pass23, 3pass21, 32pass1, 21pass, etc.
Brute Force
Ataque baseado em máscara, você define as regras de ataques e ele executa de acordo com a máscara que você selecionou. Ex: admin123 onde você queira que cada número seja entre 0 e 9
Straight
Opção básica e simples. Você seta uma wordlist e a hash a ser quebrada
Windows
Caso tenha acesso aos arquivos do Windows, pegue os o arquivo de registro system
e o SAM
. Esses dois arquivos provavelmente está em um dos seguintes locais:
Caso consiga os dois arquivos mencionados acima, podemos gerar um hash com o comando:
SSH (RSA)
Esse tipo de ataque pode ser feito quando temos uma chave SSH criptografada como no exemplo abaixo:
DICA: Antes de executar o comando abaixo, verifique se o comandossh2john
está disponível, e caso não esteja, verifique se o script pode ser encontrado em /usr/share/john/ssh2john.py
findmyhash
Quebrando senhas utilizando serviços online. Note que precisamos antes do hash para que seja quebrado, por isso, mesmo utilizando serviços online, este é considerado um Brute Force Offline, pois não estamos acessando diretamente o alvo para realizar o cracking
PDF
Zip
fcrackzip
John the Ripper
Hashcat
XLS / XLSX
SuCrack
Este apesar de ser um brute force offline, é preciso ter acesso ao terminal do Linux, seja ele no seu próprio host ou em um host remoto. Basicamente, vai tentar quebrar a senha de outros usuários, através do comando su
, porém de uma forma automatizada.
Script Personalizado
Obviamente, nem sempre podemos contar com o uso desse script, então podemos criar um script próprio para realizar a mesma tarefa que o SuCrack.
Crie um arquivo chamado xpl.sh
com o seguinte código (altere <user>
pelo usuário em questão):
Agora crie um arquivo chamado xpl.py
com o seguinte código:
Agora bastar dar acesso de execução para ambos os arquivos e chamá-lo
CISCO
Cisco IOS Enable 5
Essas senhas do Cisco são baseadas em MD5 com Salt. No arquivo config.txt
(ou config.text
), iremos achar uma linha parecida com essa:
Pegando como exemplo, vamos utilizar o hash $1$.vTq$m3rHbbqITE.sxlHB0K5ca/
para quebrar.
OBS.: Note que antes da hash tem o número 5
, que indica que a senha foi misturada usando o algoritmo MD5 mais potente.
O hash é dividido em 3 partes, que estão separadas por um $
.
Agora para quebrar vamos utilizar o seguinte comando:
OBS.: A senha nesse caso é cisco
, então utilize essa senha na wordlist para fins de teste.
Cisco IOS Enable 7
A versão 7 possui um hash fácil de quebrar e, assim como a versão 5, está localizado no arquivo config.txt
(ou config.text
). Nele iremos acha uma linha parecida com o trecho abaixo:
No final desse artigo possui um site para quebrar esse hash.
Sites
Last updated