Exatamente, você não leu errado. Vou mostrar para você como hackear 1 milhão de senhas em 40 min. E por óbvio não estou realizando nada ilegal.
A segurança na internet ainda é algo para o quê, infelizmente, nem todos dão a devida atenção. E, curiosa e surpreendentemente, as pessoas nem sempre dão atenção à primeira barreira no que diz respeito à proteção de suas informações pessoais de maneira online. Estou me referindo às senhas de acesso aos mais diferentes serviços que utilizamos.
Para além de senhas como 123456 ou password, que ainda são extremamente comuns, há também o comodismo das pessoas. Significa dizer, por outras palavras, que as pessoas criam senhas que lhes são convenientes, mas de fácil adivinhação. Isto, claro, quando não as reutilizam em vários sites diferentes – o que faz com que alguém mal intencionado, ao descobrir a senha de um serviço, descubra facilmente a senha de outro(s).
É por isso que replico aqui o experimento realizado por Fendy, em que ele mostra como é possível hackear 1 milhão de senhas em pouquíssimo tempo utilizando a linguagem de programação Python.
Qual a lógica disso?
Em resumo, o experimento foi feito utilizando-se o método de ataque de dicionário. Grosso modo estes são os passos de tal ataque:
- O cracker tem acesso à lista de senhas às quais já se aplicou a função hash – ou seja, ele tem acesso a algo como e10adc3949ba59abbe56e057f20f883e ou 0acf4539a14b3aa27deeb4cbdf6e989f;
- Ele aplica a função hash a todas as palavras existentes no dicionário (literalmente um dicionário);
- Em seguida, compara-se os hashes resultantes das palavras do dicionário com os hashes que ele obteve.
Por exemplo, suponha que minha senha seja Senha (nunca faça isso!). O hash desta palavra é igual a ff64a1c43498d955147518733ac88c7c (usando o algoritmo MD5) ou a d482c10b3d4d2a198042e6c042e7a6d292dd4d4abd4bf7820813fcc316135063 (com o algoritmo SHA256). O cracker tem acesso a um arquivo em que um destes hashes está presente. Por óbvio que a simples leitura do número ff64a1c43498d955147518733ac88c7c não significa nada. O cracker, em um ataque de dicionário, irá executar uma função para fazer o hash de todas as palavras que estão em um dicionário – e por óbvio que a palavra Senha estará lá. Ao fazer o hash da palavra Senha no dicionário e obter o número ff64a1c43498d955147518733ac88c7c, o cracker poderá comparar este número com o que obteve anteriormente – e, por óbvio, descobrirá que minha senha é a palavra Senha. Se estiver um pouco confuso, veja o exemplo abaixo (em inglês, mas plenamente compreensível):
Como fazer?
Para demonstrarmos a relativa facilidade para se descobrir senhas, foi utilizado um conjunto de dados que vazou em 2009 e que está publicamente disponível na internet (ou seja, nunca use uma senha que esteja neste conjunto). Os passos são simples:
- Faça o download do material completo clicando aqui.
- Tendo o Python 3 instalado em sua máquina, rode o programa createHash.py. Este programa irá criar o hash de todas as senhas que estão no arquivo 1MillionPassword.txt.
- Uma vez criado o hash destas senhas (coisa de 5 segundos, no máximo), execute o programa crackPassword.py. O programa irá identificar o número de CPUs do seu computador e irá distribuir a tarefa por cada uma delas.
No meu caso (um iMac com processador Intel Core i5 Quad-Core de 3,2 GHz, GPU AMD Radeon R9 M390 de 2GB e com 24GB de memória RAM) o processo todo demorou 40 minutos. Você pode ver o resultado final no vídeo abaixo. Vale assistir os primeiros 25 segundos e depois pode avançar para os 8 segundos finais para ver o início e o fim do processo. Gravei tudo, mas o “miolo” do vídeo foi comprimido com velocidade 20 vezes maior na edição.
Moral da história:
- É muito fácil descobrir senhas.
- Nunca reutilize suas senhas em mais de um lugar.
- Crie senhas com no mínimo 10 caracteres (quanto mais melhor), alternando letras maiúsculas, minúsculas, números e símbolos.
- Utilize um programa que salva as senhas dos sites que você acessa – e mesmo cria senhas novas, como o 1Password, o Bitwarden, o Dashlane, o RememBear, o LastPass ou o Kaspersky Password Manager, dentre vários outros (não ganho nada deles para citá-los). Ou, ainda o próprio Firefox Lockwise.
- Não tenha o hábito – que alguns infelizmente têm – de escolher como senha uma palavra qualquer de um dicionário.
- Use o nível máximo de segurança no seu email principal, aquele que está vinculado à maior parte de suas contas (redes sociais, bancos, escola/faculdade, etc.). Use a senha unicamente neste email. Ative a autenticação de dois fatores.
- Caso não tenha seguido a dica 4 acima, crie senhas com base em frases. Em vez de utilizar algo como V1D4L0K4 como senha, pense em uma frase e siga uma destas opções: a) Use a frase como um todo como senha (algo como meu-1o-cachorro-se-chamava-Sardinha!); ou b) Pense em uma frase que só faça sentido para você e crie uma senha com as iniciais da frase (Minha namorada estudou na Universidade XPTO entre 2010 e 2015! vira a senha MnenUXe10-15!).
Para terminar: faça o teste acima e descubra por você mesmo como hackear 1 milhão de senhas em 40 min. É muito mais rápido e fácil do que parece.
Um abraço e até a próxima,
Prof. Matheus Passos