BC1513 – Redes de Computadores Prof. João Henrique Kleinschmidt Aula Prática 3 – Wireshark – Protocolos HTTP-DNS-UDP O Wireshark é um analisador de protocolos (sniffer), distribuído gratuitamente, a partir do endereço http://www.wireshark.com. Ele pode ser executado em diversas plataformas, incluindo sistemas Unix e Windows. 1. Capturando pacotes Abra o Wireshark e ative a captura de pacotes (Menu CaptureInterfaces). Na opção “interface”, escolha a interface Ethernet. Identifique a interface Ethernet; em opções (Options) seleciona a opção “enable network name resolution”. Inicie a captura (pressionando em Start). Acesse a rede por alguns segundos (exemplo: acesse o site www.uol.com.br). Não é necessário muito tempo (basta acessar uma única página). Pare a captura de pacotes clicando no botão Stop da janela de captura. A interface do Wireshark é dividida em três partes. A primeira contém uma relação dos pacotes capturados, um por linha. Selecione um dos pacotes. A segunda contém informações sobre o pacote que está selecionado, onde cada linha contém um protocolo, na ordem em que eles são empilhados. Dentro de cada protocolo, são mostrados os campos do seu cabeçalho. A terceira parte contém os dados, ou seja, a carga útil (payload) do pacote, que será utilizada pela aplicação. A carga útil é apresentada no formato hexadecimal e o seu correspondente para ASCII. Selecione os vários pacotes e observe os seus campos e valores. Para os exercícios 2 e 3 (HTTP e DNS) utilize o Wireshark para capturar os pacotes. 2. HTTP 2.1 Interação básica HTTP Acesse a página http://gaia.cs.umass.edu/wireshark-labs/INTRO-wireshark-file1.html Aplique o filtro HTTP para ver apenas os pacotes do protocolo HTTP. Observe os pacotes capturados e identifique: Versão do HTTP do navegador e do servidor web acessado. Línguas que o navegador aceita. IP do seu computador e do servidor. Código de status retornado do servidor para o navegador. HTTP persistente ou não persistente. Última modificação do arquivo HTML do servidor. Número de bytes de conteúdo retornado ao navegador. Analise os dados (raw data) do pacote e descreva o que é possível observar. Repita os procedimentos para outro site web escolhido por você. 2.2 GET Condicional Limpe o cache do seu navegador. Acesse o site: http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html Verifique o conteúdo da primeira requisição GET. É possível ver “IF-MODIFIEDSINCE” no HTTP GET? Verifique a resposta do servidor. O servidor retorna o conteúdo do arquivo? Verifique a segunda requisição GET. É possível ver “IF-MODIFIED-SINCE” no HTTP GET? Explique. Verifique a resposta do servidor ao segundo GET. O servidor retorna o conteúdo do arquivo? Explique. Repita os procedimentos para outro site web escolhido por você. 2.3 HTML com objetos Acesse o site: http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html Quantas requisições HTTP GET foram feitas pelo navegador? Para qual endereço IP estas requisições foram feitas? Identifique se o navegador fez o download das imagens (objetos) de maneira serial ou paralela. Explique. Repita os procedimentos para outro site web escolhido por você. 2.4 Autenticação HTTP Acesse o site: http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTPwireshark-file5.html Nome de usuário: wireshark-students Senha: network Qual a resposta do servidor ao HTTP GET inicial do navegador? Na segunda mensagem GET do navegador, qual novo campo é incluído na mensagem GET? É possível visualizar o nome de usuário e senha no pacote capturado pelo wireshark? Discuta sobre a segurança desta autenticação HTTP. 3. DNS 3.1 Acesse o site www.ietf.org Localize as mensagens DNS. São enviadas sobre TCP ou UDP? Identifique a porta de destino da mensagem query DNS e a porta de origem da mensagem de resposta do DNS. Identifique o endereço IP para qual a mensagem de query do DNS foi enviada. Use ipconfig para determinar seu servidor DNS local. Estes dois endereços são iguais? Examine a resposta DNS. Quantas “respostas” foram dadas? Qual o conteúdo destas respostas? Considere o pacote TCP SYN subsequente enviado pelo navegador. O IP de destino do pacote TCP SYN corresponde ao endereço IP fornecido pela mensagem de resposta DNS? Esta página contém imagens. Antes de requisitar cada imagem, seu host faz novas queries DNS? 3.2 Usando nslookup A sintaxe do comando nslookup é: nslookup –option1 –option2 host-to-find dns-server Em geral, nslookup pode ser executado com zero, uma, duas ou mais opções. O servidor DNS também é opcional; se não for indicado, a query é enviada ao servidor DNS local. Execute o comando nslookup www.mit.edu (busca endereço IP de www.mit.edu) Identifique a porta de destino da mensagem query DNS e a porta de origem da mensagem de resposta do DNS. Identifique o endereço IP para qual a mensagem de query do DNS foi enviada. Use ipconfig para determinar seu servidor DNS local. Estes dois endereços são iguais? Examine a mensagem query DNS. Examine a resposta DNS. Quantas “respostas” foram dadas? Qual o conteúdo destas respostas? Repita o procedimento para buscar o IP de outro site da web. Execute o seguinte comando: nslookup redhat.com ns1.redhat.com Identifique o endereço IP para qual a mensagem de query do DNS foi enviada. Este endereço IP é o mesmo do seu servidor DNS local? Caso contrário, esse endereço IP corresponde a que servidor? Examine a mensagem query DNS. Examine a resposta DNS. Quantas “respostas” foram dadas? Qual o conteúdo destas respostas? É uma resposta autoritativa (authoritative) ou não autoritativa (non-authoritative)? Explique. 4. UDP Execute a aplicação socket UDP cliente/servidor em Java. Envie uma mensagem de um cliente para o servidor (em outra máquina do laboratório). Capture os pacotes enviados com o Wireshark. Selecione um pacote UDP. Quantos e quais são os campos do cabeçalho do pacote? O valor no campo length (comprimento) é o comprimento do que? Do cabeçalho, dados ou do pacote UDP inteiro? Qual o maior número possível de porta de origem no UDP? E destino? Qual é o número de protocolo para o UDP? (Para responder, você precisa verificar no cabeçalho IP). Examine um par de pacotes UDP em que o primeiro pacote é enviado pelo cliente e o segundo pacote é a resposta do servidor a este pacote. Descreva a relação entre os números de portas nos dois pacotes.