As senhas se tornaram a primeira linha de defesa para proteger suas contas digitais, mas você já se perguntou como elas são fáceis de hackear? Criar senhas fortes e exclusivas não é apenas uma dica passageira, é uma necessidade para proteger seus dados.
Para ter certeza de que as senhas que uso são eficazes, decidi tentar decifrar minhas próprias senhas usando uma ferramenta de código aberto. Testei três senhas diferentes para entender como funcionam os ataques comuns e descobrir o que torna uma senha mais segura contra hackers.
Neste artigo, compartilho minhas descobertas e dicas práticas para melhorar a segurança de suas senhas e manter seus dados protegidos.
Links Rápidos
O que significa quebrar uma senha?
Quando você cria uma conta usando um serviço online, o provedor geralmente criptografa (e esperançosamente) seus detalhes de login em seu servidor. Isso é feito usando um algoritmo para criar “fragmentação“, que é uma sequência aleatória de letras e números exclusivos da sua senha. Claro, não é realmente aleatório – é uma sequência de caracteres muito específica que somente sua senha pode gerar – mas para olhos destreinados, parece uma bagunça.
Converter uma palavra em hash é muito mais rápido e fácil do que “desconstruir” o hash em uma palavra novamente. Assim, quando você define uma senha, o serviço no qual você está efetuando login executa a senha por meio de um hash e armazena o resultado em seu servidor.
Se o arquivo de senha especificado vazar, os hackers tentarão descobrir seu conteúdo usando uma quebra de senha. Como criptografar uma senha é mais rápido do que descriptografá-la, os hackers configurarão um sistema que recebe senhas potenciais como entrada, criptografa-as usando o mesmo método que o servidor usa e compara o resultado com um banco de dados de senhas.
Se o valor hash de uma senha potencial corresponder a qualquer entrada no banco de dados, o hacker saberá que cada resultado corresponde Possível senha O que foi tentado.
Como hackeei minhas senhas usando HashCat
Bem, vamos começar a analisar algumas das senhas que você criou para ver como é fácil. Para fazer isso, usarei hashcat, um aplicativo de quebra de senha gratuito e de código aberto, disponível para qualquer pessoa.
Nestes testes, irei quebrar as seguintes senhas:
- 123456Uma senha clássica e um pesadelo de segurança cibernética, 123456 é a senha mais usada no mundo. Ela contou North Pass 3 milhões de contas usaram 123456 senhas, 1.2 milhão das quais eram para proteger contas em nível corporativo.
- Susan48!: uma senha que segue os padrões que a maioria dos usuários usa para criar uma senha segura. Essa palavra-chave geralmente atende aos requisitos básicos de higiene de senha, mas como exploraremos mais tarde, ela contém algumas vulnerabilidades críticas que podem ser exploradas.
- t9^kJ$2q9a: Uma senha que você criou usando Gerador Bitwarden. Ele está configurado para gerar uma senha de 10 caracteres usando letras maiúsculas e minúsculas, símbolos e números.
Agora que tínhamos nossas senhas, eu as criptografei usando MD5. É assim que as senhas aparecerão se estiverem em um arquivo de senhas salvo no servidor:
- 123456: e10adc3949ba59abbe56e057f20f883e
- Susan48!: df1ce7227606805745ee6cbc644ecbe4
- t9^kJ$2q9a: 450e4e0ad3ed8766cb2ba83081c0a625
Agora é hora de decompô-lo.
Execute uma pausa simples usando um ataque de dicionário
Vamos começar, vamos começar Ataque de dicionário, que é uma das formas mais comuns de atacar senhas. É um ataque simples onde eu crio uma lista de senhas possíveis, digo ao Hashcat para convertê-las para MD5 e ver se alguma delas corresponde às três entradas acima. Para este experimento, estou usando o arquivo “rockyou.txt” como dicionário, que foi um dos maiores vazamentos de senha da história.
Para iniciar o processo de hacking, vou até a pasta onde o Hashcat está localizado, clico com o botão direito em um espaço vazio e pressiono “Abrir no Terminal”. Agora que o Terminal está aberto e configurado para o diretório Hashcat, invoco o aplicativo Hashcat usando o seguinte comando:
.\hashcat -m 0 -a 0 passwordfile.txt rockyou.txt -o results.txt
Aqui está o que o comando faz:
- .\hashcat Chama Hashcat.
- -m0: Especifica a criptografia que usaremos. Neste caso, usaremos MD5, que está listado como 0 no documento de ajuda do Hashcat.
- e 0: Especifica o ataque que queremos realizar. O documento de ajuda do Hashcat lista o ataque de dicionário como 0, por isso estamos chamando-o aqui.
- arquivo de senha.txt rockyou.txtO primeiro arquivo inclui as três senhas criptografadas que preparamos anteriormente. O segundo arquivo é todo o banco de dados de senhas do rockyou.
- -o resultados.txt: Esta variável determina onde colocamos o resultado. O comando que fiz coloca as senhas hackeadas em um arquivo TXT chamado “resultados”.
Apesar do enorme tamanho do rockyou, o Hashcat digitalizou todo o conteúdo em seis segundos. No arquivo de resultados, o Hashcat disse que foi capaz de quebrar a senha 123456, mas as senhas de Susan e Bitwarden permaneceram intactas. Isso ocorre porque a senha 123456 foi usada por outra pessoa no arquivo rockyou.txt, mas ninguém mais usou as senhas de Susan ou Bitwarden, o que significa que elas eram únicas o suficiente para permanecerem protegidas contra esse ataque.
Execute hackers mais complexos usando máscaras e ataques de força bruta
Os ataques de dicionário funcionam quando alguém usa a mesma senha em uma lista maior de senhas. É rápido e fácil de fazer, mas não pode Hack de senha Não encontrado no dicionário. Portanto, se quisermos realmente testar nossas senhas, precisamos usar ataques de força bruta.
Se os ataques de dicionário consistem em pegar uma lista predefinida e transformá-la uma por uma, os ataques de força bruta fazem a mesma coisa, mas com todos os conjuntos possíveis de combinações. É mais difícil de implementar e leva mais tempo, mas eventualmente quebrará qualquer senha. Como veremos em breve, esta possibilidade às vezes pode demorar muito.
Este é o comando que usei para realizar o ataque de força bruta "real":
.\hashcat -m 0 -a 3 target.txt --increment ?a?a?a?a?a?a?a?a?a?a -o output.txt
Isto é o que o comando faz:
- -para 3: Esta variável especifica o ataque que queremos realizar. A documentação de ajuda do Hashcat lista os ataques de força bruta como 3, por isso estamos chamando-os aqui.
- alvo.txt: O arquivo que contém a senha criptografada que queremos hackear.
- - incremento: Isso diz ao Hashcat para tentar todas as senhas com uma letra, depois duas, depois três e assim por diante até obtermos a solução.
- ?a?a?a?a?a?a?a?a?a?a?a?a?a?a: Isso é chamado de “máscara”. As máscaras nos permitem dizer ao Hashcat quais caracteres usar e onde. Cada ponto de interrogação indica a posição de uma letra na senha, e a letra especifica o que estamos tentando fazer em cada posição. A letra “a” representa letras maiúsculas e minúsculas, números e símbolos, então esta máscara diz: “Experimente tudo em cada caixa”. É uma máscara terrível, mas faremos bom uso dela mais tarde.
- -o saída.txt: Esta variável determina onde colocamos o resultado. Meu comando coloca as senhas quebradas em um arquivo TXT chamado “saída”.
Mesmo com esta máscara terrível, a senha 123456 foi quebrada em 15 segundos. Embora seja a senha mais comum, é também uma das mais fracas.
A senha era “Susan48!” Muito melhor – meu computador disse que levaria quatro dias para quebrá-lo cegamente. No entanto, houve um problema. Lembra quando eu disse que a senha de Susan tinha algumas falhas críticas? A maior delas é que a senha é projetada de forma previsível.
Quando criamos uma senha, normalmente colocamos elementos específicos em locais específicos. Você pode imaginar que a pessoa que criou a senha é Susan, que inicialmente tentou usar “susan”, mas foi solicitada a adicionar letras maiúsculas e números. Para facilitar a lembrança, ele colocou a primeira letra em maiúscula e acrescentou números no final. Então, um dos serviços de login pode ter solicitado um código, então nosso gerador de senha o colou no final.
Portanto, podemos usar a máscara para dizer ao Hashcat para tentar apenas determinados caracteres em determinados lugares para explorar o quão previsíveis as pessoas são ao criar uma senha. Nesta máscara, “?u” usará apenas letras maiúsculas nesta posição, “?l” usará apenas letras minúsculas e “?a” representa qualquer letra:
.\hashcat -m 0 -a 3 -1 ?a target.txt ?u?l?l?l?l?a?a?a -o output.txt
Usando essa máscara, o Hashcat decifra a senha em três minutos e dez segundos, o que é muito mais rápido do que quatro dias.
A senha gerada pelo Bitwarden tem dez caracteres e não usa nenhum padrão previsível, então tenho que fazer um ataque de força bruta sem nenhuma máscara para quebrá-la. Infelizmente, quando pedi ao Hashcat para fazer isso, ocorreu um erro, dizendo que o número de combinações possíveis excedeu o limite de números inteiros. Ele diz Guru de segurança de TI Uma senha do Bitwarden levaria três anos para ser quebrada, então isso é bom o suficiente para mim.
Como proteger suas contas contra quebra de senha
Então, o que podemos aprender com tudo isso? Os principais fatores que me impediram de quebrar uma senha do Bitwarden foram seu comprimento (10 caracteres) e imprevisibilidade. Portanto, ao criar senhas, tente torná-las o mais longas possível e adicione símbolos, números e letras maiúsculas ao longo da senha. Isso evita que hackers usem máscaras para prever a localização de cada item e torna mais difícil a invasão.
Você provavelmente já conhece ditados antigos sobre senhas como “Use vários caracteres” e “Faça com que sejam o mais longas possível”. Esperamos que você saiba por que as pessoas recomendam essas dicas úteis – elas são a diferença entre uma senha quebrada rapidamente e uma senha segura. Agora você pode visualizar Como esses ajustes simples tornaram minhas senhas mais seguras e fáceis.