Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Sniffing de pacotes usando Extcap

Extcap é um plugin para o Wireshark que permite usar o binário Pyspinel como interface de captura. Wireshark é uma ferramenta de código aberto que pode decodificar protocolos de rede na pilha de Threads, como IEEE 802.15.4, 6LoWPAN, IPv6, MLE (Mesh Link Establishment), UDP e CoAP. Extcap reduz a instalação e configuração necessária para farejar pacotes de Thread usando Wireshark, uma vez que não requer gravação em um arquivo de captura.

Este guia cobre como configurar extcap para Wireshark para farejar pacotes de uma rede Thread.

Para usar o Pyspinel para farejar pacotes sem extcap, consulte Farejar pacotes com Pyspinel .

Requisitos

Hardware:

  • Uma máquina host para servir como um NCP e executar o Pyspinel e o Wireshark:
    • macOS - OS X 10.6 de 64 bits ou posterior
    • Linux
    • Windows - 10 ou posterior
  • 1 dispositivo OpenThread piscou com uma construção ot-ncp-ftd ou ot-rcp .

Programas:

  • Python 3 para executar Pyspinel
  • Wireshark 3.0.6 ou mais recente para suporte a extcap

Verificação

Este guia foi verificado com o Zolertia Firefly ( Texas Instruments CC2538 SoC ) nos seguintes sistemas hospedeiros:

  • Debian 4.19.37 - Wireshark 3.0.4
  • macOS Mojave 10.14.6 - Wireshark 3.0.5
  • Windows 10 de 64 bits versão 17134 - Wireshark 3.0.6

Instale o Wireshark

Linux

Abra um terminal e execute os seguintes comandos para baixar e instalar o Wireshark:

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark

Recomendamos executar o Wireshark como um usuário não root. Para fazer isso, reconfigure o pacote:

sudo dpkg-reconfigure wireshark-common

Quando você receber a caixa de diálogo perguntando "Os não superusuários podem capturar pacotes?", Selecione Sim , depois adicione o usuário wireshark e atualize as permissões do arquivo:

sudo adduser $USER wireshark
sudo chmod +x /usr/bin/dumpcap

Mac OS

Baixe e instale o Wireshark para macOS.

Construir e piscar o farejador

As instruções de construção e atualização variam de acordo com a plataforma.

Para obter instruções sobre como construir e atualizar o CC2538, consulte o exemplo de README do CC2538 no GitHub.

Para obter instruções gerais de construção, consulte Como construir OpenThread .

Configure o ambiente sniffer

  1. Abra o Wireshark. Vá para Ajuda > Sobre o Wireshark e selecione a guia Pastas . A entrada do caminho Extcap lista a localização extcap. Anote este local.
  2. Instale dependências:
    sudo apt install python3-pip
    pip3 install --user pyserial ipaddress
  3. Clone o repositório Pyspinel:
    git clone https://github.com/openthread/pyspinel
  4. Instale Pyspinel, usando o caminho extcap de Wireshark:
    cd pyspinel
    python3 setup.py install --extcap-path=extcap-path

Como alternativa, configure o ambiente instalando o pacote pyspinel:

pip3 install pyspinel --install-option="--extcap-path=extcap-path"

Configuração do Wireshark - protocolos

O Wireshark deve ser configurado para mostrar os pacotes Thread de maneira adequada.

Selecione Preferences ... no Wireshark e expanda a seção Protocols .

6LoWPAN

Selecione 6LoWPAN na lista de protocolos e verifique ou altere as seguintes configurações:

  1. Desmarque Derive ID de acordo com RFC 4944 .
  2. Atualize o contexto 0 com o prefixo local da malha para a rede Thread de destino.
OT Sniffer Wireshark 6LoWPAN

O Wireshark usa configurações de contexto para analisar o endereço IPv6 compactado e exibir os endereços de origem e de destino IPv6 corretamente.

Para mostrar os endereços de outros prefixos em malha configurados no gateway, atualize outros IDs de contexto com esses prefixos.

Para obter o ID de contexto para um prefixo específico na malha, visualize o Thread Network Data TLV em qualquer mensagem de resposta de dados MLE. Por exemplo:

Context 1: fd00:7d03:7d03:7d03::/64

CoAP

Selecione CoAP na lista de protocolos e defina a Porta UDP CoAP como 61631. Isso garante que as mensagens TMF (como solicitação de endereço) sejam exibidas.

IEEE 802.15.4

Selecione IEEE 802.15.4 na lista de protocolos e verifique ou altere as seguintes configurações:

  1. Defina 802.15.4 Ethertype (em hexadecimal) como "0x809a".
  2. Defina o Security Suite como "AES-128 Encryption, 32-bit Integrity Protection".
  3. Clique no botão Editar ... próximo a Chaves de descriptografia , que é onde você adiciona a chave mestra da rede Thread para descriptografar o pacote.
    1. Clique em + para adicionar uma chave de descriptografia .
    2. Insira a chave mestra da rede Thread na coluna da chave de descriptografia .
    3. Digite "1" como o índice da chave de descriptografia .
    4. Selecione Thread hash na caixa de listagem da coluna Key hash .
    5. OT Sniffer Wireshark IEEE 802.15.4
    6. Clique em OK para salvar a chave de descriptografia.

