Gerar Listas de Palavras Personalizadas com Crunch

Kali LinuxBeginner
Pratique Agora

Introdução

Crunch é uma ferramenta de linha de comando poderosa e flexível usada para gerar listas de palavras personalizadas. Essas listas de palavras são essenciais no campo da cibersegurança, particularmente para testadores de penetração e profissionais de segurança que realizam auditorias de força de senha e ataques de força bruta. Ao contrário das listas de palavras estáticas e pré-fabricadas, o Crunch permite criar listas altamente específicas com base em padrões conhecidos, conjuntos de caracteres e requisitos de comprimento, aumentando significativamente a eficiência de um ataque.

Neste laboratório, você aprenderá os fundamentos do Crunch. Você começará entendendo sua sintaxe básica, depois passará a gerar listas de palavras simples, usando conjuntos de caracteres personalizados, criando listas baseadas em padrões e, finalmente, canalizando sua saída diretamente para outras ferramentas de linha de comando.

Compreender a Sintaxe da Ferramenta Crunch

Nesta etapa, você aprenderá a sintaxe básica do comando crunch e como acessar seu menu de ajuda. Compreender a estrutura fundamental do comando é o primeiro passo para dominar suas capacidades.

A sintaxe básica para crunch é: crunch <min-len> <max-len> [characterset] [options]

  • <min-len>: O comprimento mínimo das palavras a serem geradas.
  • <max-len>: O comprimento máximo das palavras a serem geradas.
  • [characterset]: (Opcional) O conjunto de caracteres a ser usado para gerar palavras. Se não for especificado, o crunch usa letras minúsculas por padrão.
  • [options]: (Opcional) Várias flags para controlar a saída, como salvar em um arquivo ou usar padrões.

Para ver todas as opções disponíveis e obter uma visão geral abrangente da ferramenta, você pode usar a flag --help. Vamos visualizar o menu de ajuda. Todas as operações neste laboratório serão realizadas no diretório padrão ~/project.

Execute o seguinte comando em seu terminal:

crunch --help

Você verá uma saída detalhada listando todas as flags e suas descrições. Reserve um momento para examiná-las. Esta é uma ótima referência para quando você quiser explorar recursos mais avançados.

crunch version 3.6

Crunch can create a wordlist based on criteria you specify.  The output from
crunch can be sent to the screen, a file, or to another program.

Usage: crunch <min-len> <max-len> [options]
where min-len and max-len are numbers

... (output truncated) ...

Agora que você está familiarizado com a sintaxe básica e como encontrar ajuda, está pronto para gerar sua primeira lista de palavras.

Gerar uma Lista de Palavras Simples de Comprimento Fixo

Nesta etapa, você gerará sua primeira lista de palavras com um comprimento fixo. Este é um dos usos mais comuns do crunch. Quando o comprimento mínimo e máximo são os mesmos, o crunch gerará todas as combinações possíveis para esse comprimento específico.

Por padrão, o crunch exibe a lista de palavras na saída padrão (a tela do seu terminal). Para listas grandes, isso pode ser avassalador e não muito útil. Uma prática melhor é salvar a saída em um arquivo usando a opção -o.

Vamos gerar todas as palavras possíveis de 3 caracteres usando o alfabeto padrão em minúsculas e salvá-las em um arquivo chamado 3char.txt.

Execute o seguinte comando:

crunch 3 3 -o 3char.txt

Este comando instrui o crunch a gerar palavras com um comprimento mínimo de 3 e um comprimento máximo de 3, e a direcionar o resultado para 3char.txt. Você verá algumas estatísticas sobre a lista gerada em seu terminal.

Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576

Para verificar se o arquivo foi criado corretamente, você pode usar o comando head para visualizar as primeiras linhas do arquivo.

head -n 5 3char.txt

Você deverá ver o início da lista alfabética.

aaa
aab
aac
aad
aae

Você gerou e salvou com sucesso sua primeira lista de palavras.

Gerar uma Lista de Palavras com um Conjunto de Caracteres Específico

Nesta etapa, você aprenderá como especificar um conjunto de caracteres personalizado para sua lista de palavras. Isso é extremamente útil quando você tem informações sobre os caracteres possíveis em uma senha (por exemplo, ela contém apenas números, ou apenas letras específicas).

Para especificar um conjunto de caracteres, você simplesmente adiciona a string de caracteres que deseja usar ao final do comando, após os argumentos de comprimento.

Vamos gerar uma lista de códigos PIN de 4 dígitos, usando apenas os números 0, 1, 2 e 3. Salvaremos esta lista em um arquivo chamado 4digit.txt.

Execute este comando:

