Neste tutorial scapy – parte 3, iremos começar a entender como utilizar a ferramenta Scapy, analisar suas principais funcionalidades e nos aventurar no modo interativo.

Scapy – Modo Interativo

O Scapy pode ser executado em dois modos diferentes, interativamente a partir de uma janela de terminal e como um módulo a partir de um script Python.

Vamos começar a nos familiarizar com o Scapy usando o modo interativo.

Para que o Scapy possa realizar algumas tarefas como envio e recebimento de pacotes na rede, é preciso executá-lo como usuário root.

Importante lembrarmos que instalamos o Scapy dentro do ambiente (tutorial-scapy), portanto para iniciar a ferramenta precisaremos ir até este ambiente virtual.

Scapy Modo Interativo

 

Comandos Básicos

Para obtermos a lista de comandos básicos do Scapy, basta utilizarmos a função lsc(), conforme abaixo:

Nota: Eu trunquei esta lista, e tentei deixar apenas as funções que mais iremos utilizar durante o tutorial.

É uma incrível lista de comandos! Vamos pelo menos apresentar a maioria desses comandos, e há alguns que usaremos extensivamente. Para os próximos tópicos, abordaremos especificamente: ls (), send (), sniff (), sr*() e wrpcap().

Na verdade, vamos em frente e usar um desses agora para mostrar alguns dos incríveis recursos internos do Scapy! Vamos utilizar a função sniff() para capturar um único pacote em nossa rede e depois vamos analisar o pacote que coletamos.

Utilizando a função sniff()

A função sniff traz diversas funcionalidades interessantes, e podemos descobri-las utilizando a função help.

Neste primeiro uso, quero coletar um pacote ICMP(), o famoso ping, e mostrar cada camada dele. Para isso, utilizaremos os seguintes parâmetros:

  • count: número de pacotes que serão capturados, este valor será igual à 1, pois queremos capturar apenas um pacote
  • prn: uma função para ser aplicada em cada pacote, este parâmetro receberá o valor Packet.show, pois queremos ver cada camada do pacote assim que ele for capturado.
  • filter: um filtro BPF, este parâmetro receberá o valor “icmp”, pois queremos capturar um pacote do tipo ICMP

Uau, olha que incrível! Conseguimos capturar um pacote ICMP e imprimir na tela todas as camadas deste pacote com seus respectivos campos.

Vamos olhar a camada ###[ IP ]### para vermos cada informação que o Scapy nos traz.

Conseguimos saber a versão do protoclo IP, que neste caso é a versão 4 (IPv4), também sabemos que o TTL é 128, o protocolo de camada superior é o ICMP e ainda temos a informação de IP de origem e destino deste pacote.

É como olharmos para um pacote no Wireshark, a diferença é que temos todo o poder de manipulação que o Scapy nos proporciona!

Mas espere, como o Scapy sabe que este pacote contém camadas Ethernet, IP e ICMP?

Pois bem, o Scapy tem uma ampla gama de suporte a protocolos. A lista é muito longa para eu imprimir aqui, portanto deixarei que você execute este próximo comando sozinho.

Utilizando a função ls()

No modo interativo do Scapy, execute o comando ls() e observe todos os protocolos suportados.

Utilizamos a função ls() para ver a lista de protocolos suportados pelo Scapy. Se utilizarmos a função ls(), e passarmos como argumento um protocolo específico, como o IP, também poderemos ter a descrição de cada campo contido neste protocolo.

Agora que já temos uma boa noção de como o modo interativo do Scapy funciona, que tal aprendermos à ler e acessar os parâmetros de cada camada dos pacotes?

<< Tutorial Scapy – Parte 2Tutorial Scapy – Parte 4 >>