Iniciantes que aprendem ataques de força bruta contra handshakes WPA geralmente são decepcionados pelas limitações de listas de palavras padrão, como RockYou, baseadas em senhas roubadas. A ciência da força bruta vai além de usar essas listas padrão, permitindo-nos ser mais eficientes criando listas de palavras personalizadas. Usando o Mentalist, podemos gerar milhões de senhas prováveis com base em detalhes sobre o alvo.
A quebra de senhas é uma arte consagrada, que conta com uma combinação de poder de processamento de força bruta e a capacidade de refinar sua lista para opções prováveis com base no que você sabe sobre um alvo. Muitos protocolos de segurança são vulneráveis a ataques de força bruta, que em sua essência dependem de alguns princÃpios-chave.
Primeiro, você deve ter permissão para tentar diferentes senhas muitas vezes e muito rapidamente. Em segundo lugar, você precisa ser capaz de determinar a diferença entre o sucesso e o fracasso de uma senha. Terceiro, você precisa de uma lista de senhas para tentar automaticamente muito rapidamente. E, finalmente, a senha deve estar presente na lista para que o ataque seja bem-sucedido. À medida que as listas de senhas ficam maiores, o desempenho da CPU e GPU torna-se mais importante, pois a taxa de tentativas de senha aumenta a velocidade.
WPA, SSH, FTP e outras senhas de força bruta
A maioria das redes sem fio é protegida por criptografia WPA ou WPA2, que pode ser quebrada capturando um handshake de rede e usando a CPU do seu computador para força bruta da senha. Ao lado do WPA, protocolos como SSH e FTP também são vulneráveis à força bruta, embora os métodos de força bruta possam ser diferenciados entre ataques do tipo online e offline.
Em um ataque online, nos conectamos diretamente a um serviço e enviamos tentativas de senha de uma forma que pode ser registrada. Um exemplo disso seria Reaver ou SSHtrix, que precisa estar conectado à rede em que o host está para enviar suposições de senha. Nesses ataques, o fator limitante é frequentemente quantas conexões de entrada o servidor FTP ou SSH pode aceitar e a quantidade de tempo que você deve passar conectado ao host durante o crack.
Em um ataque offline, o principal fator limitante é a capacidade da CPU ou GPU de tentar diferentes senhas rapidamente. Exemplos disso podem ser a força bruta de um handshake WPA, um ataque de poeira WPS-Pixie após coletar as informações necessárias ou quebrar hashes de senha de um banco de dados roubado. Em geral, este é o único momento em que você precisa se preocupar com o desempenho de sua GPU ou CPU enquanto faz força bruta.
Opções para começar - Listas padrão
Em vez de simplesmente começar com um ataque no estilo de dicionário, um invasor inteligente geralmente procura primeiro por listas que contêm senhas reais . Essas listas são geralmente consideradas como o ponto de partida para esses tipos de técnicas, pois funcionarão contra qualquer pessoa com uma senha comum ou realmente terrÃvel. Na natureza, você pode esperar taxas de sucesso de cerca de 15% para esses tipos de auditorias de senha. Obviamente, se você está almejando uma conta ou rede especÃfica, essa é uma chance muito pequena de sucesso.
Dito isso, você ainda pode usar essas listas como uma semente para um ataque mais refinado com base nas informações que você conhece sobre o alvo. A razão pela qual essas listas são eficazes é que você pode pensar nelas como uma pesquisa estatÃstica das senhas mais comuns que as pessoas usam em liberdade. Como o usuário comum reutiliza essas senhas em várias contas, podemos usar as senhas mais comuns como uma semente para alterar pequenas coisas, como adicionar ou remover números, em um programa chamado word mangler.
Abordagem de detalhes - Pesquisa OSINT
Felizmente para os hackers, existe uma grande quantidade de informações online ao tentar quebrar um alvo especÃfico. Um ataque de força bruta pelo script kiddie médio pode não ser uma ameaça substancial para uma organização que exige o uso de senhas fortes . Um ataque de força bruta bem pesquisado, no entanto, pode reduzir o número de suposições e apresentar apenas suposições relativamente fortes com base nas informações disponÃveis sobre o alvo e quaisquer requisitos de senha. Isso pode tornar um ataque de força bruta eficaz contra partes selecionadas e bem pesquisadas da infraestrutura de um alvo.
Com alguma pesquisa, podemos fornecer os dados para programas criadores de listas de palavras que pegam as informações aprendidas sobre um alvo e geram uma lista de palavras personalizada com base nos detalhes dos quais é provável que o usuário tenha criado sua senha.
Geradores de lista de palavras personalizados
Existem várias opções para a criação de listas de palavras além de um dicionário simples, e o que vamos explorar hoje é o Common User Passwords Profiler (ou CUPP). Um programa Python leve e simples, o CUPP é capaz de gerar uma semente impressionante de suposições de senha personalizadas. Outras ferramentas, como CeWL , permitem que sites de destino sejam raspados em busca de palavras exclusivas para usar palavras que são comuns em toda a organização.
Com um pouco de conhecimento obtido nas mÃdias sociais e em outros documentos públicos, a execução do CUPP no modo interativo do usuário permite uma abordagem no estilo entrevista para a criação de uma lista de senhas personalizada.
O exemplo acima produziu 14.301 palavras em nosso arquivo de teste, o que é um ótimo começo, mas longe o suficiente para travar um ataque de força bruta eficaz. No entanto, podemos usar essa saÃda para usar um criador de lista de palavras mais sofisticado, chamado de mangler de palavras, para aplicar certas regras a essas sementes iniciais para fazer uma lista de senhas muito maior para extrair.
Manglers de palavras e cadeias geradoras
Um manipulador de palavras cria novas suposições de senha a partir de uma lista de senhas "semente", de acordo com regras predefinidas. Esta pode ser uma mudança muito simples, como aplicar uma única mudança ao final de cada senha de seed, ou uma mais complexa, como adicionar todos os números de 0-9 ao final de cada senha de seed. O último resultaria em 10 novas suposições de senhas para cada senha que entra no programa, de modo que essas listas podem aumentar muito rapidamente.
Para gerenciar essas regras facilmente, usaremos um programa gráfico chamado Mentalist, que nos permitirá criar uma "cadeia" dessas regras para aplicar à nossa lista de senhas iniciais. Também podemos adicionar outras sementes além de nossa lista de senhas, como as palavras do dicionário de inglês. Em geral, os principais "nós" que podem ser aplicados à lista de palavras base anexarão, prefixarão, alterarão a caixa ou substituirão as letras das palavras passadas por eles.
Como você pode ver no exemplo abaixo, a aplicação de apenas algumas regras à cadeia pode levar a um grande aumento no tamanho da sua lista de senhas. Isso não é necessariamente bom, pois precisaremos de um processador capaz de mastigar essas suposições de senha. Esta lista de senhas com mais de um bilhão de tentativas é provavelmente um exagero. O tamanho da lista depende do número e tipo de nós que você aplica, mas vamos examinar cada um deles.
Passo 1Baixe o software
O Mentalist é fácil de executar, mesmo para iniciantes, portanto, podemos baixá-lo para Windows, macOS ou Linux. Para fazer isso, você pode acessar o link de download no GitHub e selecionar a versão que corresponde ao seu sistema operacional. Depois de baixá-lo, instale o aplicativo seguindo as instruções na tela e abra o Mentalist.
Para criar nossa lista de sementes, usaremos o CUPP. Além de certificar-se de que o Python está instalado e atualizado em seu computador, ele não deve exigir dependências adicionais para ser executado. Você pode baixar o CUPP executando o seguinte em uma janela de terminal.
git clone github.com/Mebus/cupp.git
Passo 2Crie a lista de sementes
Depois de fazer o download do CUPP, você estará pronto para usar os dados coletados em um destino para gerar uma lista personalizada. Navegue até o diretório em que CUPP foi clonado, digitando cd CUPP na janela do terminal. Em seguida, digite python ./cupp.py -i para executar o CUPP no modo de usuário interativo.
Você verá uma série de prompts pedindo informações sobre o alvo. Se você não sabe, pode pular a pergunta especÃfica, mas é melhor responder a quantas perguntas puder encontrar as informações.
Depois de inserir as informações que você conhece, você terá a oportunidade de adicionar outras palavras-chave que conhece sobre o alvo que podem ser incluÃdas na combinação. Neste ponto, você também pode selecionar a opção de adicionar caracteres especiais no final de uma adivinhação de senha ou adicionar números aleatórios no final. Finalmente, se o seu alvo achar que usar o leetspeak é inteligente, você pode selecionar uma regra de substituição que converterá as suposições de senha para a formatação 1337.
Depois de concluÃdo, a saÃda deve ser um arquivo de texto com milhares de suposições de senha. Embora seja um ótimo começo, é hora de expandir nossos palpites com o Mentalista.
etapa 3Crie uma corrente com o mentalista
Para começar, abra o aplicativo Mentalist que você baixou e instalou anteriormente. Depois de ver a janela GUI, clique no sinal de mais no nó "Palavras-base" e você verá a opção de adicionar um arquivo personalizado. Selecione "Arquivo personalizado" e abra o arquivo TXT que criamos com o CUPP. Também podemos excluir o nó padrão do dicionário de inglês clicando no botão menos à direita dele.
Assim que tivermos as palavras base adicionadas do CUPP, podemos começar a adicionar nossos nós de mutilação de palavras. Para criar uma cadeia, precisaremos aplicar todas as regras que gostarÃamos de aplicar à s nossas suposições de senha em sequência. Podemos explorar os quatro principais tipos de nós que podemos adicionar clicando no botão de adição no canto superior direito. Isso nos dará uma lista de modificação de caso, substituição, prefixação ou acréscimo.
Para nosso primeiro nó, podemos aplicar um nó "Caso" para modificar o caso de nossas estimativas de senha geradas. Depois de selecionar o nó, podemos clicar no botão de adição ao lado do nó que criamos para ver uma lista de opções. Temos a capacidade de modificar maiúsculas ou minúsculas de maneiras diferentes. Aqui, definiremos a primeira letra como maiúscula e todas as letras seguintes como minúsculas. Uma vez que esta operação cria apenas uma saÃda por palavra de nossa lista de base, você ainda não verá o tamanho do arquivo de lista de palavras mudar.
Em seguida, podemos adicionar um nó "Substituição" clicando no Ãcone de adição no canto superior direito novamente. Isso nos dará a opção de substituir letras e, neste caso, escolheremos substituir as letras "i" e "a" por sua contraparte leetspeak.
Em seguida, podemos adicionar um nó "Prepend", que adicionará algo ao inÃcio de cada adivinhação de senha. Ao clicar no Ãcone de adição ao lado do nó que criamos, podemos fazer coisas como incorporar códigos postais por cidade ou estado. Isso aumentará o tamanho do nosso arquivo, criando muitas saÃdas para cada palavra base que vai para o nó.
Finalmente, podemos adicionar um nó "Append", que colocará algo no final de nossos palpites. Ao clicar novamente no Ãcone de mais ao lado do nó que criamos, podemos ver que existem muitas opções pré-instaladas para o que podemos adicionar à nossa cadeia. Neste caso, optei por adicionar códigos de área telefônicos da cidade de Los Angeles. Isso aumentará nossa saÃda ainda mais, pois para cada suposição que passar para esse nó, haverá muitas saÃdas.
Produzimos uma lista de palavras com muitos resultados! Esse arquivo teria 8,3 GB de suposições de senha para salvar. Embora isso possa ser adequado para alguns cenários, também podemos compactar isso com a opção de salvar essas opções como um conjunto de regras para gerar dinamicamente a mesma lista com ferramentas como Hashcat ou John the Ripper . Para salvar sua lista de palavras como um arquivo de lista de palavras ou como um conjunto de regras, clique no Ãcone "Processar" no canto superior direito e selecione se deseja gerar a lista de palavras ou regras.
Depois de salvar sua lista final, você criou um grande conjunto personalizado de adivinhações de senha sob medida para o usuário individual. Esta lista de palavras deve ser muito mais eficaz para forçar um alvo sobre o qual você tem mais informações e pode se beneficiar ainda mais se você tiver exemplos de polÃtica de senha para a conta que está tentando invadir ou uma senha violada anteriormente.
Defesa contra ataques de força bruta sob medida
Esses ataques têm como alvo usuários que tentam criar senhas mais fortes usando detalhes ao seu redor que podem ser facilmente memorizados. Ao usar detalhes como nomes de animais de estimação ou famÃlia, datas significativas ou outras "sementes" de senha que podem ser pesquisadas, um mangler de palavras pode criar muitas variações diferentes usando a mesma semente, aumentando a probabilidade de forçar bruta a senha.
Para se defender contra isso, os usuários nunca devem escolher uma senha derivada de detalhes facilmente pesquisados, especialmente se adicionar um número ou modificar a caixa é a única coisa que pode ser modificada. Em vez disso, escolha um acrônimo para uma frase longa que você consiga lembrar ou use um gerenciador de senhas para gerar uma senha completamente aleatória e segura. Ao usar um gerenciador de senhas, você pode evitar a necessidade de sempre lembrar sua senha em primeiro lugar.
Criar uma lista de senhas personalizadas com vários milhões de suposições em potencial com base em detalhes sobre o alvo é fácil e requer apenas uma pequena pesquisa. Espero que este guia tenha dado uma janela para a ciência da quebra de senhas e encorajado você a explorar o quanto mais você pode ir com o aumento do desempenho de ataques de força bruta.
0 Comentários