Andrey Escarião

Pesquisas, contos e ciência.

Quebra de senhas em pentest: metodologia, ferramentas e defesa

·

·

4 min de leitura

Quebrar senha é uma das etapas que mais rende em teste interno, e uma das mais mal compreendidas. Muita gente imagina o atacante digitando tentativas numa tela de login. Na prática, quase toda quebra acontece fora do sistema, sobre dados que já foram obtidos.

Entender como isso funciona é o que permite, do lado da defesa, criar senhas que não valem a pena atacar.

Primeiro: hash não é criptografia

Sistemas sérios não guardam a sua senha. Eles guardam um hash dela, o resultado de uma função que transforma a senha em uma sequência de tamanho fixo e da qual, em tese, não se volta atrás.

Quando você faz login, o sistema calcula o hash do que você digitou e compara com o que está guardado. A senha em si nunca é armazenada. Por isso a quebra não é “descriptografar”: é adivinhar uma entrada que produza o mesmo hash.

Por que a quebra acontece fora do sistema

Tentar senhas na tela de login é lento e barulhento: o sistema limita tentativas e dispara alarme, como tratei ao falar de fail2ban em Hardening de servidores Linux.

Mas quando o atacante já obteve os hashes, por exemplo depois de comprometer um servidor ou uma base, ele leva esse material para a própria máquina e testa bilhões de possibilidades por segundo, sem nenhum limite e sem gerar um único registro no sistema-alvo. É por isso que vazamento de base de senhas é tão grave mesmo quando as senhas estão em hash.

As três abordagens

AbordagemComo funcionaContra o que é eficaz
DicionárioTesta listas de senhas conhecidas e vazadasSenhas comuns e reaproveitadas
Regras sobre dicionárioAplica transformações típicas, como trocar a por @ ou somar um número no fimSenhas “espertas” que seguem padrão previsível
Força brutaTesta todas as combinações possíveisSó senhas curtas, fica inviável com o tamanho

A ordem prática é sempre essa: dicionário primeiro, porque a maioria das senhas cai ali; regras depois; força bruta por último e só em senha curta, porque o custo cresce absurdamente com cada caractere a mais.

A conta que explica tudo

O poder da força bruta esbarra na matemática. Cada caractere adicional multiplica o espaço de possibilidades. Uma senha de oito caracteres pode cair em horas; a mesma composição com dezesseis caracteres levaria mais tempo do que faz sentido esperar.

É por isso que comprimento vence complexidade. Uma frase longa e fácil de lembrar resiste muito mais do que uma sequência curta cheia de símbolos. O símbolo dificulta o dicionário; o comprimento derrota a força bruta, que é o ataque que não tem como ser impedido depois que o hash vazou.

O que torna o hash mais difícil de quebrar

Nem todo hash é igual. Do lado de quem guarda senhas, três decisões definem se um vazamento é catástrofe ou apenas incidente.

  • Sal. Um valor aleatório somado a cada senha antes do hash. Impede que o atacante quebre todas de uma vez com tabelas pré-calculadas, e força atacar uma por uma.
  • Função lenta e própria para senha. Funções feitas para serem deliberadamente custosas tornam cada tentativa cara. O que é imperceptível em um login vira barreira enorme para quem precisa de bilhões de tentativas.
  • Custo ajustável. Poder aumentar a dificuldade conforme o hardware evolui mantém a proteção ao longo dos anos.

Base que usa função de hash rápida e sem sal é a que produz aqueles vazamentos em que milhões de senhas são reveladas em pouco tempo.

Do lado do teste: o que reportar

Em um teste autorizado, a quebra de senhas gera achados valiosos, e o relatório deve tratá-los com cuidado, seguindo a mesma lógica de Metodologia de teste de invasão em aplicações web:

  • Não liste as senhas em claro no relatório. Reporte estatísticas: quantas caíram, em quanto tempo, com qual abordagem.
  • Aponte padrões perigosos, como uso do nome da empresa ou do ano corrente.
  • Destaque senhas reaproveitadas entre contas, que transformam uma quebra em várias.
  • Recomende a política concreta: comprimento mínimo alto, verificação contra senhas vazadas, e segundo fator onde importa.

A defesa que encerra o assunto

A quebra de senhas ataca o que a senha tem de fraco: ser um segredo que se adivinha. A defesa definitiva é reduzir a importância da senha, adicionando um segundo fator, ou eliminá-la, como discuti em Passkeys em ambiente corporativo.

Senha que, sozinha, não abre nada, é senha que não vale a pena quebrar. E tornar o ataque inútil é sempre melhor do que apenas torná-lo mais difícil.