Bóson Treinamentos em Ciência e Tecnologia

PackETH – Ferramenta para gerar pacotes de rede

packETH - Gerar pacotes de rede

PackETH – Gerando pacotes de rede

O packETH é um software gerador de pacotes de rede que permite criar e enviar quaisquer tipos de pacotes, totalmente personalizados campo a campo, em uma rede Ethernet.
Com ele podemos ajustar inúmeros parâmetros e então enviar o pacote (ou sequência de pacotes) pela rede, sendo uma ferramenta muito útil para realização de testes em redes e estudo de protocolos.
O packETH pode ser obtido no site http://packeth.sourceforge.net/packeth/Home.html, e possui versões para Windows, Mac e Linux. A versão mais recente é a 1.8.1 (para Linux), sendo as versões para Windows e Mac ligeiramente mais antigas (até o momento).

Características básicas do packETH:
Protocolos suportados:

É possível também ajustar diversos parâmetros nos pacotes, tais como:

E ainda é possível salvar configurações em um arquivo e carregar essas configurações posteriormente, além de suportar o formato pcap.

O software possui versões para interface gráfica (GUI) e linha de comandos (CLI). Neste tutorial vou usar a versão para interface gráfica.

Para instalar o packETH, clique no link a seguir, que o levará à página de downloads, onde você poderá escolher a versão mais adequada a seu sistema:

Download do packETH

Se você estiver utilizando alguma distribuição Linux, é possível que o packETH esteja presente nos repositórios de sua distro. Como vou utilizar o Linux Debian nos exemplos, irei instalá-lo via apt-get. Para isso, usarei o comando a seguir (funciona também no Ubuntu e derivados):

$ sudo apt-get install packeth

Caso você queira usar a versão para Windows, sua instalação é bem simples e básica: basta baixar o pacote zipado, extrair seu conteúdo em uma pasta qualquer do sistema, e então executar o arquivo packETH.exe. Porém, você deve estar ciente do seguinte: as versões para Windows e OS X foram portadas por terceiros, e possuem alguns bugs. Por isso, recomendamos utilizar a versão para Linux, para que o software possa ser utilizado sem nenhum tipo de problemas e com todos os seus recursos funcionais.

Observação: Caso apareça o erro “O programa não pode ser iniciado porque está faltando wpcap.dll no seu computador”, você precisará instalar a biblioteca WinPcap para que seja possível utilizar o packETH. Clique aqui para baixar o WinPcap (para Windows). Se preferir, visite o site oficial do projeto WinPcap.

Erro: falta biblioteca e driver WinPcap

Após instalar a biblioteca WinPcap (instalador corriqueiro – execute-o e siga as instruções para instalá-lo), tente abrir novamente o packETH.

Como citado, neste artigo vou usar a versão para Linux. Veja a tela inicial do programa aberto abaixo (é necessário privilégios de administrador para poder enviar os pacotes):

A barra de ferramentas nos permite acessar os vários modos de funcionamento do programa. Veja abaixo a barra de ferramentas e a seguir uma descrição sucinta de cada um de seus botões:

Criando pacotes com packETH

Vamos criar um pacote de exemplo simples e enviá-lo pela rede. As configurações do equipamento que utilizarei são as seguintes:

Vou criar um pacote ICMP Echo request (“ping”) e  enviarei do meu host ao meu roteador. Para isso, vamos configurar os campos nas camadas de Enlace e Internet do pacote, de acordo com os dados a seguir:

Camada de Enlace

Próxima camada (Next layer): IPv4

Camada de Internet

Próxima camada (Next layer): ICMP

Dados do pacote ICMP:

Após configurar o pacote, basta clicar no botão Send para enviá-lo. Não se esqueça de antes clicar no botão Interface e selecionar a interface de rede que será utilizada no envio do pacote. Veja na figura a seguir o pacote capturado no Wireshark, e note que houve a resposta Echo Reply do meu host de destino. Note também o payload do pacote (“FÁBIO”):

 

Exemplo 02: Enviando um pacote TCP

Vamos a um segundo exemplo. Desta vez vou enviar um pacote TCP com o flag SYN ativado, o que irá iniciar o procedimento do handshake de três vias entre os hosts. Espera-se que o host de destino responda com um pacote contendo as flags SYN e ACK ativadas, indicando que a conexão foi aceita, mas não será compeltada pois meu host irá usar uma porta fictícia (não ativa), e deverá responder de volta com um flag RST (reset).

Configurações do equipamento::

Camada de Enlace

Próxima camada (Next layer): IPv4

Camada de Internet

Próxima camada (Next layer): TCP

 

Camada de Transporte (Dados TCP)

Após configurar o pacote, basta clicar no botão Send para enviá-lo. Veja na figura a seguir o pacote capturado no Wireshark, e note que houve a resposta do meu gateway com as flags SYN e ACK ativadas, e veja que a máquina de origem respondeu de volta com a flag RST ativada, resetando a conexão:

Gateway respondendo com flags SYN e ACK

Host respondendo ao gateway com flag RST ativada

Você pode criar uma infinidade de tipos de pacotes, combinando as opções de campos disponíveis, e realizar testes variados em sua rede, com testes de conectividade e segurança. Nos próximos artigos vou tratar sobre funcionalidades mais avançadas do packETH, que podem ser configuradas clicando nos botões Gen-b, Gen-s e Pcap.

 

Sair da versão mobile