Aprenda Redes

  • Página Inicial
  • Contato!
  • Tudo sobre Redes Parte 1!
  • Tudo sobre Redes Parte 2!
  • Tudo sobre Redes Parte 3!
  • Tudo sobre Redes Parte 4!
  • Tudo sobre Redes Parte 5!
  • Tudo sobre Redes Parte 6!
  • Tudo sobre Redes Parte 7!
  • Tudo sobre Redes Parte 8!
  • Tudo sobre Redes Parte 9!
  • Tudo sobre Redes Parte 10!
  • Tudo sobre Redes Parte 11!
  • Tudo sobre Redes Parte 12!
  • Tudo sobre Redes Parte 13!
  • Tudo sobre Redes Parte 14!
  • Wireshark - Parte 1

    Primeiros Passos

    Primeiramente, baixe o Wireshark, em Linux use o apt-get, em Windows baixe nesse link: https://www.wireshark.org/#download

    PS: É provável que a versão do Npcap do Windows que vem com o Wireshark esteja desatualizada, se for o caso baixe aqui: https://nmap.org/npcap/#download

    Nele, vemos primeiramente as placas de rede disponíveis no nosso computador. Clique nela, e veremos todas as atividades da nossa rede, abra o navegador com o programa aberto para vermos a atividade.

    A barbatana do tubarão inicia a captura de pacotes, para parar clique no quadrado vermelho. Vemos os IPs de origem (source) e destino, protocolos e outros dados. Abaixo dele tem os dados do pacote, como os MACs de destino e outros dados. Para ver os dados de um determinado IP, clique nele.

    Podemos ver por exemplo, no filtro, os pacotes de um determinado protocolo, por exemplo, o ARP.

    Podemos salvar o arquivo de análise também e ver em outro computador.

    PS: Podemos por exemplo, dar um ping na linha de comando do sistema e analisar os requests e replys deste.

    Numa rede baseada em switches, só poderemos capturar tráfego direcionado à nossa máquina, broadcasts e alguns multicasts. Dá pra configurar isso no switch com o espelhamento de portas, que copia o tráfego para a porta da sua estação. Um estouro de tabela MAC do switch também pode fazer ele entrar em modo broadcast.

    Filtrando Endereços IP

    Para pegar apenas informações de um determinado IP, digitamos no filtro ip.addr == 192.168.0.1 (substituindo pelo IP desejado), para ver os resultados desse IP de uma cor destacada.

    Para vermos apenas resultados com esse determinado IP de origem, digitamos ip.src == 192.168.0.1, e pegar esse IP de destino, digite ip.dst == 192.168.0.1.

    Filtrando Endereços e Protocolos

    Para colocar algo que queremos que não seja exibido, usamos o mesmo filtro, mas com um ponto de exclamação, que significa negação, por exemplo !(ip.addr == 192.168.0.1).

    Para não mostrar tráfegos de um determinado protocolo, podemos usar por exemplo not tcp, para mais de um podemos ser por exemplo not tcp and not arp. Como visto, podemos colocar operadores como and, or e not também, tanto com o nome literal quanto no padrão C (&&, || e !).

    Podemos filtrar um determinado protocolo usando os comandos como por exemplo tcp.port == 80 para filtrar o tráfego HTTP (podendo nesse caso ser diretamente pesquisado apenas http também). Outros filtros podem ser usados (inclusive com negação), para protocolos como FTP, SSH, entre outros.

    Clique com o botão direito em um dos pacotes e em Follow e TCP Stream, você terá acesso ao código binário do programa. Se permitido, teremos outras opções disponíveis, como UDP Stream e TLS Stream.

    Usando o Tshark via Linha de Comandos

    Para usar o Tshark via linha de comandos, usamos dessa forma:

    
    tshark -D # Mostra as interfaces
    
    tshark -i NomeDaInterface "tcp port 80" # Usamos um filtro igual na interface gráfica
    
    tshark -i NomeDaInterface -w arquivo.pcapng # Salva num arquivo
    
    tshark -r arquivo.pcapng # Lê um arquivo no terminal
    
    

    Podemos usar vários filtros, inclusive em conjunto, por exemplo:

    
    tshark -r arquivo.pcapng "http"
    
    

    Filtros Avançados para Wireshark e Tshark

    Veja alguns exemplos de filtros que podemos usar no Wireshark e no Tshark:

    
    ip.addr == 192.168.0.1 # Mostra tráfego envolvendo esse IP
    
    tcp # Apenas pacotes TCP
    
    udp # Apenas pacotes UDP
    
    dns # Apenas consultas/respostas DNS
    
    # Filtros por porta:
    
    tcp.port == 80 # Tráfego HTTP
    
    tcp.port == 443 # Tráfego HTTPS
    
    udp.port == 53 # DNS
    
    # Filtros por protocolo:
    
    http # Tráfego HTTP
    
    tls # Tráfego criptografado (HTTPS)
    
    icmp # Ping (ICMP)
    
    # Filtros mais específicos:
    
    ip.src == 192.168.0.10 # Origem específica
    
    ip.dst == 8.8.8.8 # Destino específico
    
    tcp.flags.syn == 1 # Pacotes de início de conexão (SYN)
    
    http.request.method == "GET" # Apenas requisições GET, dá pra fazer com POST também
    
    # Combinar filtros:
    
    tcp.port == 80 && ip.addr == 192.168.0.5
    
    

    Temos alguns filtros mais avançados:

    
    # Segurança:
    
    tcp.flags.reset == 1 # Conexões sendo resetadas (possível problema ou bloqueio)
    
    tcp.analysis.retransmission # Pacotes retransmitidos (rede lenta/perda)
    
    dns.flags.response == 0 # Apenas requisições DNS (quem está consultando)
    
    ip.addr == 192.168.0.0/24 # Toda uma sub-rede
    
    # Web e aplicações:
    
    http.response.code == 404 # Erros "não encontrado"
    
    http contains "login" # Pacotes HTTP com "login" no conteúdo
    
    tls.handshake.type == 1 # Client Hello (início de conexão TLS)
    
    tls.record.version == 0x0303 # TLS 1.2
    
    # E-mail e transferência:
    
    smtp # Tráfego de e-mail (SMTP)
    
    ftp # FTP (transferência de arquivos)
    
    imap # Acesso a e-mail via IMAP
    
    # Rede local e dispositivos:
    
    arp # Resolução de IP/MAC (ARP)
    
    bootp # DHCP (atribuição de IP)
    
    eth.addr == aa:bb:cc:dd:ee:ff # Filtrar por MAC
    
    # Diagnóstico avançado:
    
    frame.len > 1000 # Pacotes grandes
    
    tcp.window_size < 100 # Possível gargalo de janela TCP
    
    icmp.type == 3 # Destino inalcançável
    
    icmp.type == 8 # Echo request (ping enviado)
    
    # Combinações úteis
    
    dns && ip.src == 192.168.1.5 # DNS vindo de um host específico
    
    tcp.port == 443 && ip.dst == 172.217.0.0/16 # HTTPS para um range específico
    
    !(arp || dns) # Excluir tráfego comum “ruído”