[Mini-Tutorial + Code] Listador de sites (Googler)

Started by Mental_Way, 15 de February , 2007, 02:23:59 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Mental_Way

Olá conhecidos do UndergrounD,


Aqui quem fala é Mental_Way e depois de muito tempo de promessas estou aqui e vou começar a divulgar meus trabalhos, que ficaram totalmente reservados, de forma didática, para contribuir com o conteudo undergound dos brasileiros :)


O que é um Listador de Paginas?
São programas que normalmente automatizam a listagem de sites, ou seja, ao inves de ir em algum buscador e digitar allinurl:"database.php" para achar sites, esses programas agem como facilitadores e listam e gravam os sites em um arquivo txt, para que possa ser utilizado por outro scanner para determinada vulnerabilidade.

Para que servem?
Serve para faciltar a busca de determinada "string" em um buscador, no nosso caso o google.

Quem os usa?
Normalmente utilizados por grupos de defacers para que possam de maneira mais rápida achar sites vulneráveis a determinadas falhas. Para que isso seja possivel eles se utilizam de strings pré-definidas. Isso faz com que sejam possiveis ataques de forma mais eficiênte, para poderem "competir" com outros grupos.


Não só para quem esta começando agora em programação, mais para quem deseja fazer programas semelhantes, acho bom entenderem a lógica de um programa para que tenha uma melhor aprendizagem.


Lógica do programa:

--------------------------------------------------------
Abertura do programa # Tem que ter...
--------------------------------------------------------
Lista de strings # Carrega uma lista de strings # Coloquei essa função para deixar o programa mais funcional
--------------------------------------------------------
Abre o arquivo de strings e salva em uma array # Melhor performace
--------------------------------------------------------
Onde serão salvo os resultados # Forma de personalização do programa
--------------------------------------------------------
Coloca o cabeçario # Uma forma de deixar sua marca
--------------------------------------------------------
Verificação da string # Verifica dentro da string se contem algum espaço para que a requisição seja feita de forma correta
--------------------------------------------------------
Começa a procura # Esta na hora
--------------------------------------------------------
Verifica a autenticação do google # Verifica se na página pede algum tipo de autenticação, uma função para que o scanner não fique parado eternamente OBS: ainda em teste
--------------------------------------------------------
Verifica se naum esta dando erro na requisição # uma função de ultima hora
--------------------------------------------------------
Começa a conexão # para a conexão é necessário a refência para que seja possivel acessar o site sem problemas
--------------------------------------------------------
Procura por links # Se utiliza de odigo fonte padrão para o link das páginas
--------------------------------------------------------
Salva os links em um arquivo e os mostra na tela # Salva os links no arquivo de texto cujo nome foi dado
--------------------------------------------------------
Atribiu um novo valor a $a # Variavel que define em que página o google se encontra
--------------------------------------------------------
LOOP # Volta a procura com o novo valor da variavel $a
--------------------------------------------------------
Finaliza o programa e mostra os resultados # Sempre bom :)
--------------------------------------------------------



Espero ter ajudado a quem ainda não conhece essa ferramenta.

Agora vou parar de enrolar e postar o code.

OBS: para que funcione no linux é necessário que se retire os system (''); ou os substitua por semelhate.



########################################  CUT HERE  #########################################



#!/usr/bin/perl # Identificação de código como perl

use IO::Socket::INET; # o Socket que esta sendo usado
system ('title [] - Gerador de Listas Googler c/ lista de palavras - RitulistaS GrouP - [ By Mental_Way ]'); # Colocando o titulo no CMD
system ('color 0a'); # Cor utilizada no Prompt
system ('cls'); # Limpando tela para melhor apresentação para linux deve ser substituido por system ('clear');
print "\n\nIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n"; # Titulo
print "IIIIIIIIIIIIIIIIIIIIIIIIII Gerador de Listas Googler  IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII   Com lista de palavras    IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII    RitualistaS GrouP       IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIII      [ Mental_Way ]        IIIIIIIIIIIIIIIIIIIIIIIIII\n";
print "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII";
print "\n\n\n[]- Carregar lista de Strings. Ex: Lista_de_strings.txt\n";
print "[]= ";
$ARGV[0] = <STDIN>; # Neste local estarei pedindo para que  seja digitado a lista a ser carregada será salva na variavel $ARGV[0]


