As Senhas são sempre mais falado e o mais protegido, o que todos pensam quando alguém comenta em Hacking ou Falhas de segurança. Eu já falei diversas vezes sobre seguranças de senhas aqui e vou falar a mais importante novamente.
Caso você utilize a mesma senha em sites ou serviços diferentes, para com isso.
Se tratando de senhas o que normalmente está atrelado a logins obviamente, estamos falando de alguns possíveis ataques aqui mas vamos começar do começo.
Brute Force
Brute forcing esse termo descreve qualquer coisa que utilizamos a “força bruta ” para descobrir. O computador vai testar tudo o mais rápido possível. Lembre-se que esse termo não necessariamente se refere a senhas. Mas a qualquer tipo de processamento que o computador vai forçar a entrada.
Mas forçar com o que?
WordLists
Normalmente Wordlists, que são listagens de palavras uma para cada linha do documento. Se você está utilizando o Kali Linux ele já vem com uma wordlist muito conhecida chamada RockYou.
Hashes
Para finalizar precisamos entender o que é uma Hash.
Uma Hash é um conjunto de caracteres em reposta a um input que passou por um algoritmo
Como assim?
Calma eu explico
A sua senha quando você cadastra ela em um site, como o youtube por exemplo, ela fica salva em um banco de dados. E você com toda certeza não quer que a pessoa que cuida desse banco de dados veja ela certo?
Imagina um Administrador da google corrigindo uma falha no banco e vendo a senha de todo mundo, ou um hacker que acessando o servidor consegue ler tudo isso.
Então a sua senha passa por um algoritmo, que altera ela de uma senha para caracteres aleatórios e de comprimento fixo.
Isso quer dizer que não importa o tamanho da senha ou quais caracteres ela tem, a hash sempre vai ser do mesmo tamanho.
Duas informações extremamente importantes
1 – Hashes são extremamente reativas, uma pequena alteração na senha muda totalmente a hash de resposta
2- Hashes não são reversiveis, Isso quer dizer que com o valor da Hash você não pode passar mais uma vez no algoritmo e ele mostrar com a senha que gerou essa Hash.
Mas uma mesma senha se passar pelo mesmo algoritmo com toda certeza gera a mesma hash.
Agora vamos juntar todas essas informações com os tipos de ataques
Dictionary Attack
Esse é o mais barulhento e lento.
Esse ataque consiste em ter uma wordlist, na grande maioria das vezes enorme, e chutar senhas como se não houvesse amanhã.
Normalmente isso não é feito direto na tela de login ok? Isso pq são RAROS os casos onde um Web Serviço não vai ter algum tipo de limitador de requisições, então sair chutando senhas sem parar com toda certeza vai bloquear o acesso ou te pedir algo depois de algumas tentativas como um captcha.
Agora se o atacante tem acesso as hashes do banco ele pode quebrar elas offline.
Lembra que uma senha gera uma hash e essa hash para uma mesma senha vai ser exatamente igual. Então em vez de passar pelo login onde vai ter um limitador é muito mais simples fazer isso comparando as hashes.
Pense que a senha SeInscreveNoCanal gera uma hash, se eu sair calculando hashes aleatórias e comparando com a que eu tenho dessa senha, se bater é pq a senha é a que eu estou procurando.
Aqui entra a complexidade dessas senhas, se a sua senha é complexa é mais dificil de encontrar ela em qualquer Wordlist
Agora vamos ver isso na prática.
Primeiro vamos calcular uma hash qualquer, eu vou utilizar um algortimo chamado md5 mas existem inúmeros ok? Como Sha1 entre outros.
Com a Hash em mãos vamos tentar quebrar ela.
Primeiro precisamos de uma wordlists, em um caso real você utilizaria alguma conhecida como a rockyou ou a Seclists ou você criaria uma utilizando ferramentas como o Cewl
Não vai ser o caso aqui, mas se você fosse utilizar o CEWL seria da seguinte maneira
cewl –with-numbers seria para você adicionar a possibilidade de gerar senhas com números. -w é para especificar o arquivo que ele vai criar como word.list depois a URL que ele vai puxar as palavras.
Eu escolhi uma senha fácil e coloquei ela no meio de diversas outras senhas erradas.
A ferramenta que vamos usar chama HashCat, existem outras como o JohnTheRipper mas eu prefiro o hashcat.
Primeiro precisamos descobrir qual tipo de hash estamos lidando, isso normalmente é super simples já que a grande maioria tem um identificador seja um caractere ou o número de caracteres totais da hash
Podemos procurar hashcat example hashes para encontrar qual a nossa faz parte.
Aqui vemos que o md5 é modo 0
Então o comando é o seguinte:
Simples assim a gente quebrou a senha.
Só não é mais simples que se inscrever no Canal!
password spray
Vamos avançar nas nossa técnicas, podemos falar de algumas outras maneiras de ataque como Password Spraying onde você tem uma senha e chuta ela para todos os usuários até um dar certo.
A grande diferença é que essas ataques exigem que você faça eles direto no login.
Vamos ver como isso funciona?
Eu vou utilizar a tela de login do DVWA
Nós sabemos o usuário e a senha desse painel.
É admin e password
Mas digamos que a gente tinha a senha já e queria testar ela para todos os usuários, ou testar diversas senhas para esse mesmo usuário Admin já que ele é valioso.
A ferramenta que vamos utilizar chama Hydra
Para bruteforcing ela é com toda certeza uma das mais conhecidas, mas a sintaxe dela pode ser um pouco confusa então vamos passo a passo.
O Hydra tem várias variações para os tipos de ataque, para serviços como o FTP ou o SSH ele tem um padrão que você pode utilizar, e a melhor forma é acessar uma tabela com todos os tipos de ataque.
São para designar o usuário e a senha. Se for 1 só (Como o admin) utiliza-se o l minúsculo para o caso das senhas que são uma listagem o -P é maiúsculo.
Tipo de ataque, que nesse caso é um formulário HTTP Get. Outro tipos são FTP, SSH entre outros.
Entre aspas vão os argumentos dessa requisição. Diretórios, parâmetros, Cookies e Erro quando a senha falha respectivamente. Todos separados por :
Por hoje é só!
Um grande abraço de urso de TCHAU!