Wireshark

Um guia para a interface de linha de comando do Wireshark “tshark”

Um guia para a interface de linha de comando do Wireshark “tshark”
Nos tutoriais anteriores do Wireshark, cobrimos tópicos de nível fundamental a avançado. Neste artigo, vamos entender e cobrir uma interface de linha de comando para Wireshark, i.e., tshark. A versão terminal do Wireshark suporta opções semelhantes e é muito útil quando uma interface gráfica de usuário (GUI) não está disponível.

Mesmo que uma interface gráfica do usuário seja, teoricamente, muito mais fácil de usar, nem todos os ambientes a suportam, especialmente ambientes de servidor com apenas opções de linha de comando. Portanto, em algum momento, como administrador de rede ou engenheiro de segurança, você terá que usar uma interface de linha de comando. Importante notar que tshark às vezes é usado como um substituto para tcpdump. Mesmo que ambas as ferramentas sejam quase equivalentes na funcionalidade de captura de tráfego, o tshark é muito mais poderoso.

O melhor que você pode fazer é usar tshark para configurar uma porta em seu servidor que encaminha informações para seu sistema, para que você possa capturar o tráfego para análise usando uma GUI. No entanto, por enquanto, aprenderemos como funciona, quais são seus atributos e como você pode utilizá-lo da melhor maneira possível.

Digite o seguinte comando para instalar tshark no Ubuntu / Debian usando apt-get:

[email protegido]: ~ $ sudo apt-get install tshark -y

Agora digite tshark -help para listar todos os argumentos possíveis com seus respectivos sinalizadores que podemos passar para um comando tshark.

[email protegido]: ~ $ tshark --help | cabeça -20
TShark (Wireshark) 2.6.10 (Git v2.6.10 embalados como 2.6.10-1 ~ ubuntu18.04.0)
Despejar e analisar o tráfego de rede.
Veja https: // www.wirehark.org para mais informações.
Uso: tshark [opções] ..
Interface de captura:
-eu nome ou idx da interface (def: primeiro sem loopback)
-f filtro de pacotes na sintaxe do filtro libpcap
-s comprimento do instantâneo do pacote (definição: máximo apropriado)
-p não capture em modo promíscuo
-Capturo no modo monitor, se disponível
-B tamanho do buffer do kernel (def: 2 MB)
-y tipo de camada de link (definição: primeiro apropriado)
--tipo de carimbo de data / hora método de carimbo de data / hora para interface
-D imprime lista de interfaces e sai
-L imprimir a lista de tipos de camada de link de iface e sair
--list-time-stamp-types imprimir lista de tipos de timestamp para iface e exit
Condições de parada de captura:

Você pode ver uma lista de todas as opções disponíveis. Neste artigo, cobriremos a maioria dos argumentos em detalhes, e você entenderá o poder desta versão Wireshark orientada para terminal.

Selecionando a interface de rede:

Para conduzir a captura e análise ao vivo neste utilitário, primeiro precisamos descobrir nossa interface de trabalho. Modelo tshark -D e tshark irá listar todas as interfaces disponíveis.

[email protegido]: ~ $ tshark -D
1. enp0s3
2. algum
3. lo (Loopback)
4. nflog
5. nfqueue
6. usbmon1
7. ciscodump (captura remota Cisco)
8. randpkt (gerador de pacotes aleatórios)
9. sshdump (captura remota SSH)
10. udpdump (captura remota UDP Listener)

Observe que nem todas as interfaces listadas estarão funcionando. Modelo ifconfig para encontrar interfaces funcionais em seu sistema. No meu caso é enp0s3.

Capture Traffic:

Para iniciar o processo de captura ao vivo, usaremos o tshark comando com o “-eu”Opção para iniciar o processo de captura da interface de trabalho.

[email protegido]: ~ $ tshark -i enp0s3

Usar Ctrl + C para parar a captura ao vivo. No comando acima, canalizei o tráfego capturado para o comando Linux cabeça para exibir os primeiros pacotes capturados. Ou você também pode usar o “-c ”Sintaxe para capturar o“n ” número de pacotes.

[email protegido]: ~ $ tshark -i enp0s3 -c 5

Se você apenas entrar tshark, por padrão, ele não começará a capturar o tráfego em todas as interfaces disponíveis nem ouvirá sua interface de trabalho. Em vez disso, ele irá capturar pacotes na primeira interface listada.

Você também pode usar o seguinte comando para verificar várias interfaces:

