arrow_back

Apresentação do tcpdump

Sign in Join
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Apresentação do tcpdump

Lab 1 hour universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Introdução

Neste laboratório, vai conhecer o tcpdump e algumas das suas funcionalidades. O tcpdump é a primeira ferramenta de análise de redes para profissionais de redes e segurança da informação. Para um especialista do apoio técnico de TI, possuir um bom domínio desta aplicação é essencial para compreender o protocolo TCP/IP. O tcpdump vai ajudar a apresentar o tráfego de rede de forma a tornar mais fácil a análise e resolução de problemas.

Tem 60 minutos para concluir este laboratório.

O que vai fazer

  • Noções básicas de comandos: vai ficar a saber como utilizar o tcpdump, qual a função de algumas das suas sinalizações e como interpretar o resultado.
  • Capturas de pacotes: vai praticar como guardar capturas de pacotes para ficheiros e voltar a lê-las.

Para algumas partes deste laboratório, será necessário ter mais de um terminal aberto ao mesmo tempo, por isso, certifique-se de que tem um terminal com outro terminal de ligação aberto. Desta forma, pode optar por entrar numa VM através de SSH mais do que uma vez.

Configuração do laboratório

Inicie o laboratório

Tem de iniciar o laboratório antes de poder aceder aos materiais no SO da máquina virtual. Para o fazer, clique no botão "Start Lab" (Iniciar laboratório) na parte superior do ecrã.

Nota: para este laboratório, aceda à VM do Linux através do cliente SSH local e não utilize a Google Console (o botão Open GCP Console não está disponível para este laboratório).

Start Lab

Após clicar no botão "Start Lab" (Iniciar laboratório), verá todos os detalhes da ligação SSH no lado esquerdo do ecrã. Deve aparecer um ecrã parecido com o seguinte:

Detalhes da ligação

Aceder à máquina virtual

Encontre uma das três opções relevantes abaixo com base no sistema operativo do seu dispositivo.

Nota: trabalhar com a plataforma Qwiklabs pode ser semelhante ao trabalho que efetua como especialista do apoio técnico de TI. Vai utilizar uma tecnologia inovadora que requer vários passos para aceder e, talvez, uma boa dose de paciência e persistência. Também vai utilizar o SSH para entrar nos laboratórios, uma competência crítica no apoio técnico de TI que poderá praticar através dos laboratórios.

Opção 1 — Utilizadores do Windows: estabelecer ligação à VM

Nesta secção, vai utilizar o cliente PuTTY Secure Shell (SSH) e o endereço IP externo da sua VM para estabelecer ligação.

Transfira o seu ficheiro de chave PPK

Pode transferir o ficheiro de chave privada da VM no formato PPK compatível com o PuTTY a partir da página Start Lab (Iniciar laboratório) do Qwiklabs. Clique em Download PPK (Transferir PPK).

PPK

Estabeleça a ligação à sua VM através do SSH e do PuTTY

  1. Pode transferir o Putty a partir daqui.

  2. Na caixa Host Name (or IP address) (Nome do anfitrião [ou endereço IP]), introduza nome_de_utilizador@endereço_ip_externo.

Nota: substitua nome_de_utilizador e endereço_ip_externo pelos valores fornecidos no laboratório.

Putty_1

  1. Na lista Category (Categoria), expanda SSH.

  2. Clique em Auth (Autenticação) (não expanda).

  3. Na caixa Private key file for authentication (Ficheiro de chave privada para autenticação), navegue até ao ficheiro PPK que transferiu e clique duas vezes no mesmo.

  4. Clique no botão Open (Abrir).

Nota: o ficheiro PPK tem de ser importado para a ferramenta PuTTY através da opção "Browse" (Procurar) disponível na mesma. Não deve ser aberto diretamente, mas apenas utilizado no PuTTY.

Putty_2

  1. Clique em Yes (Sim) quando for solicitada a autorização de uma primeira ligação a este servidor SSH remoto. Uma vez que está a utilizar um par de chaves para a autenticação, não lhe será solicitada uma palavra-passe.

Problemas comuns

Se o PuTTY não conseguir estabelecer ligação à sua VM do Linux, verifique se:

  • Introduziu <nome de utilizador>@<endereço ip externo> no PuTTY.

  • Transferiu o novo ficheiro PPK para este laboratório a partir do Qwiklabs.

  • Está a utilizar o ficheiro PPK transferido no PuTTY.