################ Abrindo lista de strings para procura

chomp ($ARGV[0]);
open (sites, $ARGV[0]) or die "Erro ao abrir lista."; # Caso não consiga abrir a lista sera dado um erro e sairá do programa
@sites = <sites>;
close(sites) ;


print "\n Digite o nome do arquivo onde serão salvo os resultados:\n\n Ex: sites_gov.txt\n\n";
print "[]= ";
$resultados = <STDIN>; #Local onde serão salvo os resultados...

################ Abrindo o arquivo e escrevendo o cabeçario

open(arq,">>$resultados");
print arq "#################################################################\n";
print arq "# #\n";
print arq "#  RitualistaS GrouP #\n";
print arq "# #\n";
print arq "#  Coder by Mental_Way #\n";
print arq "# #\n";
print arq "#  Contato: wental_Way@hotmail.com #\n";
print arq "# #\n";
print arq "#  Greetz: AciDmuD, Dark_Side, S4r4d0. #\n";
print arq "# #\n";
print arq "#  Greetz all: HackMode Family, Darkers and Google. #\n";
print arq "# #\n";
print arq "#################################################################\n";
print arq "# #\n";
print arq "# Gerador listas GOOGLE c/ lista de palavras. #\n";
print arq "# #\n";
print arq "#################################################################\n";
close(arq);

################ Salvando as strings da lista requerida

foreach $procura(@sites)
{
chomp($procura);
$a=0;

################ Verifica se na lista contém algum caracter com espaços e substitui por + para que seja aceita a requisição pelo google.

if($procura=~ / /){$procura =~ s/ /+/g;}

################ Começa a procura

print "\n\nProcurando por $procura\n\n";
$resul2="";
while($resul2 !~ /resultados omitidos/) # Verifica se a variavel $resul2 contem a frase "resultados omitidos" para parar o loop

{

################ Nova função: Verifica se na página requerida pede autenticação do googler caso isso ocorra naum será mais possivel a busca antes da normalização do sistema

if($resul2=~ m/<TITLE>403 Forbidden<\/TITLE>/)
{
print "\n\n Erro ao tentar fazer requisicao ao Google.";
print "\n\n OBS:\n Caso queira resolver o problema vá no Google, faça uma \"pesquisa longa\" e digite os caracteres pedidos. Caso não de certo espero um tempo.\n\n";
print "\n\n[+] Olhe onde parou a pesquisa no arquivo $resultados\n";
<STDIN>;
exit;
}

############## Função de ultima hora, mais funcional..

if($resul2=~ m/<title>404 Not Found<\/title>/)
{
print "\n\n Erro ao tentar fazer requisicao ao Google. Tente novamente mais tarde.";
print "\n\n OBS:\n Caso queira resolver o problema vá no Google, faça uma \"pesquisa longa\" e digite os caracteres pedidos. Caso não de certo espero um tempo.\n\n";
print "\n\n[+] Olhe onde parou a pesquisa no arquivo $resultados\n";
<STDIN>;
exit;
}
################ Começa a conexão
   
if($a<100) # Verifica se essa é a primeira pagina de procura
   {
    $sock = IO::Socket::INET->new(PeerAddr => "www.google.com.br", PeerPort => 80, Proto => "tcp")or next; # Faz a conexão de socket com o www.google.com.br pela porta 80 utilizando o protocolo TCP, caso ocorra erro da continuidade ao codigo
    print $sock "GET /search?num=100&hl=pt-BR&q=$procura HTTP/1.0\r\n"; # Requere a página dentro do host
    print $sock "Content-type: text/html\n\n"; # O tipo de arquivo a ser enviado
    print $sock "Host: www.google.com.br \r\n\r\n"; # O host a ser conectado
    print $sock "Referer: http://www.google.com.br/search?hl=pt-BR&q=$procura\n"; # De onde é proveniente essa página, ou seja, a referência.
    @resul=<$sock>;
    $resul2="@resul";
    close($sock);
   }

   else
   {
 

    ################ Aqui será feita a mesma conexão acima, porém essa só é executada a partir da segunda página, pois o google necessita da referência para completar o requisição.
    $sock = IO::Socket::INET->new(PeerAddr => "www.google.com.br", PeerPort => 80, Proto => "tcp")or next;
    print $sock "GET /search?q=$procura&num=100&hl=pt-BR&start=$a&sa=N HTTP/1.0\r\n";
    print $sock "Content-type: text/html\n\n";
    print $sock "Host: www.google.com.br/ \r\n\r\n";
    print $sock "Referer: http://www.google.com.br/search?hl=pt-BR&q=$procura\n";
    @resul=<$sock>;
    $resul2="@resul";
    close($sock);
   }

################ Filtro Utilizada para verificar os links do google

   FILTRO;
   while($resul2=~ m/<h2 class=r><a href=".*?" class=l>.*?<\/a>/) # Procura dentro do código fonte a sequência <h2 class=r><a href="http://www.algumsite.com.br/seila.html" class=l>Algum site</a>
  {
   $resul2=~ s/<h2 class=r><a href="(.*?)" class=l>.*?<\/a>/$1/; # Seleciona o site e salva no arquivo $1
   $ref = $1;
   $prox = $ref;
   print "$prox\n";
   open(arq,">>$resultados"); # Abri o arquivo cujo nome foi dado acima
   print arq "$prox\n"; # Grava a variavel $proxy no arquivo
   close(arq); # fecha o arquivo

  }
$a +=100; # Atribui novo valor a variavel $a que é utilizada para marcar em qual página da pesquisa vc esta
}
}
print "\n\n[+] Olhe a lista no arquivo $resultados\n";
<STDIN>;

