Ataque de força bruta

Neste tutorial, o ataque de força bruta será discutido e algumas ferramentas para realizar este ataque serão mencionadas. Em primeiro lugar, é dizer do que se trata a força bruta, embora pelo seu nome se possa imaginar.

É uma técnica que se baseia em tentativa e erro, é utilizada para obter senhas ou descriptografar dados, este método não busca uma estratégia inteligente, mas testa todas as combinações possíveis até encontrar a chave.

É possível obter qualquer senha ou descriptografar qualquer arquivo? Se nosso tempo provavelmente fosse infinito, mas como não é, a resposta é não, senhas ou chaves longas e com vários fatores (maiúsculas, minúsculas, números, caracteres especiais), levaríamos muito tempo para tirá-los dessa forma método (em uma vida não seríamos alcançados).

Podemos usar esse método para verificar a segurança de nossas senhas ou criptografia contra esse tipo de ataque. Se você quer saber como criar uma senha forte, Aconselho a leitura deste tutorial. Um algoritmo de criptografia vulnerável a esse tipo de ataque é o DES, o oposto é o caso do AES, que não é vulnerável à força bruta. É melhor entender bem o campo da criptografia.

O mundo da criptografia

Ter uma senha forte é o primeiro passo, mas você também pode colocar mais uma camada de proteção, usando o autenticação de fator duplo Nas suas contas (pelo menos as mais valiosas), hoje já existem serviços que o oferecem de forma integrada e gratuita, como Google, Twitter e Linkedin. Esses sistemas normalmente enviam uma mensagem para o seu celular com um código, uma vez que você tenha inserido a senha correta, então, até que você insira o código, você não poderá entrar em sua conta.

Cabe ressaltar que força bruta é frequentemente combinada com ataques de dicionárioEste ataque consiste em ter um arquivo com senhas mais típicas (as pessoas costumam usar palavras conhecidas para suas senhas, para que se lembrem melhor delas) e tentar todas, até encontrar a chave ou encerrar as senhas sem sucesso. O ataque em geral é mais eficiente, embora se usarmos vários fatores em nossa senha, as chances de sucesso diminuem consideravelmente.

Ferramentas de força bruta

John o Estripador

É open source e gratuito, normalmente você o encontrará distribuído no código-fonte.Seu objetivo principal é encontrar senhas fracas em sistemas operacionais UNIX.

THC Hydra

Esta ferramenta permite que você aplique força bruta aos serviços de autenticação remota. Você pode realizar ataques de dicionário contra mais de 50 protocolos.

medusa

É uma ferramenta modular, que funciona em paralelo com logins de força bruta. Compatível com protocolos como FTP, HTTP, IMAP, SSH, etc.

Ncrack

É uma ferramenta para quebrar autenticações de rede, funciona rapidamente. Você pode estender a ferramenta criando seus próprios módulos.

Caim e Abel

É uma ferramenta destinada à recuperação de senhas no Windows, para crackear permite o uso de força bruta, mas também ataques de dicionário e ataques usando tabelas de arco-íris (Tabela Arco-íris).

Vou colocar a seguir um código em Python que obtém senhas que contenham apenas números de uma página da web, até 5 dígitos, também poderia ser feito com letras, comprimento maior, etc. Primeiro eu deixo você o código que atende solicitações de postagem em PHP:

 
Vemos que não temos limites de tentativas, que o usuário e sua senha são definidos ali mesmo (para evitar bancos de dados e complicações para o código), se o usuário e a senha estiverem corretos retornamos um código 200 e se não um 403.

Em seguida, deixo o código Python que é responsável por enviar solicitações ao código anterior.

 import http.client, urllib.parsefrom time import target time = "/bruteForce/index.php"headers = {" Content-type ":" application / x-www-form-urlencoded "," Aceitar ":" application / xhtml + xml, text / html; q = 0.9, text / plain; ",} found = Falsepassword = 0home = time () while password <= 99999 and not found: parameters = urllib.parse.urlencode ({'user': ' josue ',' pass ': password}) connection = http.client.HTTPConnection ("localhost") connection.request ("POST", destino, parâmetros, cabeçalhos) response = connection.getresponse () if (response.status == 200): print ("Senha encontrada para o usuário josue, es", senha) print ("Demorou: {0: .2f} s" .format ((time () - start))) found = True else: print (senha) connection.close () password + = 1se não encontrado: print ("Nenhuma senha encontrada para josue")
Este código faz os pedidos de postagem, em cada passagem ao loop tudo o que fazemos é alterar a senha e adicionar 1 a ela, então vamos tentar todas as senhas possíveis de 0 a 99999 (se não a encontrarmos antes). Pinte todos os números que encontrar, porque é assim que eu queria para o exemplo, você pode remover, para isso você elimina o else. Vamos executar este código para ver se ele encontra as senhas.

O primeiro exemplo que vamos lançar para encontrar a senha 2087, abaixo está a imagem, você pode ver que não demoro 18 segundos para pegá-la.

Se eu remover o else para que não pinte na tela, cada número leva muito menos tempo, aqui você pode ver uma captura de tela:

Agora na segunda e última tentativa coloquei a senha 20870, para ver quanto tempo leva dessa vez.

Você pode ver a diferença, ao adicionar mais um caractere à senha, mas mesmo assim é um tempo que podemos esperar sem problemas, também se colocássemos tópicos o tempo diminuiria. É por isso que usamos senhas fortes e autenticação robusta em nossos aplicativos, que não podem automatizar esse ataque.

Se você quiser ver um exemplo prático em que a senha de um zip ou rar é quebrada, você pode visitar o seguinte tutorial:

Quebrar senha .rar ou .zip

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave