Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao Analisador de Protocolos Wireshark 1. Instalação A instalação da GUI (Graphics User Interface) do wireshark no Ubuntu é realizada através do seguinte comando: sudo apt-get install wireshark A instalação da CLI (command-line interface) do wireshark, é feita através do comando abaixo: sudo apt-get install tshark 1.1 Executando o wireshark No terminal digite: sudo wireshark 2. GUI (Graphics User Interface) O interface gráfica do wireshark é dividida em 5 partes: 1) Menu de comandos e barra de ferramentas: O menu de comandos é localizado no topo da janela, os ícones dispostos na barra são as ações mais utilizadas, entre elas: escolher interface, opções de captura, iniciar uma captura, parar e reiniciar captura, abrir um arquivo salvo, salvar captura atual, impressão e busca. Menu File: ações básicas de abrir um arquivo de captura, salvar, exportar para os formatos suportados pelo wireshark. Menu Edit: marcação de pacotes, avanço, busca, e alterações na configuração do wireshark. Menu View: painéis e menus que podem ser visualizados e ocultados, configuração do tempo relativo, a adição de colunas no painel de pacotes capturados e definir as cores por protocolos capturados. Menu Analyze: Filtros, e protocolos que podem ser utilizados tanto na captura quando na visualização. Menu Capture: Lista as interface disponíveis para captura, opções de captura, iniciar, parar, reiniciar e filtros de captura. Menu Statistics: Estatísticas por protocolo, pacotes capturados, médias, filtro por tamanho do pacote, gráficos, contadores de pacotes, gráficos de fluxo, etc. Menu Telephony: voltado para os protocolos utilizados em voz sobre ip, estatísticas, streams, contadores, e qualidade da chamada. Menu Tools: ferramentas para criar regras de filtro de pacotes ( pf, iptables, pf, ipfw, etc..) Menu Internals: protocolos e todos os filtros suportados pelo wireshark. Menu Help: ajuda online, exemplos de capturas, e versão da ferramenta. 2) Filtros: A aba filtro é responsável por receber os filtros disponíveis para o wireshark. Existem diversos filtros e estes podem ser conhecidos no site oficial do wireshark ordenados por protocolos. Nesta aba é inserido os filtros e estes aplicados no painel de pacotes visualizados. Display Filter Reference: http://www.wireshark.org/docs/dfref/ Exemplos: http://wiki.wireshark.org/DisplayFilters 3) Painel pacotes capturados: Neste painel é apresentado um resumo em uma linha para cada pacote capturado. As colunas contém o número do pacote, tempo relativo, origem e destino do pacote, protocolo do pacote, tamanho e informações gerais do pacote. Estas colunas podem ser personalizadas. 4) Painel detalhes do pacote: Mostra os detalhes dos pacotes selecionados no painel pacotes capturados de forma hierárquica. A quantidade de informações exibidas é relacionada com o protocolo selecionado. Caso seja um pacote TCP ou UDP detalhes destes são apresentados. 5) Painel visão em bytes do pacote Mostra o frame inteiro capturado nos formatos ASCII ou hexadecimal. 3. Capturando Menu Capture , clique em Interfaces. (CTRL+I) Selecione a(s) interface(s) que deseja capturar. Em Options (CTRL+K) algumas opções como, modo promíscuo, resolver nomes, salvar em múltiplos arquivos. Após as configurações, clique em Start (CTRL+E) para iniciar a captura. Caso exista algum pacote chegando ou saindo pela interface selecionada, estes são ilustrados no painel de pacotes capturados. 4. Salvando, Importando, Exportando Para salvar uma captura realizada é necessário interromper a captura, clicando no ícone na barra de ferramentas ou no menu Capture em Stop (CTRL+E) . Dica: Caso o arquivo contenha um período de análise muito grande, pode ser viável marcar a opção de compressão do arquivo, na janela salvar (Compress with gzip). Para abrir um arquivo salvo, basta clicar no menu File, em Open e apontar para o arquivo salvo. A exportação pode ser realizada para os formatos: texto plano, CSV, PostScript, XML e Array C. A opção exportar pode ser realizada para todos os pacotes capturados, somente os selecionados, ou então para um determinado intervalo de pacotes. 5. Filtros No site do wireshark ( http://www.wireshark.org/docs/dfref/ ) existe a documentação online de todos os filtros suportados na ferramenta. Com a adição de novos protocolos, novos filtros são inseridos. Segue a relação de alguns operadores lógicos que podem ser utilizados junto aos filtros conhecidos: Operadores eq == Igual ne != Diferente gt > Maior lt < Menor ge >= Maior ou Igual le <= Menor ou Igual Lógicos and && Lógico AND or || Lógico OR xor ^^ Logico XOR not ! Logico NOT Exemplos: eth.dst eq ff:ff:ff:ff:ff:ff eth.src == ff:ff:ff:ff:ff:ff ip.addr == 192.168.1.10 ip.dst == 200.199.229.66 http.host == "www.uol.com.br" http.host eq "www.uol.com.br" tcp.port == 80 and ip.src == 192.168.1.1 tcp.port eq 80 && ip.src eq 192.168.1.1 not ip or ip.dst ne 192.168.1.1 !ip || ip.dst != 192.168.1.1 Fonte: http://www.wireshark.org/docs/man-pages/wireshark-filter.html Adicionando colunas Clicar no menu Edit → Preferences (shift+ctrl+P). Clique em Columns. 1) Portas de origem e destino não resolvidas para o nome do serviço: Adicionar uma nova coluna e escolher a opção src port (unresolved). Adicionar uma nova coluna e escolher a opção dst port (unresolved). 2) Adicionar a soma acumulativa dos pacotes filtrados. Adicionar uma nova coluna e escolher a opção Cumulative Bytes 3) Adicionar a diferença entre a marcação de tempo do pacote atual e o anterior capturado. Adicionar uma nova coluna e escolher em field type escolher a opção custom e em field name adicionar frame.time_delta 4) Para adicionar a diferença entre os pacotes visualizados e não capturados use a field frame.time_delta_displayed 5) icmp.type mostra o tipo de pacote icmp 8 = echo request e 0 = echo reply 6. Gráficos Menu statistics - > Protocol Hierarchy Mostra de forma hierárquica a cadeia de protocolos capturados, bem como a quantidade, porcentagem e taxa de transferência. Usado para conhecer a proporção de protocolos na captura. Menu statistics - > Endpoints Mostra estatísticas de pacotes capturados entre todos os endereços envolvidos. Mostra por protocolos, sentido da comunicação. Menu Statistics - > Packet Lenghts ( Tamanho dos Pacotes ) Mostra a quantidade de pacotes por intervalo de tamanhos em bytes Menu Statistics - > IO Graphs Permite criar gráficos dos pacotes capturados. É possível aplicar os mesmos filtros de visualização do wireshark. Os gráficos podem ser exportados para formatos png, jpeg, bmp. Limite de 5 filtros. Menu Statistics - > Flow Graph ( gráfico de fluxo ) Mostra o fluxo das conexões entre os hosts envolvidos. 7. Praticando Protocolo HTTP Protocolo utilizado na World Wide Web (www) para distribuição e recuperação da informação. A forma de conversação no estilo pedido-resposta entre o cliente (browser) e o servidor (apache, tomcat, etc) Usa o protocolo TCP para transporte. Toda conversação entre cliente e servidor é realizada em texto plano (ASCII) através de comandos simples. Através de métodos os objetos podem ser acessados. GET, POST são os mais utilizados. GET Solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. POST Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. Filtra tráfego http: httpFiltra os dados recebidos http.content_type Filtra todas requisições do método GET http.request.method==GET Filtra respostas de páginas não encontradas http.response.code == 404 Fonte: http://www.wireshark.org/docs/dfref/h/http.html Protocolo ICMP ICMP é utilizado para verificar se um host está ativo ou não. Um pacote ICMP não contém porta de origem nem porta de destino porque foi projetado para comunicação entre hosts e roteadores diretamente na camada de rede. Cada pacote ICMP tem um tipo e código. As combinações especificam a mensagem a ser recebida. 1) Inicie a captura no wireshark 2) Abra um terminal do linux e digite: ping -c 4 www.google.com.br 3) Pare a captura e vamos filtrar os pacotes do tipo ICMP, digitando no filtro "icmp" 4) Analise os pacote e encontre os valores do tempo de resposta encontrado pelo aplicativo ping. Resposta: o tempo de resposta é uma informação contida no pacote do tipo echo reply. Filtro: icmp.type == 0 Campo Response Time(icmp.resptime) CLI ( Command Line Interface ) 1. Interfaces 1.1 Listando as interfaces de captura tshark -D 1. 1. eth0 2. 2. wlan0 3. 3. nflog (Linux netfilter log (NFLOG) interface) 4. 4. any (Pseudo-device that captures on all interfaces) 5. 5. lo Podemos utilizar o nome da interface ou o número associado a ela. 1.2 Selecionando a(s) interface(s) de captura tshark -i eth0 tshark -i eth0 -i wlan0 tshark -i 2 1.3 Desabilitar o modo promíscuo da interface tshark -p 2. Arquivos 2.1 Lendo um arquivo de captura tshark -r /tmp/arquivo 2.2 Salvando em um arquivo de captura tshark -w /tmp/arquivo obs: o arquivo deve existir. 2.3 Salvando em arquivos definindo tempo(segundos) e tamanho(kilobytes) da captura. tshark -a duration:60 -w arquivo.pcap tshark -a filesize:1024 -w arquivo.pcap 2.3 Salvando em um arquivo uma captura de X pacotes. tshark -c 1000 -w arquivo.pcap 2.4 Exportando tshark -T pdml onde: pdml = Exporta os detalhes do pacote capturados em formato XML. psml = Exporta as informações da janela de pacotes capturados em formato XML. text = Exporta em texto plano as informações básicas. fields = Exporta as colunas especificadas. tshark -T fields -e frame.number onde: frame.number = número do frame frame.time_relative = tempo relativo do pacote frame.time_delta = (frame atual – frame anterior , capturado . frame.time_delta_displayed = frame atual – frame anterior , mostrado no filtro/display. frame.len = tamanho do pacote em bytes ip.src = endereço ip de origem ip.dst = endereço ip de destino Imprime o cabeçalho da coluna tshark -E header=y Define um caracter separador entre as colunas tshark -E separator=';' onde: /s = espaço /t = tabulação 3. Conteúdo dos Pacotes 3.1 Oculta os pacotes capturados na tela. tshark -q 3.2 Mostra detalhes dos pacotes tshark -V 4. Tempo de captura 4.1 Ajustando o timestamp dos pacotes tshark -t ad onde: ad = Data e tempo absoluto da captura do pacote a = Somente tempo absoluto da captura do pacote r = Tempo relativo decorrido desde o primeiro pacote ( opção default) d= Tempo transcorrido desde que o pacote anterior foi capturado dd = Tempo transcorrido desde que o pacote anterior foi apresentado na tela e = Diferença de tempo entre a data atual e a data 01 de janeiro de 1970 00:00:00 5. Filtros 5.1 Filtro de captura usando a sintaxe da libpcap Dica: otimiza a captura, pois o que não satisfazer a condição do filtro não é capturado e processado. Fonte: http://wiki.wireshark.org/CaptureFilters#CaptureFilters-1 tshark -f "filtro" exemplos: Captura qualquer pacotes udp que use a porta 53 1. tshark -f "udp port 53" Captura qualquer pacote com o ip 192.168.1.1 tanto na origem como destino 1. tshark -f "host 192.168.1.1" Captura qualquer pacote que o endereço de origem ou destino esteja na rede 192.168.0 1. tshark -f "net 192.168.0.0/24" Captura pacotes com origem o endereço de rede especificado 1. tshark -f "src net 192.168.0.0/24" 5.2 Filtro de Leitura/Display usando a sintaxe do wireshark Fonte: http://www.wireshark.org/docs/dfref/ tshark -R "filtro" -r arquivo.pcap exemplos: Filtra pacotes UDP 1. tshark -R "udp" -r arquivo.pcap Filtra pacotes HTTP 1. tshark -R "http" Filtra respostas HTTP 404 (página não encontrada) 1. tshark -R "http.response.code == 404" Filtra respostas HTTP 200 (página encontrada) 1. tshark -R "http.response.code == 200" Filtra metodos HTTP (POST e GET) 1. tshark -R "http.request.method == "POST" || http.request.method == "GET" " Referências Bibliográficas [1] http://penta2.ufrgs.br/gere96/testador/camadas.htm [2] http://www.slideshare.net/jmmadruga/analisadores-de-protocolo-comparao-e-uso [3] http://www.wireshark.org/docs/man-pages/wireshark-filter.html 1. Instalação 1.1 Executando o wireshark 2. GUI (Graphics User Interface) 3. Capturando 4. Salvando, Importando, Exportando 5. Filtros 6. Gráficos 7. Praticando CLI ( Command Line Interface ) Referências Bibliográficas
Compartilhar