Opção 2 — Utilizadores do OSX e Linux: estabelecer ligação à VM através do SSH

Transfira o ficheiro de chave privada da VM.

Pode transferir o ficheiro de chave privada no formato PEM a partir da página Start Lab (Iniciar laboratório) do Qwiklabs. Clique em Download PEM (Transferir PEM).

PEM

Estabeleça ligação à VM através da aplicação Terminal local

Um terminal é um programa que fornece uma interface baseada em texto para escrever comandos. Aqui, vai utilizar o seu terminal como um cliente SSH para estabelecer ligação à VM do Linux fornecida pelo laboratório.

  1. Abra a aplicação Terminal.

    • Para abrir o terminal no Linux utilize a tecla de atalho Ctrl + Alt + t.

    • Para abrir o terminal no Mac (OSX) utilize cmd + espaço e pesquise terminal.

  2. Introduza os seguintes comandos.

Nota: substitua o caminho/nome do ficheiro PEM que transferiu, nome de utilizador e endereço IP externo.

É muito provável que encontre o ficheiro PEM em Downloads (Transferências). Se não tiver alterado as definições de transferência do seu sistema, o caminho da chave PEM é ~/Downloads/qwikLABS-XXXXX.pem

chmod 600 ~/Downloads/qwikLABS-XXXXX.pem
ssh -i ~/Downloads/qwikLABS-XXXXX.pem nome de utilizador@endereço IP externo

SSH

Opção 3 — Utilizadores do Chrome OS: estabelecer ligação à VM através do SSH

Nota: certifique-se de que não está no Modo de navegação anónima/privada ao iniciar a aplicação.

Transfira o ficheiro de chave privada da VM.

Pode transferir o ficheiro de chave privada no formato PEM a partir da página Start Lab (Iniciar laboratório) do Qwiklabs. Clique em Download PEM (Transferir PEM).

PEM

Estabeleça ligação à sua VM

  1. Adicione o Secure Shell a partir daqui ao seu navegador Chrome.

  2. Abra a app Secure Shell e clique em [New Connection] (Nova ligação).

    new-connection-button

  3. Na secção username (nome de utilizador), introduza o nome de utilizador fornecido no Connection Details Panel (Painel de detalhes da ligação) do laboratório. Na secção hostname (nome do anfitrião), introduza o IP externo da sua instância de VM mencionado no Connection Details Panel (Painel de detalhes da ligação) do laboratório.

    username-hostname-fields

  4. Na secção Identity (Identidade), importe a chave PEM transferida ao clicar no botão Import… (Importar…) ao lado do campo. Escolha a sua chave PEM e clique no botão OPEN (ABRIR).

Nota: se a chave ainda não estiver disponível após a importação, atualize a aplicação e selecione-a a partir do menu pendente Identity (Identidade).
  1. Após o carregamento da sua chave, clique no botão [ENTER] Connect (Ligar) abaixo.

    import-button

  2. Se receber alguma mensagem, escreva yes (sim) para continuar.

  3. Agora, a ligação à sua VM do Linux foi estabelecida com êxito.

Já pode continuar com o laboratório!

Utilizar o tcpdump

Agora, vai executar algumas tarefas com o tcpdump, a começar por uma utilização básica, para depois evoluir para tópicos ligeiramente mais avançados.

Utilização básica

Vamos iniciar com a apresentação do tcpdump e a sua execução sem quaisquer opções. Tenha em atenção que o tcpdump requer privilégios de administrador ou raiz para capturar tráfego, pelo que todos os comandos têm de começar por sudo. No mínimo, tem de especificar uma interface para deteção com a sinalização -i. Pode ser útil verificar qual o nome da interface de rede principal através do ip link. Neste caso, vamos utilizar a interface ens4 para todos os exemplos. No entanto, esta não é, necessariamente, a interface que utilizaria na sua máquina.

Para utilizar o tcpdump para começar a detetar pacotes na interface, introduza o comando abaixo.

Atenção: este comando vai preencher o terminal com um fluxo de texto constante à medida que são lidos novos pacotes. Só para quando premir Ctrl+C.

sudo tcpdump -i ens4

Este comando emitirá algumas informações básicas sobre os pacotes detetados diretamente para padronização. Este processo continuará até ordenarmos a sua paragem. Prima Ctrl+C para parar o fluxo em qualquer altura.