Fio

Selecione Thread na lista de protocolos e verifique ou altere as seguintes configurações:

  1. Digite "00000000" para o contador de sequência de threads .
  2. Desmarque Usar PAN ID como os dois primeiros octetos da chave mestra .
  3. Marque Adquirir automaticamente o contador de sequência de linhas .

Clique no botão OK para salvar as alterações de protocolo.

Algum tráfego de Thread pode ser analisado como o protocolo ZigBee. Para exibir corretamente esses dois protocolos, edite os protocolos habilitados no Wireshark:

  1. No Wireshark, vá para Analyze > Enabled Protocols .
  2. Desmarque os seguintes protocolos:
    1. LwMesh
    2. ZigBee
    3. ZigBee Green Power

Configuração Wireshark - RSSI

Para exibir RSSI no Wireshark:

  1. Vá para Preferências > Protocolos > IEEE 802.15.4 .
  2. Defina o formato FCS :
    • Se IEEE 802.15.4 TAP desabilitado: metadados TI CC24xx .
    • Se IEEE 802.15.4 TAP habilitado: ITU-T CRC-16 .
  3. Clique em OK para salvar e retornar ao menu Preferências .
  4. Em Preferências , selecione Aparência > Colunas .
  5. Adicione uma nova entrada:
    • Título: RSSI
    • Tipo: personalizado
    • Campos: wpan.rssi
OT Sniffer Wireshark RSSI

Use o farejador

A tela de captura do Wireshark é exibida quando o Wireshark é iniciado pela primeira vez. Ele deve listar as interfaces de hardware conectadas a um sniffer OpenThread.

Capture de uma única interface

Se esta é a primeira vez que usa uma interface, clique no botão Opções à esquerda da interface:

Captura OT Sniffer Wireshark Extcap

  1. Defina o canal com o valor desejado.
  2. Verifique IEEE 802.15.4 TAP para garantir que as informações do canal estão incluídas na saída do pcap e podem ser exibidas na GUI do Wireshark.
  3. Marque Salvar parâmetros no início da captura para garantir que esses parâmetros sejam salvos após o início da captura, para evitar ter que configurá-los novamente na próxima vez que você usar a interface (a menos que você precise mudar o canal).
  4. Clique em Iniciar .

Opções OT Sniffer Wireshark Extcap

Se seus parâmetros já estiverem salvos, comece a farejar selecionando a interface de hardware e clicando no ícone Wireshark no canto superior esquerdo.

Captura de múltiplas interfaces

Selecione todas as interfaces de hardware listadas na tela de captura e clique no ícone Wireshark no canto superior esquerdo.

Use estes campos para identificar sniffers individuais ao capturar de várias interfaces:

  • Interface ID (frame.interface_id) - Identificador de interface usado pelo Wireshark para identificar uma interface de captura
  • Nome da interface (frame.interface_name) - nome da interface usado pelo Wireshark para identificar uma interface de captura
  • Canal (wpan-tap.ch_num) - canal de captura IEEE 802.15.4 (intervalo: 11-26)

Pacotes Extcap OT Sniffer Wireshark

Solução de problemas

O sniffer OpenThread não está listado como uma interface Wireshark

  1. Se você tiver vários interpretadores Python instalados, certifique-se de que o interpretador Python 3 seja usado pelo script extcap. Pyspinel não é compatível com Python 2.
  2. Verifique se o hardware está enumerado em USB e se os drivers estão carregados.
  3. Verifique se o firmware correto (NCP ou RCP) foi atualizado para o hardware.
  4. Verifique se o script Python localizado no caminho extcap é executável.
    • Para OS X e Linux:
      1. Verifique se a permissão de execução está presente para o extcap_ot.py arquivo:
        ls -l extcap_ot.py
      2. Se a permissão executar (x) estiver ausente, modifique as permissões:
        chmod +x extcap_ot.py
      3. Verifique se a interface está listada:
        extcap_ot.py --extcap-interfaces
    • Para Windows:
      1. Verifique se a interface está listada:
        extcap_ot.bat --extcap-interfaces
      2. Se houver um erro do Python, verifique se a versão do Python é 3.x:
        py -3 --version

O Wireshark só permite que o usuário root capture pacotes

Durante a instalação do Wireshark no Ubuntu, o usuário será solicitado a escolher uma das seguintes opções:

  1. Crie o grupo de usuários wireshark e permita que todos os membros desse grupo capturem pacotes.
  2. Permita apenas que o usuário root capture pacotes.

Usar o Wireshark como usuário root é fortemente desencorajado. Se você escolheu essa opção, altere a configuração:

sudo dpkg-reconfigure wireshark-common

Se o Wireshark foi configurado para restringir a captura aos membros do grupo wireshark , você pode precisar adicionar o usuário correto ao grupo:

sudo usermod -a -G wireshark user

Adicione também o usuário correto ao grupo de dialout :

sudo usermod -a -G dialout user

Feche e reinicie o Wireshark para aplicar as novas configurações de grupo de usuários.

Erro de formato Wireshark ao capturar em várias interfaces USB no Windows

Este é um problema conhecido para algumas versões antigas do Wireshark. Certifique-se de usar o Wireshark 3.0.6 ou posterior.