Uma das maiores ameaças à segurança é a quebra da palavra passe. Você é um administrador de sistemas de TI preocupado com a segurança dos dados de sua organização?
O que envolve quebrar uma senha?
Para entender a quebra de palavra-chave, você deve primeiro entender como as senhas são armazenadas. Existem duas maneiras principais de armazenar passwords: criptografia e hash.
A criptografia transforma o texto sem formatação em texto cifrado reversível, o que permite que os gerenciadores de senhas armazenem e exibam a senha original em texto sem formatação.
Por outro lado, o hashing é o método típico usado para armazenar senhas para serviços online.
Como os operadores de serviço não precisam inverter as passwords, apenas para verificar se estão corretas, as passwords são hash. Algoritmos de hash convertem valores de texto simples em texto cifrado em um processo unidirecional.
Antes de tentar quebrar uma senha, um invasor deve recuperar o valor do texto cifrado, geralmente por meio de ataques man-in-the-middle, bancos de dados de credenciais hackeados ou tentativas de phishing.
Por fim, o invasor pode começar seu trabalho assim que o valor do texto cifrado for obtido, geralmente como um valor de hash.
Técnicas de quebra de palavra-passe e ferramentas do comércio
Depois que um invasor obtém o hash, a próxima etapa é quebrar a palavra-passe. A maioria das técnicas de quebra de palavra-passe envolve a força bruta da senha, mas existem maneiras de tornar esse processo mais eficiente e direto.
- Força Bruta
Às vezes, a única maneira de encontrar uma senha é tentar todas as combinações possíveis de letras, números e símbolos. Se a senha for aleatória, muitas outras técnicas para facilitar o trabalho podem não funcionar.
Essa abordagem é a menos eficiente, mas pode ser a única opção quando tudo mais falhar.
Um invasor pode usar um computador ou um cluster de computadores para tentar todas as variações possíveis. Quanto mais longa a senha, mais difícil e demorado se torna o processo de cracking.
- Mesa arco-íris
Como os algoritmos de hash são conhecidos publicamente, é possível criar listas massivas de hashes de senha pré-calculados com os quais um hash roubado pode ser comparado. Em vez de gerar um novo hash para cada variação, procure o hash roubado em uma tabela para ver se ele corresponde.
Existem muitos métodos de hash diferentes e variações de senha quase infinitas, o que pode dificultar rapidamente o gerenciamento e o armazenamento de tabelas como essa. Existe outra técnica conhecida como salting de senha que também pode atrapalhar essa técnica. Se o servidor adicionar valores aleatórios à frente e ao final de um hash (valores conhecidos apenas pelo servidor), os hashes resultantes não corresponderão mais aos valores conhecidos.
- Ataque de dicionário
Para facilitar a força bruta de uma senha, os invasores podem usar dicionários de palavras e frases comuns e nomes de empresas, equipas desportivas, etc. Isso restringe a lista de possíveis opções de senha.
No passado, recomendava-se que os usuários mudassem suas senhas com frequência (por exemplo, a cada 90 dias) e que usassem senhas complexas.
Mas isso levou os usuários a escolherem senhas como !yoda2023#, o que facilita o trabalho de um cracker de senha. Depois que a palavra base, yoda, é adivinhada por meio de um ataque de dicionário, tentar alguns símbolos e números diferentes pode quebrar rapidamente a senha.
Uma forma mais avançada de ataque de dicionário é o ataque em cadeia de Markov. Isso envolve uma análise estatística de uma lista de palavras armazenadas em uma tabela e usada para calcular a probabilidade de colocação de caracteres em um ataque de força bruta.
- Preenchimento de credenciais
Os usuários geralmente usam a mesma senha raiz em vários serviços. Se uma senha for quebrada em um serviço, um invasor pode tentar rapidamente a mesma senha ou variações em outros serviços aos quais o usuário possa ter acesso.
Conhecido como preenchimento de credenciais, os invasores tentarão a senha quebrada em vários serviços para tentar senhas diferentes no mesmo serviço. Isso pode resultar no comprometimento de todos os serviços do usuário.
- Hashes de senha fracos (inseguros)
Obviamente, nem todos os esquemas de hash de senha são criados iguais. À medida que a tecnologia evolui, o que antes era considerado seguro pode não ser mais. Isso é verdade para algoritmos de hash como MD5 ou SHA-1, que podem ser quebrados rapidamente.
Um sistema que armazena hashes de senha de usuário com um desses algoritmos pode ter todo o seu banco de dados quebrado rapidamente.
Os sistemas modernos recomendam algoritmos mais seguros, como o bcrypt, que usa hashes de senha salgados.
Como os usuários devem se proteger
Organizações de segurança modernas como o NIST, apesar de suas diretrizes 800-63B, agora recomendam o seguinte:
- Abandone os requisitos regulares de alteração de senha. Só altere as senhas se solicitado explicitamente por um usuário ou se uma senha foi violada.
- Diminua a necessidade arbitrária de complexidade de senha e concentre-se no comprimento geral da senha, como um mínimo de 12 caracteres.
- Todas as novas senhas devem ser comparadas com senhas comumente usadas ou comprometidas anteriormente.
- Não reutilize senhas em diferentes serviços para evitar ataques como preenchimento de credenciais.
- O aumento da segurança de hash significa que mesmo senhas mais curtas demoram muito mais para serem quebradas, como MD5 vs. PBKDF2.