MC833A - 2019
Programação de Redes de Computadores

Exercício 1: Ferramentas e Sniffers

Observações

Para toda e qualquer resposta seu resultado deve ser comprovado

Este trabalho deve seguir exclusivamente a descrição que está na página principal da disciplina, e não serão aceitos trabalhos que não estejam no padrão.

Não serão aceitos trabalhos após o prazo de entrega no dia 27 de Agosto de 2019.

Objetivos

Aprender a utilizar as funções básicas das ferramentas Wireshark e TCPDUMP.

Analisar o fluxo de pacotes na rede associando ao conhecimento teórico de redes de computadores.

Instruções para uso das máquinas virtuais

  1. Antes de começar a responder as questões execute:

    1. Abra o terminal/shell
    2. Digite no terminal:
      vm-netlabs
    3. Abra uma nova aba ou janela do terminal e execute:
      vm2-netlabs

    Nosso ambiente para realizar as atividades está pronto. Mas atenção para iniciar nosso ambiente você deve estar na sala 300 do IC-3.

  2. Conhecendo o ambiente:

    Primeiramente realize o seguinte comando em um terminal das duas instancia, para desabilitarmos o firewall.

    sudo iptables -F

    Descubra o endereço IP de cada instância.

    ifconfig ou ip address show

    Criando tráfego de rede entre VM1-NET-LABS VM2-NET-LABS :

    1. Em um LXTerminal da VM2-NET-LABS execute o seguinte comando:
      $ nc -l 7080
      Veja aqui a documentação do comando nc.
    2. Em outro terminal da VM2-NET-LABS analise a saída gerada pelo comando:
      $ netstat -lntp | grep 7080
      Qual é a situação da porta 7080 e qual processo está relacionado à ela?
    3. Em um LXTerminal da VM1-NET-LABS execute o seguinte comando:
      $ echo DADOSDADOSDADOS | nc IP-VM2-NET-LABS 7080
      1. Verifique a saída do LXTerminal onde estava o comando:
        nc -l 7080.
      2. A porta continua em Listen (Aberta) na VM2-NET-LABS ?

    As questões anteriores não devem ser entregues no relatório.

Wireshark

O Wireshark é um analisador de protocolos de rede, sendo uma ótima ferramenta para entender o fluxo de tráfego na rede. O Wireshark consegue capturar pacotes de diferentes interfaces e imprime eles como uma lista em sua interface. Dispõe de informações específicas de cada pacote, podendo também capturar pacotes em diferentes formatos.

Link para a wiki do Wireshark aqui