crunch 4 4 0123 -o 4digit.txt

Aqui, 4 4 define o comprimento para exatamente quatro caracteres, 0123 fornece o conjunto de caracteres personalizado e -o 4digit.txt salva a saída.

Vamos inspecionar o início do arquivo gerado para confirmar a saída.

head -n 5 4digit.txt

A saída mostrará as primeiras cinco combinações usando apenas os dígitos especificados.

0000
0001
0002
0003
0010

Como você pode ver, o crunch agora está usando apenas os caracteres que você forneceu, dando a você muito mais controle sobre a lista de palavras gerada.

Usar a Flag -t para Gerar Palavras Baseadas em Padrão

Nesta etapa, você usará a flag -t para gerar listas de palavras com base em um padrão específico. Este é um dos recursos mais poderosos do Crunch, permitindo que você crie listas de palavras altamente direcionadas se souber parte da estrutura da senha.

A flag -t usa placeholders especiais para representar diferentes tipos de caracteres:

  • @ será substituído por letras minúsculas.
  • , será substituído por letras maiúsculas.
  • % será substituído por números.
  • ^ será substituído por símbolos.

Vamos imaginar que você sabe que uma senha começa com a palavra "user", é seguida por dois números e termina com uma única letra maiúscula. O padrão seria user%%,. O comprimento total é de 7 caracteres (4 para "user", 2 para %%, 1 para ,).

Vamos gerar uma lista de palavras com base neste padrão e salvá-la em pattern.txt.

crunch 7 7 -t user%%, -o pattern.txt

Este comando instrui o crunch a gerar palavras de exatamente 7 caracteres, seguindo o padrão user%%,.

Agora, vamos observar as primeiras linhas do arquivo de saída.

head -n 5 pattern.txt

A saída corresponderá ao padrão que você definiu.

user00A
user00B
user00C
user00D
user00E

Este método reduz drasticamente o tamanho da lista de palavras e o tempo necessário para um ataque de força bruta, focando apenas em candidatos plausíveis de senha.

Canalizar a Saída do Crunch Diretamente para o Hashcat

Nesta etapa, você aprenderá uma técnica poderosa: canalizar (pipe) a saída do crunch diretamente para outra ferramenta. Isso é altamente eficiente porque evita a escrita de uma lista de palavras potencialmente massiva em seu disco, economizando espaço e tempo. As palavras são geradas e "canalizadas" (enviadas) para o próximo programa em tempo real.

Embora o crunch seja frequentemente usado com ferramentas de quebra de senha como Hashcat ou John the Ripper, simularemos este processo usando um comando grep simples. grep é uma ferramenta para pesquisar texto e servirá para demonstrar o conceito de canalização.

Imagine que estamos tentando encontrar a senha labex23. Suspeitamos que a senha começa com "labex" e é seguida por dois dígitos.

Podemos gerar palavras que correspondam a este padrão e canalizá-las diretamente para o grep para ver se nossa senha alvo está na lista gerada. O símbolo de pipe | é usado para conectar a saída de um comando à entrada de outro.

Execute o seguinte comando:

crunch 7 7 -t labex%% | grep "labex23"

Este comando faz duas coisas:

  1. crunch 7 7 -t labex%% gera todas as palavras de 7 caracteres que começam com "labex" seguidas por dois números (por exemplo, labex00, labex01, ...).
  2. O pipe | envia cada palavra gerada para o comando grep "labex23", que verifica se a palavra corresponde a "labex23".

Se uma correspondência for encontrada, o grep a imprimirá no terminal.

labex23

Você gerou com sucesso uma lista de palavras em tempo real e a processou com outra ferramenta, uma habilidade essencial para testes de segurança eficientes.

Resumo

Parabéns por completar este laboratório! Você adquiriu habilidades fundamentais no uso do crunch, uma ferramenta versátil para gerar listas de palavras personalizadas.

Neste laboratório, você aprendeu a:

  • Compreender a sintaxe básica do comando crunch.
  • Gerar listas de palavras simples de comprimento fixo e salvá-las em um arquivo.
  • Especificar um conjunto de caracteres personalizado para criar listas de palavras mais direcionadas.
  • Usar a flag -t para gerar palavras com base em um padrão conhecido.
  • Canalizar a saída do crunch diretamente para outras ferramentas de linha de comando como grep para realizar processamento em tempo real sem salvar em um arquivo.

Essas habilidades são fundamentais para muitas tarefas em cibersegurança, especialmente em auditoria de senhas e testes de penetração. Ao criar listas de palavras personalizadas, você pode melhorar significativamente a eficiência e a taxa de sucesso de suas avaliações de segurança.