[email protegido]: ~ $ tshark -i enp0s3 -i usbmon1 -i lo

Enquanto isso, outra maneira de capturar o tráfego ao vivo é usar o número ao lado das interfaces listadas.

[email protegido]: ~ $ tshark -i interface_number

No entanto, na presença de várias interfaces, é difícil controlar seus números listados.

Filtro de captura:

Filtros de captura reduzem significativamente o tamanho do arquivo capturado. Tshark usa a sintaxe do Berkeley Packet Filter -f”, Que também é usado pelo tcpdump. Usaremos a opção “-f” para capturar apenas pacotes das portas 80 ou 53 e usaremos “-c” para exibir apenas os primeiros 10 pacotes.

[email protegido]: ~ $ tshark -i enp0s3 -f "porta 80 ou porta 53" -c 10

Salvando o tráfego capturado em um arquivo:

O principal ponto a ser observado na captura de tela acima é que as informações exibidas não são salvas, portanto, são menos úteis. Usamos o argumento “-C”Para salvar o tráfego de rede capturado para test_capture.pcap dentro / tmp pasta.

[email protegido]: ~ $ tshark -i enp0s3 -w / tmp / test_capture.pcap

Enquanto, .pcap é a extensão do tipo de arquivo Wireshark. Ao salvar o arquivo, você pode revisar e analisar o tráfego em uma máquina com a GUI do Wireshark posteriormente.

É uma boa prática salvar o arquivo em /tmp já que esta pasta não requer nenhum privilégio de execução. Se você salvá-lo em outra pasta, mesmo se estiver executando tshark com privilégios de root, o programa negará a permissão por motivos de segurança.

Vamos examinar todas as maneiras possíveis pelas quais você pode:

  • aplicar limites para a captura de dados, de modo que a saída tshark ou interromper automaticamente o processo de captura e
  • enviar seus arquivos.

Parâmetro Autostop:

Você pode usar o “-uma”Parâmetro para incorporar sinalizadores disponíveis, como tamanho do arquivo de duração e arquivos. No comando a seguir, usamos o parâmetro autostop com o duração sinalize para interromper o processo em 120 segundos.

[email protegido]: ~ $ tshark -i enp0s3 -a duração: 120 -w / tmp / test_capture.pcap

Da mesma forma, se você não precisa que seus arquivos sejam extragrandes, tamanho do arquivo é um sinalizador perfeito para parar o processo após alguns limites de KB.

[email protegido]: ~ $ tshark -i enp0s3 -a tamanho do arquivo: 50 -w / tmp / test_capture.pcap

Mais importante, arquivos sinalizador permite que você pare o processo de captura após uma série de arquivos. Mas isso só pode ser possível após a criação de vários arquivos, o que requer a execução de outro parâmetro útil, captura de saída.

Parâmetro de saída de captura:

Capture output, também conhecido como ringbuffer argumento “-b“, Vem junto com as mesmas bandeiras do autostop. No entanto, o uso / saída é um pouco diferente, eu.e., as bandeiras duração e tamanho do arquivo, pois permite que você alterne ou salve pacotes para outro arquivo após atingir um limite de tempo especificado em segundos ou tamanho de arquivo.

O comando abaixo mostra que capturamos o tráfego por meio de nossa interface de rede enp0s3, e capturar o tráfego usando o filtro de captura “-f”Para tcp e dns. Usamos a opção ringbuffer “-b” com um tamanho do arquivo sinalize para salvar cada arquivo de tamanho 15 kb, e também use o argumento autostop para especificar o número de arquivos usando arquivos opção de modo que pare o processo de captura após gerar três arquivos.

[email protegido]: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b tamanho do arquivo: 15 -a arquivos: 2 -w / tmp / test_capture.pcap

Eu dividi meu terminal em duas telas para monitorar ativamente a criação de três .arquivos pcap.

Vá para sua / tmp pasta e use o seguinte comando no segundo terminal para monitorar atualizações a cada segundo.

[email protegido]: ~ $ watch -n 1 "ls -lt"

Agora, você não precisa memorizar todas essas bandeiras. Em vez disso, digite um comando tshark -i enp0s3 -f “porta 53 ou porta 21” -b tamanho do arquivo: 15 -a em seu terminal e pressione Aba. A lista de todas as bandeiras disponíveis estará disponível em sua tela.

[email protegido]: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b tamanho do arquivo: 15 -a
duração: arquivos: tamanho do arquivo:
[email protegido]: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b tamanho do arquivo: 15 -a

Leitura .Arquivos pcap:

