Já parou pra pensar que hoje em dia ainda utilizam funcionalmente a técnica de brute-force? Dentre outros, um fator é causa de sucesso: um bom dicionário de palavras e uma vítima bem previsível. E vale a pena citar outro fator, a quebra offline que utiliza processamento da placa de vídeo em computadores com HD’s SSD usando uma rainbow table como dicionário… mas isso é papo para outro dia.

Dando sequência à Semana da Segurança CS, hoje vamos tratar de uma parte fundamental nesse tipo de abordagem: a criação de um dicionário para ataque a um alvo previsível.

A ideia

O brute-force – ou força bruta – é uma abordagem exaustiva de tentativas e erros em busca de uma correspondência positiva, que às vezes até termina sem correspondência.

De posse de uma coleção – pode ser de nomes, números, letras aleatórias, cores, posições ou qualquer outra coisa combinável ou permutável – o indivíduo busca, tentando cada elemento da coleção, um retorno positivo como adivinhar a senha de uma credencial desconhecida, acessar uma pasta oculta em um endereço da web, etc.

Para ter algum sucesso, precisaremos de uma boa wordlist (ou dicionário de palavras), que será nossa coleção de correspondências. Geralmente as pessoas se valem de alguma já pronta para uso, porém isso pode comprometer um tempo precioso até achar a correspondência, sendo necessário, então, elaborar uma para o nosso escopo. 

Para a elaboração da wordlist, podemos gerar combinações aleatórias, permutar elementos conhecidos, coletar elementos  dentro de um contexto para combinação ou permutação ou combinar tudo isso.

A coleta dentro de um contexto seria o profiling, isto é, montamos uma lista de correspondências com base no perfil do alvo, como por exemplo uma lista de hobbies de uma pessoa – existe uma grande chance de uma senha dessa pessoa ser uma palavra relacionada ao hobbie.

Vejamos agora como criar nossa wordlist, com estilo.

Ferramentas para gerar uma wordlist

1. Crunch

É um gerador de wordlist com base no conjunto de símbolos especificados para sua execução, com o qual é possível obter todas as combinações possíveis do conjunto fornecido.

Em outras palavras, é um algoritmo de força bruta baseado em conjunto de caracteres. E você pode obter uma cópia do programa em https://sourceforge.net/projects/crunch-wordlist/.

Como exemplo de uso, execute o comando:

e veja o crunch gerar sequências de tamanho mínimo e máximo igual a 5 combinando os símbolos 12345 e armazenando tudo em um arquivo numbers.txt, respectivamente.

image01

2. Cewl

Escrito em Ruby, CeWL realiza spidering (indexação) em um site e retorna uma lista de palavras que podem ser usadas em quebra de senhas. O que este programa faz é vasculhar todas as palavras de um dado site até uma determinada profundidade de sublinks e montar uma lista customizada. Você pode obter uma cópia do programa aqui.

Vamos ver um exemplo. Execute o comando:

Aqui não vamos visitar nenhum sublink, vamos pegar palavras de tamanho mínimo 8 e enviar para um arquivo amor.txt, respectivamente.

image05

3. Who’s Your Daddy – WYD

Legado, escrito em Perl, WYD objetiva o profiling de senhas com base em diferentes tipos de arquivos, incluindo áudios, para gerar uma wordlist. O programa pode ser obtido aqui.

Vamos ver um exemplo prático. Digite o comando:

Aqui, vamos obter um arquivo test.txt contendo palavras de até 8 letras, desabilitando a remoção de letras non-alpha do começo e fim das palavras contidas no diretório testfiles – o programa fornece esse diretório para teste junto com o script.

image00

image02

4. Common User Passwords Profile – CUPP

Dessa vez em Python, o CUPP cria wordlists a partir de um repositório de perguntas interativas ou a partir dos resultados do WYD, citado anteriormente. E, para alegria da comunidade de desenvolvedores, essa ferramenta está disponível para download pelo GitHub aqui. Vamos experimentar o modo interativo:

image04

Um pedaço da lista mariana.txt gerada:

image03

Quer sujar as mãos?

Carregados de palavras, podemos escolher hoje o que tentaremos conquistar. Com sorte, o objeto da abordagem terá uma correspondência previsível dentro de seu contexto, e se isso ocorrer então o tempo até encontrar essa correspondência será relativamente curto se afunilarmos a probabilidade da nossa coleção.

Enfim, para alimentar a criatividade, vou mencionar alguns casos de uso e suas respectivas ferramentas, assim você já pode estudar situações que precisam de uma wordlist:

– Reversão de hashes com John the Ripper;
– Autenticação indevida com SSH em servidores usando Hydra;
– Criptoanálise de WPA-PSK, ou seja, descobrindo a senha do seu roteador :), com a suíte do Aircrack-ng;
– Localizar pastas ou arquivos ocultos em sites com Dirb;
– Quebrar senhas em arquivos com esteganografia (gerados por JSteg-Shell, JPHide ou OutGuess 0.13b) com Stegbreak.

Lembrem-se de usar os conhecimentos adquiridos aqui para fins legais, nos dois aspectos da palavra. =) E é isso! Espero que tenham gostado e por favor cuidem de suas senhas! 

Dica: porque não utilizam diceware para gerar novas senhas hoje mesmo? ;D S
Spoiler: vai ter post sobre diceware ainda esta semana por aqui hehe

Ficou alguma dúvida ou tem alguma contribuição? Aproveite os campos abaixo! Amanhã continuamos com a nossa programação da Semana de Segurança. Fique atento!

É desenvolvedor, se preocupa com segurança e qualidade e quer trabalhar em um time ágil e multidisciplinar? Envie seu currículo! =)

Sobre o Autor

Programador Java na Concrete Solutions, é Técnico em Informática formado e graduado em Segurança da Informação. É entusiasta na área de Segurança e Ethical Hacking. Participa de eventos de Segurança, auxilia em iniciativas da empresa em que trabalha e também nas comunidades de Cyber Security e hacktivismo desde 2011.

 

cases

rio de
janeiro

Rua São José, 90
Sala 2121 - Centro
(21) 2240-2030
CEP: 20010-020

são
paulo

Av. Nações Unidas
nº 11.541 - 3º andar
(11) 4119-0449
CEP: 04578-000

belo
horizonte

Av. Getúlio Vargas, 671
Sala 800 - 8º andar
(31) 3360-8900
CEP: 30112-021