Checkpoints
Writing packets to a file
/ 100
Apresentação do tcpdump
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ã.
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:
Aceder à máquina virtual
Encontre uma das três opções relevantes abaixo com base no sistema operativo do seu dispositivo.
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).
Estabeleça a ligação à sua VM através do SSH e do PuTTY
-
Pode transferir o Putty a partir daqui.
-
Na caixa Host Name (or IP address) (Nome do anfitrião [ou endereço IP]), introduza nome_de_utilizador@endereço_ip_externo.
-
Na lista Category (Categoria), expanda SSH.
-
Clique em Auth (Autenticação) (não expanda).
-
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.
-
Clique no botão Open (Abrir).
- 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).
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.
-
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.
-
-
Introduza os seguintes comandos.
É 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
Opção 3 — Utilizadores do Chrome OS: 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).
Estabeleça ligação à sua VM
-
Adicione o Secure Shell a partir daqui ao seu navegador Chrome.
-
Abra a app Secure Shell e clique em [New Connection] (Nova ligação).
-
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.
-
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).
-
Após o carregamento da sua chave, clique no botão [ENTER] Connect (Ligar) abaixo.
-
Se receber alguma mensagem, escreva yes (sim) para continuar.
-
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:
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:
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ã:
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:
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
).
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.
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.)
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:
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.
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
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:
Clique em Check my progress (Verificar o meu progresso) para ver o objetivo.
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).