Mais importante ainda, você pode usar um “-r”Parâmetro para ler o test_capture.arquivos pcap e canalizá-los para o cabeça comando.

[email protegido]: ~ $ tshark -r / tmp / test_capture.pcap | cabeça

As informações exibidas no arquivo de saída podem ser um pouco opressivas. Para evitar detalhes desnecessários e obter uma melhor compreensão de qualquer endereço IP de destino específico, usamos o -r opção de ler o arquivo de pacote capturado e usar um ip.addr filtro para redirecionar a saída para um novo arquivo com o “-C”Opção. Isso nos permitirá revisar o arquivo e refinar nossa análise aplicando outros filtros.

[email protegido]: ~ $ tshark -r / tmp / test_capture.pcap -w / tmp / redirected_file.pcap ip.dst == 216.58.209.142
[email protegido]: ~ $ tshark -r / tmp / redirected_file.pcap | cabeça
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSv1.2 370 Dados de Aplicação
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSv1.2 669 Dados de Aplicação
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSv1.2 5786 Dados de aplicativo
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSv1.2 Dados de aplicativo 1093
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSv1.2 403 Application Data
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [segmento TCP de uma PDU remontada]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSv1.2 948 Dados de Aplicação
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSv1.2 233 Dados de Aplicação
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSv1.2 669 Dados de Aplicação
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSv1.2 3582 Dados de aplicativo

Selecionando campos para produzir:

Os comandos acima geram um resumo de cada pacote que inclui vários campos de cabeçalho. Tshark também permite que você visualize campos específicos. Para especificar um campo, usamos “-Campo T”E extraia os campos de acordo com nossa escolha.

Depois de "-Campo T”, Usamos a opção“ -e ”para imprimir os campos / filtros especificados. Aqui, podemos usar filtros de exibição Wireshark.

[email protegido]: ~ $ tshark -r / tmp / test_capture.pcap -T fields -e frame.número -e ip.src -e ip.dst | cabeça
1 10.0.2.15 216.58.209.142
2 10.0.2.15 216.58.209.142
3 216.58.209.142 10.0.2.15
4 216.58.209.142 10.0.2.15
5 10.0.2.15 216.58.209.142
6 216.58.209.142 10.0.2.15
7 216.58.209.142 10.0.2.15
8 216.58.209.142 10.0.2.15
9 216.58.209.142 10.0.2.15
10 10.0.2.15 115.186.188.3

Capture dados de handshake criptografados:

Até agora, aprendemos a salvar e ler arquivos de saída usando vários parâmetros e filtros. Agora aprenderemos como o HTTPS inicializa a sessão tshark. Os sites acessados ​​via HTTPS em vez de HTTP garantem uma transmissão de dados segura ou criptografada pela rede. Para uma transmissão segura, uma criptografia do Transport Layer Security inicia um processo de handshake para iniciar a comunicação entre o cliente e o servidor.

Vamos capturar e entender o handshake TLS usando tshark. Divida seu terminal em duas telas e use um wget comando para recuperar um arquivo html de https: // www.wirehark.org.

[email protegido]: ~ $ wget https: // www.wirehark.org
--2021-01-09 18: 45: 14 - https: // www.wirehark.org /
Conectando a www.wirehark.org (www.wirehark.org) | 104.26.10.240 |: 443 ... conectado.
Solicitação HTTP enviada, aguardando resposta… 206 Partial Content
Comprimento: 46892 (46K), 33272 (32K) restantes [texto / html]
Salvando em: 'índice.html '
índice.html 100% [++++++++++++++ ====================================== ==>] 45.79K 154 KB / s em 0.2s
2021-01-09 18:43:27 (154 KB / s) - 'índice.html 'salvo [46892/46892]

Em outra tela, usaremos tshark para capturar os primeiros 11 pacotes usando o “-c”Parâmetro. Ao realizar a análise, os carimbos de data / hora são importantes para reconstruir eventos, portanto, usamos “-t anúncio”, De forma que tshark adiciona timestamp ao lado de cada pacote capturado. Por último, usamos o comando host para capturar pacotes do host compartilhado endereço de IP.

Este handshake é bastante semelhante ao handshake TCP. Assim que o handshake TCP de três vias termina nos primeiros três pacotes, o quarto ao nono pacotes seguem um ritual de handshake um tanto semelhante e incluem strings TLS para garantir a comunicação criptografada entre ambas as partes.