########################################  END CUT  #########################################



Para quem deseja o programa sem os coments seque nos links abaixo:

http://www.sendspace.com/file/kxk8k2

http://rapidshare.com/files/16519766/Go ... ta.pl.html

http://d.turboupload.com/d/1528807/Goog ... ta.pl.html


Agradeço quem conseguiu ler todo o conteudo e entender, se vc entendeu eu já estou contende em ajudar alguem.
Se vc não entendeu. Espero que um dia consiga entender. :)

Reprodução permitida desde que citada a fonte.

Espero que tenha gostado e ate +....

Sem +...


   Mental_Way

[ mailto:wental_way@hotmail.com">wental_way@hotmail.com ]

    RitualistaS GrouP
[RitualistaS GrouP]

"Aquele que sabe pouco rapidamente revela isto."

insanity

Primeiro trabalho do mental_way que eu vejo publicado lol, na proxima vez coloque o codigo fonte entre "code", fica mais facil para visualizar ;)

DarkGenesis

Opah, valew por divulgar o trabalho de vocês aqui no darkers.
Parabéns, Ponto Positivo. :D

Anonymous

Posso estar fazendo tudo errado mais tipo, eu abro o Googler_lista digito index.php? e de vez de abrir os resultados ele fecha o programa.

O que eu estaria fazendo errado?

Mental_Way

Shell.Code

Primeiramente vc tem tem que seguir o que esta sendo pedido, ou seja, vc tem que carregar uma lista de
strings que provavelmente se localizará em um arquivo txt, que deve estar na pastado googler_lista.

Quaisquer dúvidas estamos ai!!!

Sem+...
[RitualistaS GrouP]

"Aquele que sabe pouco rapidamente revela isto."

branco

parabens pelo seu trabalho mentalway :) go continuar assim =]

ate mais
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?

lcs

Muito bem explicado o codugo consegui entender algumas partes, valeww..
Pra que viver sem sentido.

keyhell

Quando ele busca uma string que o google não encontra resultado algum ele  para de buscar!!!
Tem como implementar algum timeout ou coisa do tipo pra ele pular pra proxima?

Abraços
Prefiro morrer de pé a viver sempre ajoelhado.
(Ernesto "Che" Guevara)