Wireshark tutorial
O Wireshark, antigamente chamado Ethereal, é um programa que analisa o tráfego de rede, organizando-o através de protocolos. Registrado pela GNU General Public License (GPL), suporta as plataformas Unix, Linux, Solaris, FreeBSB, NetBSD, OpenBSD, Mac OS X e Windows. A imagem a seguir, mostra a janela principal do aplicativo wireshark, que servirá de base para uma breve descrição dos passos a seguir, afim de se inicializar uma captura de pacotes..
Fonte: http://carlosrodrigues.it/whitepaper.html Primeiramente deve-se selecionar o interface onde se pretende capturar pacotes, podemos ver que na janela em cima no menu temos capture, podemos selecionar ela e selecionar em seguida interfaces, como demonstra a figura em baixo:
Ou então podemos selecionar logo na janela principal, onde diz interfaces list a placa em questão.
Independente de onde clicamos vamos para a janela abaixo, porém se na janela principal clicarmos logo no link que dá acesso direto à interface, passamos logo para a janela de captura de pacotes.
Aqui nesta janela temos várias opções, ou iniciamos a captura imediatamente, ou selecionamos opções, que nos leva para uma janela detalhada de gestão de caracterísiticas do próprio interface como podemos visualizar em capture options, das mais interessantes, fazemos referência a interface, como podemos entender a captura pode ser em um IP address da nossa rede local, ou seja o próprio Interface (Network Interface Card), ou protagonizarmos uma captura remota, onde temos de colocar vários dados respeitantes à ligação que pretendemos monitorar.
Como este tutorial é introdutório, não vamos passar a esse mérito de explicação, mas no próximo tutorial, de intermediário a médio vamos dar umas pistas e algumas ideias de como será possível realizar essa captura, para já vamos continuar a detalhar os aspectos mais importantes de janela Capture Options. Outro aspecto importante é o modo promíscuo do wireshark, que segundo o wiki do wireshark em no endereço, http://wiki.wireshark.org/CaptureSetup/Ethernet?highlight=%28promiscuous%29 nos diz:
“Se você está tentando capturar o tráfego de rede que não está sendo enviado para ou a partir da máquina que está executando Wireshark ou tshark, ou seja, o tráfego entre duas ou mais máquinas em um segmento Ethernet, você terá que capturar em "modo promíscuo", e, por uma rede Ethernet comutada, você terá que configurar a máquina especialmente para capturar o tráfego. Wireshark
Iremos detalhar esta questão mais à frente, para já vamos terminar de observar a janela em baixo, sendo assim, os check box da opções de vista (Display Options), recomenda-se que estejam de facto todos selecionados pois ajudam bastante não só a atualizar a lista em tempo real, mas também a tornar possível a análise de tráfego sem ser necessário a intervenção por manual, por parte do usuário, pois a janela de captura é automaticamente deslizada para baixo à medida que o tráfego é recebida pela interface.
Por último, o quadro de resolução de nomes (Name Resolution), pode de uma forma geral segundo o documento em baixo, ogirinar lentidão na rede, segundo o site oficial em: http://www.wireshark.org/docs/wsug_html_chunked/ChAdvNameResolutionSection.html O wireshark nos informa que,
“Ativando a resolução de nome de rede quando o servidor DNS não está disponível pode desacelerar significativamente o Wireshark enquanto aguarda todas as solicitações do servidor DNS expirarem. Use DNS concorrente nesse caso.” Wireshark
Como tal, a resolução de nomes deve mesmo ficar desactivado, para melhor performance do aplicativo, apenas active se estritamente necessário. Repare que as outras 2 resoluções de nomes (MAC e portas TCP/UDP), só são utilizadas para facilitar a leitura do usuário final, mas caso não necessite pode desligar elas também, para acelerar a captura.
Dicas de autor: Ao tentar determinar como gerenciar o tráfego da rede , é importante compreender o tipo de protocolos que está a atravessar a rede, bem como o fluxo de tráfego atual. Se os tipos de tráfego são desconhecidos , um sniffer pode ser usado para capturar o tráfego para análise . -------------//-------------
Para determinar os padrões de fluxo de tráfego , é importante ter em mente os seguintes pontos:
•
Capturar o tráfego durante os horários de pico de utilização para obter uma boa representação dos diferentes tipos de tráfego (Baseline) .
•
Realizar a captura em diferentes segmentos de rede, porque alguns tipos de tráfego vão ser locais apenas para esse mesmo segmento, sendo que outros não.
Usando as informações obtidas a partir do packet sniffer, engenheiros e técnicos de rede podem determinar os fluxos de tráfego com exatidão. Administradores analisam essas informações com base na origem e destino do tráfego (IP address / Port Number), bem como o tipo de tráfego a ser enviado. Esta análise pode ser usada para tomar decisões sobre a forma de gerenciar o tráfego de forma mais eficiente. Isto pode ser conseguido através da redução dos fluxos de tráfego desnecessários ou alterar os padrões de fluxo completamente movendo para outro segmento um servidor, ou isolando da rede temporariamente . Às vezes, basta simplesmente realocar um servidor ou serviço para outro segmento de rede, para melhorar o desempenho da rede, como um todo. Outras vezes, otimizando o desempenho da rede requer grande reformulação e intervenção, segmentação diferenciada da rede, utilização de QoS na rede Local com a utilização de técnicas IEEE 802.1p (Priority Queueing). Vale a pena ressaltar que a qualidade de serviço QoS é um serviço fim-a-fim, que significando o caminho completo da origem ao destino do pacote, sendo esta tecnologia mais abordada em redes WAN (Wide Area Network) comum em redes de longa distância como o as tecnologias ATM ou MPLS. Para redes LAN os switch´s têm que suportar a técnica 802.1p para ser possível prioritizar o tráfego de rede interna.
Dicas de autor: Stealth Mode Para realizar uma análise de rede discreta, é necessário desligar a resolução de nomes de rede para parar o wireshark de enviar consultas de DNS inversa, a ideia é não necessitar de resolver nenhum nome ou endereço na rede, apenas escutar a rede silenciosamente -------------//------------Para terminar esta parte, vamos verificar mais alguns conceitos de referentes ao modo promíscuo.
Ethernet Shared Nos velhos tempos, as redes Ethernet foram redes compartilhadas, usando a media ou hubs compartilhados para conectar os nós Ethernet em conjuntos, ou seja, todos os pacotes podem ser recebidos por todos os nós na rede. Portanto, se um adaptador Ethernet em uma rede deste tipo é colocado em modo promíscuo, todos os pacotes na rede seram visto por esse adaptador e, portanto, podem ser capturadas com esse adaptador.
Fonte: http://wiki.wireshark.org/CaptureSetup/Ethernet?highlight=%28promiscuous%29 O hub, foi aos poucos retirados das redes de computadores locais, precisamente por este excesso de pacotes Broadcast, e por as colisões de dominio, no entanto para análise de redes, era muito mais fácil conectar um computador na rede e escutar ativamente todo o tráfego sem ter que configurar mais nada na rede. Hoje em dia, as redes compartilhadas estão se tornando popular de novo, as WLAN´s estão usando esta técnica, por este mesmo facto a insegurança em se navegar nelas, em ambientes de “hot spot”, como por exemplo aeroportos ou cafés de acesso livre à internet, sem nenhuma protecção no micro, ou técnicas de segurança da informação, este tópico é tão abrangente que
seria necessário mais de uma centena de tutorias para o podermos descrever correctamente, agora você leitor que é um técnico de TI deve ter uma ideia pelo menos do que estamos a falar.
Switched Ethernet
Hoje, uma rede Ethernet típica vai usar switches para conectar todos os nós Ethernet. Isto pode aumentar muito o desempenho da rede, mas torna a vida muito mais difícil aos administradores de rede quando a captura de pacotes. Um switch Ethernet vai fazer uma coisa semelhante ao hardware do adaptador Ethernet mencionado acima, mas dentro do switch. Pode-se inferir, a partir de tráfego visto em uma porta do switch, o endereço ou endereços Unicast são usadas pelo adaptador conectado a essa porta, e irá encaminhar a essa porta apenas o tráfego unicast enviado para esse endereço ou endereços , bem como os pacotes Multicast e Broadcast da rede. Logo como os pacotes unicast são enviadas apenas a cada interface ou porta do switch, o adaptador não terá acesso a nenhum outro pacote que não seja destinado a ele , assim, colocar o adaptador em modo promíscuo não vai fazer você ver os pacotes , mesmo se você capturar o tráfego em modo promíscuo. Outras técnicas têm que ser utilizadas para este fim.
Fonte: http://wiki.wireshark.org/CaptureSetup/Ethernet?highlight=%28promiscuous%29
Embora este seja um tópico para abordar em outros tutoriais mais avançados vamos apenas falar brevemente de um que normalmente é utilizado por “Black Hackers” ou “crackers”, quando pretendem envenenar o tráfego de uma rede, para tirar vantagem do protocolo ARP (Address Resolution Protocol).
MAC Flooding
Switchs mantem por padrão uma tabela de conversão que mapeia vários endereços MAC às portas físicas do switch, conhecido como “ARP Table”. Como resultado disso, um switch pode inteligentemente rotear pacotes de um host para outro, pórem ele tem uma memória limitada para este trabalho. MAC flooding faz uso dessa limitação para “bombardear” o switch com endereços MAC falsos até que o interruptor não possa mais o manter. Neste caso o switch, entra no que é conhecido como em “modo failopen”', em que ele começa a agir como um hub, transmitindo pacotes para todas as máquinas na rede. Quando isso acontece o “sniffing” pode ser realizada facilmente. Esta técnica pode ser realizada através da utilização do programa macof, um utilitário que vem com a suíte dsniff.
Fonte: http://wiki.wireshark.org/CaptureSetup/Ethernet?highlight=%28promiscuous%29
Dicas de autor:
Pode baixar e instalar o dsniff na sua rede de testes, nunca deve utilizar este tipo de aplicativos em uma rede de produção ou real, utilize sempre da ética e boas práticas, para realizar os seus testes. Site: http://www.monkey.org/~dugsong/dsniff/ -------------//-------------
Agora que tivemos uma abordagem sumarizada de como podemos capturar um aplicativo e de como uma rede funciona, vamos analisar o tráfego capturado pelo wireshark de forma básica.
Primeiramente depois de iniciarmos a captura
, é necessário a pararmos, podemos fazer
isso clicando no icone de tem uma interface com um X redondo .
De seguida como temos várias centenas de pacotes a trafegar na nossa rede, é necessário filtrar por porta, ip, etc.. afim de podermos analisar o que pretendemos em concreto. Para este fim, devemos clicar em no icone de filtro
e começar a filtragem pretendida.
Podemos também filtrar direto na janela onde diz “filter”, como podemos ver na imagem em baixo:
Como exemplo vamos filtrar as portas de uma consulta GET a um servidor de HTTP que responde na porta padrão TCP 80 através do nome ip local 172.16.0.5.
O interessante do wireshark é que você na janela do meio pode analisar a pilha de protocolos TCP/IP de uma forma bem clara e objectiva, como pode ver a análise começa no nível físico, passando pelo enlace, rede, transmissão e por último aplicação. Todos as 5 camadas da pilha de protocolos TCP/IP são analisados bit pot bit, isto dá um poder incrível a um administrador de redes, pois ele consegue ter a ideia completa do que a rede está a transmitir a cada fracção de segundo. Como as transmissões podem ser de milhares de pacotes por segundo é necessário ter um mecanismo de observação mais eficaz, para tal introduzimos a próxima dica do nosso tutorial.
Dicas de autor: O protocolo TCP (Transport Control Protocol), como é “connection-oriented”, ou orientado a conexão utiliza uma técnica vulgarmente conhecida como "three-way handshake" , que nada mais é do que o estabelecimento antecipamente de uma ligação com as flags "SYN, SYN/ACK, ACK." , antes de iniciar a transferência de uma mensagem (data) propriamente dita. Ápos o sucesso de estabelecimento com o “host” remoto ele pode trocar mensagens até uma flag “FIN” ser enviada pelo “host” de origem a informar que quer terminar aquela determinada ligação. Neste caso terminando uma ligação TCP de forma simétrica. -------------//-------------
Em baixo podemos ver como o Wireshark segue um determinado “Stream” de uma ligação TCP, apenas bastando clicar em cima de um determinado pacote TCP e selecionando “Follow TCP Stream”, como se pode visualizar em baixo..
A imagem seguinte é apresentada, desse mesmo segmento TCP, em que o trágefo do cliente está a vermelho e o tráfego do servidor está a azul.
Claro que poderiamos analisar pacote a pacote até chegarmos às informações de um determinado cabeçalho pretendido, mas desta forma fica bem mais fácil chegarmos aos resultados pretendidos. Se pretendemos criar um gráfico bem detalhado de da conversação entre cliente e servidor devemos selecionar “Statistics > Flow Graph..., selecionar TCP flow e clique em OK”, este caminho vai mostrar a imagem em baixo.
Dicas de autor:
Clique em cima de cada sequĂŞncia do strem TCP para ir direto no pacote que pode analisar no wireshark, com todos os promenores.
-------------//-------------
Para finalizar o tutorial vamos mostrar a ferramenta de linha de comando tshark, que pode ser bastante útil, se pensarmos que temos de administrar um servidor remoto por conexão de Telnet (ligação insegura) ou SSH (ligação segura), nestes dois casos como não podemos executar o aplicativo wireshark em formato GUI (Grafic User Interface), teremos de utilizar mesmo o modo CLI (Command Line Interface) para fazer a captura dos pacotes.
Mais importante e antes de começar você deve saber que número têm as interfaces que vai monitorar, para tal digita os comandos da imagem em baixo:
Dicas de autor:
Se reparar os mesmos dois interfaces estão numerados, isto porque o comando está a ser digitado na mesma máquina física que realizamos o tutorial, provavelmente se você digitar este comando em um servidor de produção que aloje vários serviços, várias placas vão se mostradas. -------------//-------------
Depois de saber os interfaces que estão em funcionamento no seu servidor e qual o número respectivo de cada um pode iniciar a captura de pacotes com o comando em baixo, para o efeito apenas fizemos a captura para 10 segundos, afim de apresentar os resultados.
Como pode entender a captura foi relativamente rápida e armazenada em um ficheiro com a extensão *.pcap, mas a captura poderia ter sido em tempo real, com o comando em baixo:
Depois de capturar os pacotes de seu servidor, pode por fim os analisar, com os comandos de filtro que já mostramos anteriormente, alguns dos filtros são mostrado em baixo:
Fonte: http://www.wireshark.org/docs/man-pages/tshark.html
Dicas de autor: Para exportar uma captura para formato CSV, de forma a poder trabalhar ou criar gráficos para apresentações utilize o seguinte comando:
-------------//-------------
Autor do artigo: Carlos M. S. Rodrigues (Graduado em Redes de Computadores e Especialista CISCO /CCNA e CCNA Security, CompTIA NETWORK + e SECURITY +, Microsoft MCP/MCTS e MCSA).
Fontes de artigo: http://www.carlosrodrigues.it/whitepaper.html http://www.wiresharktraining.com/ http://www.thetechfirm.com/wireshark/command_line_capture.pdf http://serverfault.com/questions/150167/how-do-i-convert-wireshark-capture-files-to-text-files http://www.wireshark.org/docs/man-pages/tshark.html http://wiki.wireshark.org/CaptureSetup/Ethernet?highlight=%28promiscuous%29 http://www.lovemytool.com/blog/2010/05/wireshark-and-tshark-decrypt-sample-capture-file-byjoke-snelders.html