Skip to content

Rainbow Tables: o pior pesadelo de sua senha

30 de abril de 2021

Embora você possa pensar nas Rainbow Tables como móveis coloridos ecléticos, esses não são os que vamos discutir. As Rainbow Tables de que estamos falando são usadas para decifrar senhas e são mais uma ferramenta no arsenal cada vez maior do hacker. O que são “Tabelas do arco-íris”? Como algo com um nome tão fofo e fofinho pode ser tão prejudicial?

O dilema da quebra de senhas do hacker

Somos o vilão que acaba de conectar um pen drive em um servidor ou estação de trabalho, reinicializa-o e executa um programa que copia o arquivo de banco de dados de segurança contendo nomes de usuário e senhas para o pen drive. As senhas no arquivo são criptografadas, portanto não podemos lê-las. Teremos que quebrar as senhas do arquivo (ou pelo menos a senha do administrador) para que possamos usá-las para acessar o sistema. Quais são as opções para quebrar senhas? Podemos tentar usar um programa de quebra de senha de força bruta, como John the Ripper, que ataca o arquivo de senha, tentando adivinhar iterativamente todas as combinações possíveis de uma senha. A segunda opção é carregar um dicionário de quebra de senhas contendo centenas de milhares de senhas comumente usadas e ver se obtém alguma ocorrência. Esses métodos podem levar semanas, meses ou até anos se as senhas forem fortes o suficiente.

Imagens Zmeel / Getty

O que é hash?

Quando uma senha é “testada” em um sistema, ela é “criptografada” por meio de criptografia para que a senha real nunca seja enviada em texto não criptografado pela linha de comunicação. Isso evita que bisbilhoteiros interceptem a senha. O hash de uma senha geralmente parece um monte de lixo e normalmente tem um comprimento diferente do da senha original. Sua senha pode ser shitzu, mas o hash da sua senha seria algo como 7378347eedbfdd761619451949225ec1. Para verificar um usuário, um sistema pega o valor de hash criado pela função hash de senha no computador cliente e o compara com o valor de hash armazenado em uma tabela no servidor. Se os hashes corresponderem, o usuário será autenticado e terá acesso concedido. Os programas de quebra de senha funcionam de maneira semelhante ao processo de login. O programa de cracking começa pegando senhas de texto simples, executando-as por meio de um algoritmo de hash, como MD5, e então compara a saída de hash com os hashes no arquivo de senha roubada. Se encontrar uma correspondência, o programa violou a senha. Como dissemos antes, esse processo pode levar muito tempo. O hash de uma senha é uma função unilateral, o que significa que você não pode descriptografar o hash para ver o que é o texto não criptografado da senha. Não há nenhuma chave para descriptografar o hash depois de criado. Não existe um “anel decodificador”, se você quiser.

Entrar nas tabelas do arco-íris

As tabelas do arco-íris são basicamente conjuntos enormes de tabelas pré-computadas preenchidas com valores de hash que são pré-combinados com possíveis senhas de texto simples. As tabelas Rainbow permitem essencialmente que os hackers invertem a função de hashing para determinar qual pode ser a senha em texto simples. É possível que duas senhas diferentes resultem no mesmo hash, portanto, não é importante descobrir qual era a senha original, contanto que tenha o mesmo hash. A senha em texto simples pode nem mesmo ser a mesma senha criada pelo usuário, mas, desde que o hash corresponda, não importa qual era a senha original. O uso de Rainbow Tables permite que as senhas sejam quebradas em um período de tempo muito curto em comparação com os métodos de força bruta; no entanto, a desvantagem é que é necessário muito espaço de armazenamento (às vezes terabytes de tamanho) para conter as próprias tabelas do arco-íris. O armazenamento hoje em dia é abundante e barato, então essa compensação não é tão importante quanto era há uma década, quando drives de terabyte não eram algo que você pudesse comprar no Best Buy local. Os hackers podem comprar Rainbow Tables pré-computados para quebrar senhas de sistemas operacionais vulneráveis, como Windows XP, Vista, Windows 7 e aplicativos que usam MD5 e SHA1 como mecanismo de hash de senha (muitos desenvolvedores de aplicativos da web ainda usam esses algoritmos de hash).

Como se proteger contra esses ataques

Gostaríamos que houvesse conselhos melhores sobre este para todos. Gostaríamos de dizer que uma senha mais forte ajudaria, mas isso não é verdade porque não é a fraqueza da senha que é o problema, é a fraqueza associada à função de hashing usada para criptografar uma senha. O melhor conselho que podemos dar aos usuários é ficar longe de aplicativos da web que restringem o comprimento de sua senha a um pequeno número de caracteres. Este é um sinal claro de rotinas vulneráveis ​​de autenticação de senha da velha escola. O comprimento e a complexidade estendidos da senha podem ajudar um pouco, mas não é uma forma garantida de proteção. Quanto mais longa sua senha, maiores as tabelas do Rainbow teriam que ser para quebrá-la, mas um hacker com muitos recursos ainda pode fazer isso.

Dicas para desenvolvedores e administradores

Nosso conselho sobre como se defender contra Rainbow Tables é realmente voltado para desenvolvedores de aplicativos e administradores de sistema. Eles estão na linha de frente quando se trata de proteger os usuários contra esse tipo de ataque.

Não use MD5 ou SHA1 em sua função de hash de senha

MD5 e SHA1 são algoritmos de hash de senha desatualizados e a maioria das tabelas rainbow usadas para quebrar senhas são construídas para direcionar aplicativos e sistemas usando esses métodos de hash. Considere o uso de métodos de hashing mais modernos, como SHA2.

Use um “Salt” criptográfico em sua rotina de hash de senha

Adicionar um Salt criptográfico à função de hash de senha ajudará na defesa contra o uso de Rainbow Tables para quebrar senhas em seu aplicativo. Para ver alguns exemplos de codificação de como usar um sal criptográfico para ajudar a “à prova de arco-íris” seu aplicativo, verifique o site WebMasters By Design, que tem um ótimo artigo sobre o assunto.