[email protegido]: ~ $ tshark -i enp0s3 -c 11 -t host de anúncio 104.26.10.240
Capturando em 'enp0s3'
1 2021-01-09 18:45:14.174524575 10.0.2.15 → 104.26.10.240 TCP 74 48512 → 443 [SYN] Seq = 0 Win = 64240 Len = 0 MSS = 1460 SACK_PERM = 1 TSval = 2488996311 TSecr = 0 WS = 128
2 2021-01-09 18:45:14.279972105 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [SYN, ACK] Seq = 0 Ack = 1 Win = 65535 Len = 0 MSS = 1460
3 2021-01-09 18:45:14.280020681 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 1 Ack = 1 Win = 64240 Len = 0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.10.240 TLSv1 373 Cliente Hello
5 2021-01-09 18:45:14.281007512 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] Seq = 1 Ack = 320 Win = 65535 Len = 0
6 2021-01-09 18:45:14.390272461 104.26.10.240 → 10.0.2.15 TLSv1.3 1466 Server Hello, Change Cipher Spec
7 2021-01-09 18:45:14.390303914 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 320 Ack = 1413 Win = 63540 Len = 0
8 2021-01-09 18:45:14.392680614 104.26.10.240 → 10.0.2.15 TLSv1.3 Dados de aplicativo 1160
9 2021-01-09 18:45:14.392703439 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] Seq = 320 Ack = 2519 Win = 63540 Len = 0
10 2021-01-09 18:45:14.394218934 10.0.2.15 → 104.26.10.240 TLSv1.3 134 Alterar especificações de criptografia, dados de aplicativo
11 2021-01-09 18:45:14.394614735 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] Seq = 2519 Ack = 400 Win = 65535 Len = 0
11 pacotes capturados

Visualizando o pacote inteiro:

A única desvantagem de um utilitário de linha de comando é que ele não tem uma GUI, pois se torna muito útil quando você precisa pesquisar muito tráfego da Internet, e também oferece um painel de pacotes que exibe todos os detalhes do pacote dentro de um instante. No entanto, ainda é possível inspecionar o pacote e despejar todas as informações do pacote exibidas no painel de pacotes GUI.

Para inspecionar um pacote inteiro, usamos um comando ping com a opção “-c” para capturar um único pacote.

[email protegido]: ~ $ ping -c 1 104.26.10.240
PING 104.26.10.240 (104.26.10.240) 56 (84) bytes de dados.
64 bytes de 104.26.10.240: icmp_seq = 1 ttl = 55 tempo = 105 ms
--- 104.26.10.240 estatísticas de ping ---
1 pacote transmitido, 1 recebido, 0% de perda de pacote, tempo 0ms
rtt mín / média / máx / mdev = 105.095/105.095/105.095/0.000 ms

Em outra janela, use o comando tshark com um sinalizador adicional para exibir todos os detalhes do pacote. Você pode notar várias seções, exibindo detalhes de Frames, Ethernet II, IPV e ICMP.

