Entendendo os Hashes
Se gerarmos o hash da string "teste123", temos alguns exemplos das saídas a seguir.
Independente se está sendo gerado uma hash de uma única string, o hash sempre terá esses tamanhos fixos de acordo com o tipo.
Modos de uso
Armazenamento de senhas no banco de dados
As aplicações atualmente, armazenam as senhas dos usuários em formato de hash, pois uma vez que o hash é gerado, não é possível voltar o valor original, ou seja, ele é irreversível (one way). Para que a autenticação então aconteça, o que a aplicação faz é comparar o valor inserido pelo usuário, gerar o hash desse valor e comparar com o hash que já está salvo no banco de dados, se caso os hashes forem idênticos irá autenticar o usuário, caso contrário não irá.
Integridade
Alguns programas ou arquivos que baixamos em determinados sites, possui um checksum que gerado assim que ele foi criado. Isso garante que o conteúdo dentro desse programa esteja íntegro com base nesse hash gerado. Suponhamos que há outro site que disponibiliza esse mesmo arquivo ou programa, pode-se então tirar o checksum dele e comparar com o arquivo original para ver se os hashes são os mesmos. Se caso não for, esse programa foi modificado de alguma forma e com isso sabemos que ele não é íntegro, ou seja, não é confiável.
Gerando hashes
Para gerar os hashes, basta utilizar da seguinte forma. (Usando o MD5 e SHA256 como exemplos)
Se quisermos gerar um hash em MD5 de determinado arquivo, basta utilizar da seguinte forma.
One way x Two way
Uma vez que o hash é gerado, não é possível voltar o valor original, ou seja, ele é irreversível (one way), não existe um "decode" para o hash. Para "quebrar um hash" então, é necessário que haja uma wordlist com diversas possíveis senhas e sejam gerados os hashes dessas senhas, fazendo assim um bruteforce até descobrir se alguma das possibilidades bate de acordo com o hash verdadeiro.
No entanto, existem métodos de codificação, por exemplo base64, que é próprio para codificar e decodificar (diferente do hash).
Com isso, conseguimos passar um valor para codificar e se passarmos o resultado da codificação, é possível fazer o processo reverso, sendo assim two way.
Podemos também codificar arquivos com bas64 e depois reverter, fazendo virar um arquivo novamente.
Identificando hashes
Existem alguns softwares que podemos utilizar para identificar os hashes, que são: hashid e hash-identifier. Basta utilizar
Ataques a hashes: Ferramentas
John
Usando o john dessa forma, ele irá tentar identificar qual é o tipo de hash.
Para informar o formato do hash e passar uma wordlist.
Hashcat
A diferença do hashcat para outras ferramentas, é que ele permite utilizar a GPU para tentar descobrir o hash, automatizando o processo.
Last updated
Was this helpful?