Como pode ver, depois de o tcpdump sair, é impresso um resumo da captura efetuada com o número de pacotes capturados, filtrados ou ignorados:

e62459231285086a.png

Por predefinição, o tcpdump realizará algumas análises básicas do protocolo. Para ativar análises mais detalhadas, utilize a sinalização -v para obter um resultado com mais verbosidade. Por predefinição, o tcpdump tentará ainda realizar procuras de DNS inversas para resolver endereços IP para nomes de anfitrião e substituir os números das portas por nomes de serviços associados comuns. Pode desativar este comportamento com a sinalização -n. Recomenda-se a utilização desta sinalização para evitar gerar tráfego adicional a partir das procuras de DNS e acelerar a análise. Para experimentar isto, introduza o comando:

Atenção: este comando vai preencher o terminal com um fluxo de texto constante à medida que são lidos novos pacotes. Só para quando premir Ctrl+C.

sudo tcpdump -i ens4 -vn

Pode ver como o resultado apresenta agora mais detalhes para cada pacote:

e74637cc70c05cc3.png

Sem a sinalização de verbosidade, o tcpdump apresenta apenas:

  • O protocolo da camada 3, as portas e os endereços de origem e destino.
  • Detalhes de TCP, como sinalizações, números de sequência e confirmação, tamanho da janela e opções.

Com a sinalização de verbosidade, é possível obter também todos os detalhes do cabeçalho IP, como tempo de vida, número ID do IP, opções IP e sinalizações IP.

Filtragem

Em seguida, vamos explorar um pouco a linguagem de filtragem do tcpdump, juntamente com a análise do protocolo. O tcpdump suporta uma linguagem avançada de filtragem de pacotes para que possa capturar apenas o tráfego que lhe interessa ou que pretende analisar. As regras de filtragem aplicam-se mesmo até ao fim do comando, depois de especificadas todas as outras sinalizações. Vamos utilizar a filtragem para capturar apenas tráfego DNS para um servidor DNS específico. Em seguida, vamos gerar algum tráfego DNS para podermos demonstrar a capacidade do tcpdump na interpretação de consultas DNS e respostas.

Introduza agora o comando. A execução dura até que a pare com Ctrl+C, à semelhança do comando anterior, mas ainda não deve conseguir ver nenhum resultado.

sudo tcpdump -i ens4 -vn host 8.8.8.8 and port 53

Vamos analisar a forma como este filtro está construído e o que está a fazer exatamente. Host 8.8.8.8 indica que apenas pretendemos pacotes em que o endereço IP de origem ou destino corresponde ao especificado (neste caso, 8.8.8.8). Se pretendermos apenas tráfego num sentido, poderemos adicionar um qualificador de direção, como dst ou src (para endereços IP de destino e origem, respetivamente). No entanto, a não inclusão do qualificador de direção corresponde a tráfego em ambos os sentidos.

Em seguida, a parte port 53 significa que apenas pretendemos ver pacotes em que a porta de origem ou destino corresponde à especificada (neste caso, DNS). Estes dois elementos de filtragem encontram-se ligados pelo operador lógico "and". Isto significa que os dois elementos de filtragem têm de ser verdadeiros para um pacote ser capturado pelo nosso filtro.

Agora, vamos continuar e fazer a ligação ao segundo terminal de acordo com as instruções fornecidas na secção Accessing the virtual machine (Aceder à máquina virtual). Clique em Accessing the virtual machine (Aceder à máquina virtual) no painel de navegação do lado direito e execute este comando:

dig @8.8.8.8 A example.com

Deverá ver este resultado no ecrã:

e5f29bb1a837ebc6.png

Isto utiliza o utilitário dig para efetuar uma consulta num servidor DNS específico (neste caso, 8.8.8.8), solicitando o A record para o domínio especificado (neste caso, "example.com").

Voltemos ao terminal original, onde agora deverá ver dois pacotes capturados, uma vez que as nossas regras de filtragem deverão filtrar qualquer tráfego:

b6a4cefaba5b53ef.png