[email protegido]: ~ $ tshark -i enp0s3 -c 1 -V host 104.26.10.240
Quadro 1: 98 bytes no fio (784 bits), 98 bytes capturados (784 bits) na interface 0
ID da interface: 0 (enp0s3)
Nome da interface: enp0s3
Tipo de encapsulamento: Ethernet (1)
Horário de chegada: 09 de janeiro de 2021 21:23:39.167581606 PKT
[Mudança de tempo para este pacote: 0.000000000 segundos]
Horário da época: 1610209419.167581606 segundos
[Tempo delta do quadro capturado anterior: 0.000000000 segundos]
[Time delta do quadro anterior exibido: 0.000000000 segundos]
[Tempo desde a referência ou primeiro quadro: 0.000000000 segundos]
Número do quadro: 1
Comprimento do quadro: 98 bytes (784 bits)
Comprimento de captura: 98 bytes (784 bits)
[Quadro marcado: Falso]
[Quadro é ignorado: Falso]
[Protocolos no frame: eth: ethertype: ip: icmp: data]
Ethernet II, Src: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6), Dst: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destino: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Endereço: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = LG bit: endereço administrado localmente (este NÃO é o padrão de fábrica)
… 0… = bit IG: endereço individual (unicast)
Fonte: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Endereço: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
ID da interface: 0 (enp0s3)
Nome da interface: enp0s3
Tipo de encapsulamento: Ethernet (1)
Horário de chegada: 09 de janeiro de 2021 21:23:39.167581606 PKT
[Mudança de tempo para este pacote: 0.000000000 segundos]
Horário da época: 1610209419.167581606 segundos
[Tempo delta do quadro capturado anterior: 0.000000000 segundos]
[Time delta do quadro anterior exibido: 0.000000000 segundos]
[Tempo desde a referência ou primeiro quadro: 0.000000000 segundos]
Número do quadro: 1
Comprimento do quadro: 98 bytes (784 bits)
Comprimento de captura: 98 bytes (784 bits)
[Quadro marcado: Falso]
[Quadro é ignorado: Falso]
[Protocolos no frame: eth: ethertype: ip: icmp: data]
Ethernet II, Src: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6), Dst: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destino: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
Endereço: RealtekU_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = LG bit: endereço administrado localmente (este NÃO é o padrão de fábrica)
… 0… = bit IG: endereço individual (unicast)
Fonte: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Endereço: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
… 0… = LG bit: Endereço globalmente exclusivo (padrão de fábrica)
… 0… = bit IG: endereço individual (unicast)
Tipo: IPv4 (0x0800)
Protocolo de Internet versão 4, Src: 10.0.2.15, Dst: 104.26.10.240
0100… = Versão: 4
… 0101 = Comprimento do cabeçalho: 20 bytes (5)
Campo de serviços diferenciados: 0x00 (DSCP: CS0, ECN: Não-ECT)
0000 00… = Ponto de código de serviços diferenciados: Padrão (0)
… 00 = Notificação explícita de congestionamento: Transporte não compatível com ECN (0)
Comprimento total: 84
Identificação: 0xcc96 (52374)
Sinalizadores: 0x4000, não fragmentar
0… = bit reservado: não definido
.1… = Não fragmentar: Definir
… 0… = Mais fragmentos: Não definido
… 0 0000 0000 0000 = Deslocamento de fragmento: 0
Tempo de vida: 64
Protocolo: ICMP (1)
Soma de verificação do cabeçalho: 0xeef9 [validação desativada]
[Status da soma de verificação do cabeçalho: Não verificado]
Fonte: 10.0.2.15
Destino: 104.26.10.240
Internet Control Message Protocol
Tipo: 8 (solicitação de eco (ping))
Código: 0
Soma de verificação: 0x0cb7 [correto]
[Status da soma de verificação: bom]
Identificador (BE): 5038 (0x13ae)
Identificador (LE): 44563 (0xae13)
Número de sequência (BE): 1 (0x0001)
Número de sequência (LE): 256 (0x0100)
Timestamp de dados icmp: 9 de janeiro de 2021 21:23:39.000000000 PKT
[Timestamp de dados icmp (relativos): 0.167581606 segundos]
Dados (48 bytes)
0000 91 8e 02 00 00 00 00 00 10 11 12 13 14 15 16 17…
0010 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 .. !"# $% & '
0020 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 () *+,-./ 01234567
Dados: 918e020000000000101112131415161718191a1b1c1d1e1f…
[Comprimento: 48]

Conclusão:

O aspecto mais desafiador da análise de pacotes é encontrar as informações mais relevantes e ignorar os bits inúteis. Mesmo que as interfaces gráficas sejam fáceis, elas não podem contribuir para a análise automatizada de pacotes de rede. Neste artigo, você aprendeu os parâmetros tshark mais úteis para capturar, exibir, salvar e ler arquivos de tráfego de rede.

Tshark é um utilitário muito útil que lê e grava os arquivos de captura suportados pelo Wireshark. A combinação de filtros de exibição e captura contribui muito ao trabalhar em casos de uso de nível avançado. Podemos alavancar a capacidade do tshark para imprimir campos e manipular dados de acordo com nossos requisitos para análises aprofundadas. Em outras palavras, é capaz de fazer praticamente tudo o que o Wireshark faz. Mais importante, é perfeito para farejar pacotes remotamente usando ssh, que é um assunto para outro dia.

AppyMouse na tela Trackpad e ponteiro do mouse para tablets Windows
Os usuários de tablets costumam perder o ponteiro do mouse, especialmente quando costumam usar laptops. Os smartphones e tablets touchscreen vêm com m...
O botão do meio do mouse não funciona no Windows 10
O botão do meio do mouse ajuda você a percorrer longas páginas da web e telas com muitos dados. Se isso parar, você vai acabar usando o teclado para r...
Como alterar os botões esquerdo e direito do mouse no PC com Windows 10
É normal que todos os dispositivos de mouse de computador sejam ergonomicamente projetados para usuários destros. Mas existem dispositivos de mouse di...