(Fonte da imagem: ShutterStock)
Quem acompanha o Tecmundo deve ter se surpreendido com a história de Nate Anderson, jornalista do site Ars Technica que, com um dia de pesquisa, conseguiu burlar mais de 8 mil passwords na internet sem nunca ter tido contato com esse tipo de atividade antes. Na época, demos a notícia, mas não comentamos detalhes do processo seguido por Anderson durante a elaboração de sua matéria e, portanto, ainda há muito que ser dito.
Para escrever a matéria, Anderson precisou usar apenas ferramentas gratuitas para realizar as seguintes tarefas:
- Encontrar uma relação de senhas para crackear;
- Encontrar um software que pudesse quebrar essas senhas;
- Encontrar uma lista de palavras de alta qualidade;
- Garantir que tudo isso rodasse em um notebook comercial;
- Burlar pelo menos um password com sucesso; e
- Fazer tudo isso em menos de um dia de trabalho.
Como sabemos, o jornalista conseguiu e, pior ainda, viu a própria senha ser quebrada em questão de segundos, o que o deixou com uma péssima impressão da segurança desse tipo de informação.
Mas quais foram os detalhes do processo seguido por Anderson? Será que qualquer um pode fazer esse tipo de “hacking” sem ser um especialista?
Conceitos básicos sobre senhas
Todo sistema computacional que se preze armazena as senhas de seus usuários de maneira criptografada e, para isso, normalmente usa um algoritmo de mão única, como o MD5, ou seja: a senha acaba sendo transformada em um hash, mas não pode ser convertida novamente para texto legível.
Exemplo de arquivo com senhas criptografadas (Fonte da imagem: Reprodução/Ars Technica)
Assim, quando alguém digita a senha ao entrar em uma rede social, por exemplo, o sistema automaticamente a criptografa e depois compara com o hash armazenado. Se os hashes forem iguais, o sistema libera o acesso.
O método mais simples para tentar acessar uma conta indevidamente seria tentar descobrir a senha por tentativa e erro. E é basicamente isso que Anderson fez, mas de maneira automatizada e bem mais rápida. O método aplicado pelo jornalista usa como base um arquivo de texto contendo uma lista com milhares de palavras que podem ser usadas como senhas e, com a ajuda de um programa, essas palavras são testadas uma a uma na conta a ser invadida.
Ferramentas necessárias
De acordo com o relato de Anderson, é muito fácil encontrar uma lista de palavras na internet para crackear senhas. Esse tipo de conteúdo acaba sendo amplamente divulgado em fóruns e sites especializados no assunto.
Além disso, era necessário encontrar um software capaz de gerar esses hashes rapidamente, como o John the Ripper e Hashcat. No caso de Anderson, a escolha ficou por conta do Hashcat para OS X, que foi usado no Macbook Air do autor. E antes que você faça o download do arquivo, um aviso: a operação desse programa no sistema da Maçã é feita por linha de comandos e, portanto, não há interface operada com simples cliques do mouse. Já a versão para Windows possui um frontend gráfico que facilita o uso.
Além da lista de palavras e do cracker em si, Anderson também conseguiu um arquivo com senhas criptografadas em MD5, que sofreria o ataque coordenado pelo jornalista.
Como funciona o ataque?
Como dissemos anteriormente, é impossível decodificar o hash gerado pelo MD5. Mesmo assim, existem maneiras de contornar essa inviabilidade e quebrar as senhas “hasheadas” de maneira indireta.
Exemplo de uso do Hashcat em modo texto (Fonte da imagem: Reprodução/Hashcat)
A principal delas é a que foi escolhida por Anderson: em vez de tentar quebrar a criptografia em si, ele pegou uma lista de palavras, gerou um hash de todas elas e comparou, um a um, com o da senha criptografada. Se algum dos hashes for o mesmo, basta verificar qual foi a palavra da lista que o gerou.
Também é bom notar que esse tipo de ataque não é feito online, ou seja, as tentativas de descoberta da senha não são realizadas diretamente no site de um banco ou de uma rede social, já que muitas páginas bloqueiam o usuário que erra demais o login. O ataque é sempre feito offline, depois de o cracker ter obtido acesso ao arquivo de senhas de um servidor.
A internet pós-RockYou
A lista de palavras mais usada atualmente como base para quebrar senhas veio da empresa de games RockYou, que deixou vazar mais de 14 milhões de passwords de seus clientes. Antes disso, os crackers usavam palavras que vinham de dicionários, ou seja, que funcionavam apenas em teoria.
Com a lista da RockYou, milhares de pessoas tiveram acesso a um conjunto de senhas reais, de palavras realmente usadas como passwords por usuários do mundo todo. E, mesmo assim, a tarefa de quebrar senhas não é tão trivial quanto parece. Para começar, o processo é demorado: enquanto as senhas pequenas, de até seis caracteres, são facilmente descobertas, as maiores podem levar até semanas de processamentos para serem reveladas.
Além disso, há diversos ajustes que devem ser feitos no processo para aperfeiçoar o ataque, e, muitas vezes, esse tipo de procedimento não é tão simples para quem não está acostumado com o submundo do cracker.
Amostra das senhas que vazaram da empresa RockYou (Fonte da imagem: Reprodução/Ars Technica)
Do fracasso ao sucesso
Quebrar passwords pode não ser tão simples quanto parece. Logo depois de baixar a lista de palavras da RockYou e aprender o funcionamento básico do Hashcat, Anderson já se sentiu apto para sua primeira tentativa, que resultou em fracasso. Depois de executar o comando necessário, nenhuma senha do arquivo de 17 mil hashes foi crackeada.
Depois de algumas horas e pesquisas na internet, Anderson chegou a algumas conclusões de que o procedimento poderia estar sendo feito de maneira errada, já que não conseguia crackear senha alguma.
Para começar, o autor alerta que os arquivos de hashes que costumam vazar após uma invasão podem ter sido filtrados antes de ser divulgados na rede, ou seja, os passwords mais simples foram retirados da relação antes que alguém os tornasse públicos.
Mas o mais importante é que as pessoas, no geral, costumam usar variações de palavras como password, adicionando alguns números ou letras a elas, às vezes até mesmo alternando suas letras entre maiúsculas e minúsculas e substituindo algumas delas por numerais ou caracteres especiais.
Um dos computadores usados por Anderson para quebrar senhas (Fonte da imagem: Reprodução/Ars Technica)
Em suma, se Anderson quisesse obter sucesso no cracking, ele deveria implementar regras que previssem essas situações. Felizmente, o Hashcat já lida com esse tipo de configuração e até mesmo traz alguns arquivos de regras pré-configurados, sendo que o mais usado deles se chama "best64.rule”.
Esse arquivo funciona como um script que aplica, automaticamente, essas variações frequentemente usadas em senhas. Primeiro ele testa as palavras como estão escritas na lista. Depois, adiciona um número simples ao final delas, de um único dígito (de 0 a 9). Em seguida, repete a operação com os números mais comuns já encontrados em senhas, com mais de um dígito.
E a diversão não para por aí. O “best64.rule” também inverte a palavra, adiciona as letras “e” e “s” ao fim delas, insere sufixos comuns (“-er”, “-y”, “-123”, “-man”, “-dog” etc) e também testa com alguns caracteres populares no fim e início da palavra. Depois, chega a hora de transformar as palavras no dialeto L33t, mudar letras de lugar, remover sufixos comuns e aplicar outras regras que aumentarão as chances de fazer com que o ataque seja um sucesso.
Sem a aplicação desse script, Anderson não tinha conseguido quebrar senha alguma da lista de 17 mil hashes. Ao aplicar o arquivo “best64.rule”, o resultado foi melhor: uma senha quebrada em três segundos de teste. A senha hackeada foi “Czacza”.
Em uma tentativa desesperada de aumentar a eficácia desse método, Anderson chegou a combinar diversos scripts e, mesmo assim, conseguiu quebrar apenas seis senhas.
Como é possível perceber, Anderson não usou hardware especial para o desafio (Fonte da imagem: Reprodução/Ars Technica)
Ele resolveu, então, apelar para o método de força bruta, em que o software adiciona, um a um, os caracteres em uma senha. Esse método é bastante demorado, mas o resultado foi melhor: mais de 300 senhas quebradas em um minuto. Mesmo assim, um número muito pequeno se comparado com o conjunto total de hashes. Algo estava errado.
Um erro de n00b
Por incrível que pareça, Anderson estava fazendo certo em relação ao uso do Hashcat. A não ser por um detalhe que deixou escapar e que poderia render o título de “n00b” ao jornalista: Anderson havia se esquecido de descompactar a lista de palavras, que estava comprimida pelo algoritmo bzip2.
Como o programa não apresentou erros, o jornalista imaginou que o Hashcat possuía um descompactador embutido, mas isso não é verdade. Depois de corrigir esse pequeno deslize, Anderson pôde, finalmente, sentir o gostinho de ser um cracker de senhas: foram mais de 4,9 mil senhas quebradas em um minuto, sem usar o arquivo de regras adicionais.
No Windows, Hashcat pode ser usado com interface gráfica (Fonte da imagem: Reprodução/Hashcat)
Ao inserir o arquivo “best64.rule” no processo, Anderson desvendou mais de 7,5 mil senhas em apenas 16 minutos. Posteriormente, esse número ultrapassou o de 8 mil senhas crackeadas, incluindo algumas usadas pelo próprio jornalista.
Afinal, é possível?
Não há dúvidas de que qualquer pessoa pode aprender a quebrar senhas com poucas horas de pesquisa. Porém, vale a pena notar que essa é uma etapa mínima do processo todo de invadir uma conta ou perfil, já que sem o arquivo de hashes esta técnica não tem valia alguma. Talvez essa seja a tarefa que separa meninos de crackers de verdade: conseguir a listagem de senhas de um serviço.
Outro ponto a ser levado em consideração é o fato de que o processo detalhado por Anderson não precisa, necessariamente, ser usado para algo ruim. Esse método pode ser empregado, por exemplo, para testar a segurança de senhas de uma rede ou até mesmo dos passwords que você utiliza no Facebook, Twitter e Skype. Conhecimento é poder.
Fontes
Categorias