O primeiro é a consulta DNS, que corresponde ao envio da nossa pergunta (do segundo terminal) para o servidor. Repare que, neste caso, o tráfego é UDP. A análise que o tcpdump faz da consulta DNS começa imediatamente após o campo UDP checksum. Começa com o número ID de DNS, seguido de algumas opções UDP e do tipo de consulta (neste caso, A?, que significa que estamos a solicitar um A record). Em seguida, temos o nome do domínio que nos interessa em (example.com).

49bfc7a0a335ca52.png

O segundo pacote corresponde à resposta do servidor, que inclui o mesmo ID de DNS da consulta original, seguido da consulta original. Segue-se depois a resposta à consulta, que contém o endereço IP associado ao nome do domínio.

8df52ed65c9b5f66.png

Pode parar a sessão do tcpdump no terminal original agora ao premir Ctrl+C. Certifique-se de que deixa a janela do segundo terminal aberta. Vamos voltar a precisar dela em breve.

Em seguida, vamos explorar a capacidade do tcpdump para escrever capturas de pacotes num ficheiro e depois voltar a lê-las a partir de um ficheiro.

Guardar pacotes capturados

Num dos seus terminais, execute este comando:

sudo tcpdump -i ens4 port 80 -w http.pcap

Este comando inicia uma captura na nossa interface ens4 que filtra apenas tráfego HTTP ao especificar a porta 80. A sinalização -w indica que pretendemos escrever os pacotes capturados num ficheiro denominado http.pcap. Tal como nas outras capturas, o comando será executado até que force a sua paragem com Ctrl+C.

Depois de executar o comando, volte ao segundo terminal, onde vai gerar algum tráfego http que será capturado no terminal original. Não pare ainda a captura que iniciou com o comando anterior. (Se o fez, pode reiniciá-la agora.)

Na janela do segundo terminal, execute este comando para gerar algum tráfego:

curl example.com

Este comando obtém o html de example.com e imprime-o no ecrã. Deverá assemelhar-se ao apresentado abaixo. (Tenha em atenção que apenas a primeira parte do resultado é apresentada aqui.)

d261699311c8cdba.png

Quando terminar, feche a janela do segundo terminal e regresse ao terminal original onde a captura está a ser executada. Pare a captura com Ctrl+C. Deverá ser apresentado um resumo do número de pacotes capturados:

aeacf2f21c2dea4f.png

Também deverá ter sido criado um ficheiro binário com os pacotes que acabámos de capturar, denominado http.pcap. Não tente imprimir o conteúdo deste ficheiro no ecrã. Como se trata de um ficheiro binário, o texto aparecerá distorcido e não o conseguirá ler.

6649a448a7faef33.png

Algures nesse ficheiro, há informações sobre os pacotes criados quando extraiu o html de example.com. Podemos agora ler o conteúdo deste ficheiro através do tcpdump com este comando:

tcpdump -r http.pcap -nv

5b2f12f38410cce2.png

Tenha em atenção que não precisamos de utilizar o sudo para ler pacotes a partir de um ficheiro. Tenha igualmente presente que o tcpdump escreve pacotes completos no ficheiro e não apenas o texto da análise que é impresso no ecrã quando está a funcionar normalmente. Por exemplo, algures no resultado, deverá ver o html que foi devolvido como o corpo da consulta original no outro terminal:

6d7bb5d7e908c6e.png

Clique em Check my progress (Verificar o meu progresso) para ver o objetivo.

Escrever pacotes num ficheiro

Conclusão

Parabéns! Utilizou com êxito o tcpdump para monitorização básica da rede, incluindo a filtragem de tráfego específico. Aprendeu ainda a interpretar as informações que o tcpdump apresenta sobre um pacote, a guardar e a carregar resumos dos pacotes capturados durante uma sessão.

Termine o seu laboratório

Quando tiver concluído o seu laboratório, clique em End Lab (Terminar laboratório). O Qwiklabs remove os recursos que utilizou e limpa a conta por si.

Tem a oportunidade de classificar a experiência do laboratório. Selecione o número aplicável de estrelas, escreva um comentário e, em seguida, clique em Submit (Enviar).

O número de estrelas indica o seguinte:

  • 1 estrela = Muito insatisfeito
  • 2 estrelas = Insatisfeito
  • 3 estrelas = Neutro
  • 4 estrelas = Satisfeito
  • 5 estrelas = Muito satisfeito

Pode fechar a caixa de diálogo se não pretender fornecer feedback.

Para feedback, sugestões ou correções, utilize o separador Support (Apoio técnico).