Nos dias que correm, processos e mecanismos para brute-force de palavras-passe são empregados sobejamente por profissionais de segurança e fulanos mal-intencionados (definidos como “atacantes” ao longo do artigo). O foco deste indivíduos é bem definido: “identificar uma colisão entre os dados pré-processados, e.g., um dicionário de palavras, e a palavra-passe, uma hash ou até uma cifra”.
Atualmente tem sido reconhecido pela comunidade Information Security (Info Sec) que o número de base de dados comprometidas de sistemas web-based tem vindo a crescer de forma exponencial. Um exemplo deste facto foi o sistema Linkedin: “LinkedIn Wednesday confirmed that at least some passwords compromised in a major security breach correspond to LinkedIn accounts.”[1], o que sustenta a ideia de que novos mecanismos e uma programação defensiva são essenciais para assegurar a integridade, autenticação e confiabilidade dos próprios sistemas.
Os maiores responsáveis por este tipo de prejuízos são na sua maioria atacantes, e costumam denominar-se por script kiddies, fulanos que fazem uso de ferramentas ou aplicações disponíveis na Internet para atingir o seu objetivo e sem possuírem muita compreensão técnica e teórica da área da Segurança Informática.
Mecanismos para proteção de palavras-passe são na realidade bastante debatidos e empregados, mas o problema contínua em persistir. Muitos especialistas, analistas de sistemas na sua maioria, propõem a implementação de mecanismos criptográficos, mecanismos de digest (hash), etc, para mascarar as palavras-passe pessoais dos utilizadores catalogadas na base de dados, mas o problema reside na força da palavra-passe definida pelo utilizador. Todo o ser humano emprega padrões para estabelecer uma lógica com as mais diversificadas realidades, e a definição de uma palavra-passe forte é a fonte de sucesso para uma chave de hash também ela “inderrubável”. Conjeturando a existência de um utilizador com o nome Pedro, nascido a 11/11/1337, algumas derivações possíveis para a sua palavra-passe pessoal são as seguintes:
Pedro1337;pedro11;11pedro1337;1337pedro;
(Está a reconhecer esta lógica com a forma de organizar o seu pensamento aquando a elaboração da sua palavra-passe?)
É certo que a maioria das palavras-passe possíveis já se encontram catalogadas em dicionários na Internet. Aliás, um atacante habilidoso arriscará concretizar um dicionário derivado do traço pessoal ou de algumas caraterísticas e informações, e.g., nome e data de nascimento, por forma a encontrar uma colisão. Se a palavra-passe fizer parte do nível de palavras-passe fracas, então o processo de brute-force poderá levar alguns segundos, minutos ou até dias a colidir.
De forma a evitar este facilitismo por parte dos utilizadores, os sistemas bem concebidos fazem uso de funções de hash, e.g, SHA256, que derivadas com um salt e a palavra-passe do utilizador (plaintext) geram uma sequência sem lógica. Estas funções são do tipo y->(x) onde é inviável sabendo x, conseguir y.
Fonte:http://static.commentcamarche.net/en.kioskea.net/pictures/crypto-images- fonctionhachage.gif
Logicamente este mecanismo fortalece a palavra-passe, mas não impede o comprometimento de uma base de dados.
Honey Words
O uso de Honey Words é um dos mecanismos que pode ser um aliado imprescindível aquando o furto de uma conta de utilizador. Este é um mecanismo proposto por Ronald L. Rivest, um dos criadores do RSA [2], que funciona com o mesmo propósito de um honeypot: “distrair e proteger o sistema contra atacantes”.
Uma Honey Word consiste numa palavra-passe falsa, derivada da palavra-passe do utilizador. Atentando o seguinte exemplo:
O utilizador possui a sua palavra-passe definida como “pedro1337”. Após a inserção dessa palavra-passe no sistema, e.g., aquando do registo, são derivadas “n” honey words, e.g., “p3dro1337”, “pedro”, “1337”, e catalogadas numa tabela apelidada de Sweet Words. Um dos objetivos deste processo é mascarar e criar possíveis palavras-passe para elucidar um atacante.
Cenário: Se um atacante conseguir acesso às palavras-passe e se a base de dados detiver o hash da palavra-passe, o atacante fazendo uso de um mecanismo de brute-force, certamente descobrirá uma rápida colisão para a honey word “1337” (apenas dígitos). Ao introduzir essa palavra-passe no formulário para autenticação no sistema um alerta será gerado, notificando o administrador do sistema que o utilizador Pedro tentou autenticar-se no sistema fazendo uso de uma honey word. A suspeita que o utilizador terá sido comprometido, ou até a base de dados, passa a ser uma realidade. O administrador numa fase paralela indicará ao utilizador, com certa urgência, que a sua palavra-passe deverá ser modificada.
Este tipo de mecanismo é uma abordagem importante para a deteção de ataques informáticos via brute-force. O procedimento de geração de um alarme pode ser mais elaborado, onde por exemplo, se o sistema detetar que foi efetuada a tentativa de autenticação através de uma honey word, o endereço de IP origem deve ser automáticamente bloqueado. Neste ponto, pode ser empregada qualquer tipo de lógica computancional com o objetivo de proteger o sistema e notificar o administrador “num prazo aceitável”, e antevendo maiores prejuízos.
Referências
[1] http://www.pcworld.com/article/257045/6_5m_linkedin_passwords_posted_online_after _ap parent_hack.html [2]-http://people.csail.mit.edu/rivest/pubs/JR13.pdf
Pedro Tavares is a professional in the field of information security working as an Ethical Hacker/Pentester, Malware Researcher and also a Security Evangelist. He is also a founding member at CSIRT.UBI and Editor-in-Chief of the security computer blog seguranca-informatica.pt.
In recent years he has invested in the field of information security, exploring and analyzing a wide range of topics, such as pentesting (Kali Linux), malware, exploitation, hacking, IoT and security in Active Directory networks. He is also Freelance Writer (Infosec. Resources Institute and Cyber Defense Magazine) and developer of the 0xSI_f33d – a feed that compiles phishing and malware campaigns targeting Portuguese citizens.
Read more here.