Pular para o conteúdo principal

wireshark

Wireshark Logo

Wireshark é um software de análise de rede que permite capturar e examinar o tráfego de dados em uma rede de computadores em tempo real.

https://www.wireshark.org/


Filtros de Captura

Os filtros de captura (como tcp port 80) são muito mais limitados, são usados para reduzir o tamanho da captura bruta de pacotes e não devem ser confundidos com os filtros de exibição (como tcp.port == 80).

Os filtros de captura são definidos antes do início da captura de pacotes e não podem ser modificados durante a captura.

Na janela principal, o filtro de captura pode ser encontrado logo acima da lista de interfaces e na caixa de diálogo de interfaces como pode ser visto nesta imagem:

wireshark_capture_filter

Exemplos

Captura de tráfego associada a um endereço IP específico:

host 172.18.5.4

Captura de tráfego dentro de um intervalo de endereços IP:

net 192.168.0.0/24
# ou
net 192.168.0.0 mask 255.255.255.0

Captura seletiva com base na origem dos pacotes:

src net 192.168.0.0/24
# ou
src net 192.168.0.0 mask 255.255.255.0

Captura seletiva com base no destino dos pacotes:

dst net 192.168.0.0/24
# ou
dst net 192.168.0.0 mask 255.255.255.0

Captura de tráfego específico de uma porta de aplicação:

port 53

Exclusão de tráfego HTTP e SMTP em servidores específicos:

host www.exemplo.com and not (port 80 or port 25)
# ou
host www.exemplo.com and not port 80 and not port 25

Exclusão de tráfego ARP e DNS:

port not 53 and not arp

Captura de tráfego dentro de um intervalo de portas TCP:

(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)

Captura de tráfego dentro de um intervalo de portas TCP para versões mais recentes do libpcap (0.9.1 ou superior):

tcp portrange 1501-1549

Captura de tráfego Ethernet EAPOL:

ether proto 0x888e

Rejeição de quadros multicast do Link Layer Discovery Protocol (LLDP):

not ether dst 01:80:c2:00:00:0e

Captura seletiva de tráfego IPv4:

ip

Captura seletiva de tráfego unicast:

not broadcast and not multicast

Captura de tráfego IPv6 destinado a todos os nós:

dst host ff02::1

Captura de requisições HTTP GET:

port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420

Referências

Filtros de Exibição

Os filtros de exibição são aqueles que irão filtrar os pacotes após serem interceptados.

Exemplos

Exibir apenas tráfego SMTP (porta 25) e ICMP:

tcp.port eq 25 or icmp

Exibir apenas tráfego dentro da LAN (192.168.x.x), eliminando conexões com a Internet:

ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16

Exibir pacotes TCP onde a fonte instrui o destino a interromper o envio de dados (buffer cheio):

tcp.window_size == 0 && tcp.flags.reset != 1

Filtragem no Windows para reduzir ruído, monitorando interações entre clientes e controladores de domínio:

smb || nbns || dcerpc || nbss || dns

Filtragem de pacotes contendo a sequência de bytes 0x81, 0x60, 0x03 no início do payload UDP, ignorando o cabeçalho UDP:

udp[8:3]==81:60:03

Filtragem de pacotes baseando-se no identificador do fabricante do MAC Address (OUI). Exemplo para dispositivos DELL:

eth.addr[0:3]==00:06:5B

Identificação de pacotes que contenham a sequência de bytes 0x81, 0x60, 0x03 em qualquer parte do cabeçalho ou payload UDP:

udp contains 81:60:03

Filtragem de pacotes SIP onde o cabeçalho To contém a string "a1762":

sip.To contains "a1762"

Utilização de expressões regulares para correspondência em campos de string:

http.request.uri matches "gl=se$"
informação

O caractere $ corresponde ao final da string conforme a sintaxe de expressões regulares Perl (PCRE).

Filtragem por protocolo (exemplo: SIP) excluindo endereços IP específicos:

ip.src != xxx.xxx.xxx.xxx && ip.dst != xxx.xxx.xxx.xxx && sip