Questões:

  1. Realize o seguinte experimento:

    1. Na VM1-NET-LABS habilite o wireshark para capturar todos os tráfegos de redes na interface correta.
    2. Na VM2-NET-LABS abra o LXTerminal e execute o seguinte comando:
      $ nc -l 9000
    3. Na VM1-NET-LABS abra o LXTerminal e execute o seguinte comando:
      $ echo “Wireshark allow you to monitor other people's traffic” | nc IP-VM2-NET-LABS 9000
    4. Pare a captura de pacotes no Wireshark no ícone ou clique em Capture > Stop
    5. No Wireshark em Filtros coloque o seguinte filtro:
      ip.addr == IP-VM2-NET-LABS

    Agora analise a saída do Wireshark e responda:
    1. Quantos pacotes foram capturado entre a VM1-NET-LABS e a VM2-NET-LABS?
    2. Esse tráfego foi transportado por TCP ou UDP ? Explique o porquê de sua resposta.
    3. Quais são as portas e endereço IP utilizados entre a VM1-NET-LABS e a VM2-NET-LABS?
    4. Realize novamente o experimento e responda:
      Quais foram as diferenças entre a primeira e segunda execução do experimento?
  2. Realize o seguinte experimento:

    1. Na VM1-NET-LABS habilite o wireshark para capturar todos os tráfegos de redes na interface ens3.
    2. Na VM2-NET-LABS abra o LXTerminal e execute o seguinte comando:
      $ nc -u -l 9000
    3. Na VM1-NET-LABS abra o LXTerminal e execute o seguinte comando:
      $ echo “Don't use this to violate privacy or security” | nc -u IP-VM2-NET-LABS 9000
    4. Pare a captura de pacotes no Wireshark no icone ou clique em Capture > Stop
    5. No Wireshark em Filtros digite o seguinte filtro:
      ip.addr == IP-VM2-NET-LABS

    Análise a saída do Wireshark e responda:

    1. Quantos pacotes foram capturado entre a VM1-NET-LABS e a VM2-NET-LABS? O número de pacotes capturado é o mesmo do experimento anterior? Se não, Justifique.

    TCPDUMP

    TCPDUMP é uma ferramenta de análise de pacotes, utilizada por linha de comando no terminal.

    Link para a documentação do TCPDUMP aqui

    Veja a saída do man aqui

    Questões:

    1. Realize o seguinte experimento:

      1. Na VM1-NET-LABS abra dois terminais LXTerminal para capturar o tráfego.
      2. Escolha um dos terminais e digite
        wget --no-check-certificate https://arquivos.mhnet.com.br/M10.zip -O /dev/null
      3. Em um outro terminal em paralelo utilizando o comando sudo tcpdump -w [fileName] -s 0 seguido dos parâmetros corretos faça a captura do tráfego e armazene-o em arquivo .dat.
      4. Em seguida digite o comando sudo tcpdump -r [fileName] > [output] para gerar um arquivo de leitura
      5. Abra o arquivo em um editor de texto de sua preferência.
      6. A saída do arquivo deverá ser por exemplo:
      7. 00:34:41.474225 IP willow.csail.mit.edu.39675 > maple.csail.mit.edu.5001: Flags [.], seq 1473:2921, ack 1, win 115, options [nop,nop,TS val 282136474 ecr 282202089], length 1448

        denota um pacote enviado de willow para maple. O protocolo TCP usa números de sequência para rastrear quantos dados foram enviados. Este pacote tem o número de sequência 1473:2921, indicando que ele contém todos os bytes desde o byte # 1473 até o byte # 2920 (= 2921 - 1) do fluxo, totalizando 1448 bytes (note que 1448 = 2921 - 1473). O time stamp 00:34:41.474225 denota o instante no qual o pacote foi transmitido.

      Análise a saída gerada pelo TCPDUMP e responda:

      1. Quais as interfaces da máquina mostradas pelo comando ifconfig? Quais as interfaces nas quais o tcpdump pode escutar/capturar dados como usuário sem privilégios de root? Quais as diferenças e porquê?
      2. Quais os endereços IPs das máquinas utilizadas no experimento?
      3. Quais os endereços MACs das máquinas utilizadas no experimento? Use: sudo tcpdump [filename] -e, e o MAC por exemplo será 40:49:0f:fc:d8:f9. O arquivo filename é o .dat
      4. Quais foram as portas utilizadas no experimento?
      5. Quantos kilobytes no total foram transportados?
      6. Identifique a sequência de fechamento da conexão. Construa uma tabela com todos os passos incluindo origem, destino, protocolos e outras informações que julgar necessário.

    Aplicando o conhecimento

    1. Utilizando o mesmo arquivo que foi feito download no exercício anterior realize o seguinte experimento:

      1. Envie o arquivo da VM1-NET-LABS para a VM2-NET-LABS utilizando a seguinte sequência de comandos:

        No terminal da VM2-NET-LABS digite nc -l - p 1234 -q 1 > [fileName] < /dev/null

        No terminal da VM1-NET-LABS digite cat [fileName] | netcat [IP] 1234

      2. Monitore ambas as máquinas virtuais durante o envio do arquivo utilizando alguma das ferramentas que foram introduzidas até o momento na disciplina

      Note que o primeiro comando deve ser executado na máquina que possui o arquivo do exercício


      Responda agora às seguintes questões:

      1. Qual ferramenta (s) você utilizou para este exercício? Por que você optou por esta ferramenta (s)?
      2. Você indicaria outra ferramenta para realizar a tarefa de monitoramento deste experimento? Justifique.
      3. Esse tráfego foi transportado através de qual protocolo?

      Não esqueça de inserir as saídas no seu relatório.

    2. No ano de 2016 uma grande quantidade de alunos da Unicamp aderiram ao jogo Pokémon go. Como ocorreram muitas reclamações dos professores ... o gerente de redes precisou descobrir onde a rede estava saturada de pacotes pelo jogo. Imagine que você era o gerente de redes e fez a disciplina de MC833, seria possível analisar o tráfego da rede com alguma das ferramentas vistas na disciplina? Em caso afirmativo, qual você utilizaria para este caso? Justifique sua resposta.

Instituto de Computação
Universidade Estadual de Campinas
Av Albert Einstein 1251
13083-852 Campinas, SP - Brazil