quarta-feira, 1 de junho de 2011

Crie seu próprio dicionário para força bruta

Uma das técnicas de ataque bastante utilizada em pentest é o de força bruta, para isso você precisa de um bom dicionário. Neste post vamos aprender a criar um dicionário a partir de um documento txt.

Vamos usar a string abaixo para pegar um texto dentro de um arquivo e colocar cada palavra por linha:

cat saida.txt | awk '{FS= " "}{for(i=1;i<NF+1;i++) if ($i ~ /[a-zA-Z0-9]+/) print $i}' > dicionario.txt

Neste exemplo o arquivo "documento.txt" tem o seguinte conteúdo:

"teste. tes) dsdas" :wq dfsds; dss@ dffd% fdsgfds!"


A string acima ira pegar cada palavra e colocar uma por linha e salvará o resultado no arquivo dicionario.txt, ficando assim:


teste.
tes)
dsdas"
:wq
dfsds;
dss@
dffd%
fdsgfds!

Agora precisamos tirar os caracteres especiais, para isso usaremos o comando sed do linux:
sed -i -r "s/[\"\!\@\#\$\%\&\(\)\:\.\;]//g" dicionario.txt

Agora podemos usar o script "lensort.pl" que criará vários arquivos com base no tamanho da palavra, segue abaixo o script:



#!/usr/bin/perl
# Sort passwords into new files based on length
# Input: password file
# Output 1.txt, 2.txt, 3.txt, 4.txt, etc
use warnings;
use strict;
my @lines;
# Read from stdn in if filename is -, otherwise open file
if (! $ARGV[0]) {
    print "Usage: $0 \n";
    exit 2;
}
if ("$ARGV[0]" eq "-") {
    @lines = ;
} elsif ( -e $ARGV[0] ) {
    open my $ifh, '<', $ARGV[0] or die "Unable to open file $ARGV[0]: $!\n";
    @lines = <$ifh>;
    close $ifh;
} else {
    print "Unable to open file: $ARGV[0]\n";
    exit 2;
}
chomp @lines;
my %fhs; # Hash of filehandles, 1.txt, 2.txt, etc
print "Sorting ".scalar(@lines)." passwords by length\n";
foreach my $pw (@lines) {
    if (!defined($fhs{length($pw)})) {
        open $fhs{length($pw)}, '>', "".length($pw).".txt";
    }
    print { $fhs{length($pw)} } "$pw\n";
}
foreach my $key (keys(%fhs)) {
  print "Finished $key.txt\n";
  close $fhs{$key};
}
Veja abaixo como executar o script e o resultado:
./lensort.pl dicionario.txt Sorting 9 passwords by length Finished 4.txt Finished 0.txt Finished 3.txt Finished 7.txt Finished 2.txt Finished 5.txt
Este script criou 6 arquivos conforme o número de caracteres, ideal para você usar em sistemas em que você sabe que a Política de Senha esta configurada para que a senha seja por exemplo no mínimo 7 caracteres - neste caso você ira usar o arquivo 7.txt - com isso agilizando o tempo de ataque.
Segue o link de onde baixei o script:

Um comentário:

  1. Valeu a dica.
    Faltou apenas remover as vírgulas no sed.
    Mas como costumava dizer o meu professor, isso foi só para ver se o aluno prestou atenção.

    ResponderExcluir