A utilização do operador de camada (#) permite selecionar camadas específicas. Exemplo para pacotes GRE com IPv4 interno e externo:

Filtrar pelo endereço IP de origem na camada externa:

ip.src#1 == 10.1.2.3

Filtrar pelo endereço IP de origem na camada interna:

ip.src#2 == 10.1.2.3

Filtrar por qualquer uma das ocorrências:

ip.src == 10.1.2.3

Considerações Especiais (Gotchas)

Certos campos de filtro correspondem a múltiplos campos de protocolo. Por exemplo, ip.addr verifica tanto o endereço de origem quanto o de destino no cabeçalho IP, assim como tcp.port, udp.port e eth.addr.

Por exemplo, a seguinte expressão:

ip.addr == 10.43.54.65

É equivalente a:

ip.src == 10.43.54.65 or ip.dst == 10.43.54.65

Se quisermos excluir todo o tráfego de/para 10.43.54.65, poderíamos tentar:

ip.addr != 10.43.54.65

No entanto, essa expressão é equivalente a:

ip.src != 10.43.54.65 or ip.dst != 10.43.54.65

o que significa "exibir todo o tráfego, exceto aquele onde tanto a origem quanto o destino são 10.43.54.65", e não o desejado.

Para obter o comportamento correto, deve-se negar a expressão inteira:

!(ip.addr == 10.43.54.65)

O que equivale a:

!(ip.src == 10.43.54.65 or ip.dst == 10.43.54.65)

Isso resulta na exibição de todo o tráfego, exceto os pacotes em que a origem ou o destino sejam 10.43.54.65.

Essa questão também pode surgir ao analisar protocolos tunelados, onde múltiplas camadas IPv4 ou IPv6 podem estar presentes, ou quando há múltiplas instâncias de um campo.

Referências

Reconhecendo FTP em Porta não Padrão

Quando o FTP está rodando em uma porta diferente da padrão, porta 21, não é possível identificar os pacotes FTP com os filtros ftp ou ftp-data, para isso teremos que procurar pelas mensagens padrões da comunicação do protocolo FTP, podendo ser de tentativa de login, transferência de arquivos, etc.

Checando tentativas de login no FTP:

tcp contains "USER" || tcp contains "PASS"

Checando download de arquivo:

tcp contains "RETR" || tcp contains "PASV" || tcp contains "PORT"

Outros filtros FTP que podem ser úteis:

tcp contains "STOR"
tcp contains "LIST"
tcp contains "CWD"
tcp contains "QUIT"
tcp contains "MKD"
tcp contains "RMD"
tcp contains "DELE"
tcp contains "RNFR"
tcp contains "RNTO"
tcp contains "ABOR"
tcp contains "TYPE"
tcp contains "MODE"
tcp contains "STRU"
tcp contains "NOOP"
tcp contains "SYST"
ComandoDescrição
USEREnvia o nome de usuário ao servidor para iniciar uma sessão de login.
PASSEnvia a senha do usuário ao servidor para autenticação.
RETRSolicita a transferência de um arquivo do servidor para o cliente (download).
PASVInstrui o servidor a entrar no modo passivo, retornando um endereço IP e porta para o cliente conectar para transferências de dados.
PORTInstrui o cliente a fornecer ao servidor o endereço IP e porta onde o servidor deve se conectar para transferências de dados (modo ativo).
STORSolicita a transferência de um arquivo do cliente para o servidor (upload).
LISTSolicita uma lista detalhada de arquivos e diretórios no servidor.
CWDAltera o diretório de trabalho atual no servidor.
QUITTermina a sessão de login e desconecta o cliente do servidor.
MKDCria um novo diretório no servidor.
RMDRemove um diretório do servidor.
DELEExclui um arquivo do servidor.
RNFRIndica o nome de um arquivo ou diretório a ser renomeado. Deve ser seguido pelo comando RNTO.
RNTOEspecifica o novo nome para o arquivo ou diretório indicado pelo comando RNFR.
ABORAborta uma transferência de dados em andamento.
TYPEDefine o tipo de representação de dados a ser usado para transferências (por exemplo, binário ou ASCII).
MODEDefine o modo de transferência de dados (por exemplo, fluxo, bloco ou comprimido).
STRUDefine a estrutura de armazenamento de arquivos a ser usada para transferências (por exemplo, arquivo, registro ou página).
NOOPNão faz nada, apenas faz o servidor enviar uma resposta para manter a conexão ativa.
SYSTSolicita informações sobre o sistema operacional do servidor.

Após identificar em qual porta o FTP server está executando podemos indicar para o Wireshark que efetue o decode como FTP com base naquela porta:

decode_as_shadow.png

decode_as_ftp_shadow.png

Agora temos a capacidade de filtrar o ftp e o ftp-data diretamente no campo de filtro do Wireshark.

ftp_ftp-data_shadow.png

Salvando Arquivos Transferidos no FTP

Para salvar o arquivo que foi transferido no FTP, basta efetuar o filtro por ftp-data e efetuar o "Follow" do "TCP Stream".

ftp-data_tcp_stream_shadow.png

Configure o "Show data as" como "Raw" e salve o arquivo com nome e extenção correta.

raw_save_shadow.png

Arquivo PCAP usado como exemplo: invasao.pcap