Embora uma interface gráfica do usuário seja, teoricamente, muito mais fácil de usar, nem todos os ambientes suportam, especialmente ambientes de servidores 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 observar que o Tshark às vezes é usado como substituto para o TCPDUMP. Embora 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 o TShark para configurar uma porta em seu servidor que encaminha informações para o seu sistema, para que você possa capturar 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 o TShark no Ubuntu/Debian usando Apt-Get:
ubuntu@ubuntu: ~ $ sudo apt -get install tshark -y
Agora tipo TSHARK -HELP Para listar todos os argumentos possíveis com suas respectivas bandeiras que podemos passar para um comando TSHARK.
ubuntu@ubuntu: ~ $ 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.Wireshark.org para mais informações.
Uso: Tshark [Opções]…
Interface de captura:
-euNome ou IDX da interface (def: primeiro não loopback)
-ffiltro de pacotes na sintaxe do filtro libpcap
-sComprimento do instantâneo do pacote (def: máximo apropriado)
-p não captura em modo promíscuo
-Eu capto no modo de monitor, se disponível
-B Tamanho do buffer do kernel (DEF: 2MB)
-y Tipo de camada de link (def: primeiro apropriado)
--Método de timestamp do tipo Stamp-Stamp para interface
-D Lista de impressão de interfaces e saída
-L Lista de impressão de tipos de camada de link de iface e saída
--Lista de impressão do tipo de tempo de listão Lista de tipos de timestamp para iface e saída
Capture Condições de parada:
Você pode notar uma lista de todas as opções disponíveis. Neste artigo, abordaremos a maioria dos argumentos em detalhes e você entenderá o poder desta versão do Wireshark orientada ao terminal.
Selecionando interface de rede:
Para realizar captura e análise ao vivo nesta concessionária, primeiro precisamos descobrir nossa interface de trabalho. Tipo TSHARK -D e o Tshark listará todas as interfaces disponíveis.
ubuntu@ubuntu: ~ $ tshark -d
1. ENP0S3
2. qualquer
3. lo (loopback)
4. Nflog
5. nfqueue
6. USBMON1
7. Ciscodump (Cisco Remote Capture)
8. Randpkt (gerador de pacotes aleatório)
9. sshdump (captura remota ssh)
10. udpdump (Captura remota do ouvinte UDP)
Observe que nem todas as interfaces listadas estarão funcionando. Tipo ifconfig Para encontrar interfaces de trabalho em seu sistema. No meu caso, é ENP0S3.
Capture tráfego:
Para iniciar o processo de captura ao vivo, usaremos o TSHARK comando com o “-eu”Opção para iniciar o processo de captura a partir da interface de trabalho.
ubuntu@ubuntu: ~ $ tshark -i enp0s3
Usar Ctrl+c Para parar a captura ao vivo. No comando acima, eu fiz o tráfego capturado para o comando Linux cabeça Para exibir os primeiros pacotes capturados. Ou você também pode usar a sintaxe “-C” para capturar a “n ” Número de pacotes.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 5
Se você só 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 capturará pacotes na primeira interface listada.
Você também pode usar o seguinte comando para verificar em várias interfaces:
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -i usbmon1 -i lo
Enquanto isso, outra maneira de ao vivo o tráfego é usar o número ao lado das interfaces listadas.
ubuntu@ubuntu: ~ $ tshark -i interface_number
No entanto, na presença de várias interfaces, é difícil acompanhar seus números listados.
Capture filtro:
Os filtros de captura reduzem significativamente o tamanho do arquivo capturado. Tshark usa a sintaxe do filtro de pacotes de Berkeley -f ““”, Que também é usado pelo tcpdump. Usaremos a opção "-f" para capturar apenas pacotes das portas 80 ou 53 e usar "-c" para exibir apenas os 10 primeiros pacotes.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "porta 80 ou porta 53" -c 10
Salvando o tráfego capturado em um arquivo:
A principal coisa a ser observada na captura de tela acima é que as informações exibidas não são salvas, portanto é menos útil. Usamos o argumento “-c”Para salvar o tráfego de rede capturado para test_capture.PCAP em /tmp pasta.
ubuntu@ubuntu: ~ $ 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 GUI Wireshark mais tarde.
É uma boa prática salvar o arquivo em /TMP Como esta pasta não requer privilégios de execução. Se você salvá -lo em outra pasta, mesmo se estiver executando o TShark com privilégios de raiz, o programa negará a permissão devido a razões de segurança.
Vamos nos aprofundar em todas as maneiras possíveis pelas quais você pode:
Parâmetro AutoStop:
Você pode usar o “-a”Parâmetro para incorporar sinalizadores disponíveis, como tamanho de arquivo de duração e arquivos. No comando a seguir, usamos o parâmetro AutoStop com o duração sinalizador para interromper o processo dentro de 120 segundos.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -a duração: 120 -w /tmp /test_capture.PCAP
Da mesma forma, se você não precisar que seus arquivos sejam extra-grande, tamanho do arquivo é uma bandeira perfeita para interromper o processo após alguns limites de KB.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -a filesize: 50 -w /tmp /test_capture.PCAP
Mais importante, arquivos Flag permite que você interrompa o processo de captura após vários 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, capturar saída.
Capture o parâmetro de saída:
Capture Saída, Aka Ringbuffer argumento “-b“, Vem junto com as mesmas bandeiras que o AutoStop. No entanto, o uso/saída é um pouco diferente, eu.e., as bandeiras duração e tamanho do arquivo, como permite alternar ou salvar pacotes para outro arquivo depois de atingir um prazo especificado em segundos ou tamanho do arquivo.
O comando abaixo mostra que capturamos o tráfego através de nossa interface de rede ENP0S3, e capturar tráfego usando o filtro de captura “-f”Para TCP e DNS. Usamos a opção RingBuffer "-b" com um tamanho do arquivo sinalizador para salvar cada arquivo de tamanho 15 kb, e também use o argumento do AutoStop para especificar o número de arquivos usando arquivos opção de modo que interrompa o processo de captura depois de gerar três arquivos.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b fileSize: 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 as atualizações após cada segundo.
ubuntu@ubuntu: ~ $ watch -n 1 "ls -lt"
Agora, você não precisa memorizar todas essas bandeiras. Em vez disso, digite um comando TSHARK -I ENP0S3 -F “PORT 53 ou PORT 21” -B FIOSE: 15 -A em seu terminal e pressione Aba. A lista de todas as bandeiras disponíveis estará disponível na sua tela.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b fileSize: 15 -a
Duração: Arquivos: FileSize:
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "porta 53 ou porta 21" -b fileSize: 15 -a
Leitura .Arquivos PCAP:
O mais importante, você pode usar um “-rParâmetro para ler o test_capture.Arquivos PCAP e transmitam -os para o cabeça comando.
ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.PCAP | cabeça
As informações exibidas no arquivo de saída podem ser um pouco esmagadoras. Para evitar detalhes desnecessários e entender melhor qualquer endereço IP de destino específico, usamos o -r opção para ler o arquivo capturado pelo pacote e usar um IP.addr filtrar 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.
ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.pcap -w /tmp /redirected_file.PCAP IP.dst == 216.58.209.142
ubuntu@ubuntu: ~ $ tshark -r /tmp /redirected_file.PCAP | Cabeça
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSV1.2 370 Dados do aplicativo
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSV1.2 669 Dados do aplicativo
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSV1.2 5786 Dados do aplicativo
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSV1.2 1093 Dados do aplicativo
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSV1.2 403 Dados do aplicativo
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [segmento TCP de um PDU remontado]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSV1.2 948 Dados do aplicativo
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSV1.2 233 dados de aplicativos
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSV1.2 669 Dados do aplicativo
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSV1.2 3582 Dados do aplicativo
Selecionando campos para saída:
Os comandos acima saem um resumo de cada pacote que inclui vários campos de cabeçalho. Tshark também permite visualizar campos especificados. Para especificar um campo, usamos “-T CAMPOE extrair campos de acordo com a nossa escolha.
Depois de "-T CAMPO“Switch, usamos a opção“ -e ”para imprimir os campos/filtros especificados. Aqui, podemos usar filtros de exibição Wireshark.
ubuntu@ubuntu: ~ $ 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 vamos aprender 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 sobre o fio. Para transmissão segura, uma criptografia de segurança da camada de transporte inicia um processo de aperto de mão para iniciar a comunicação entre o cliente e o servidor.
Vamos capturar e entender o aperto de mão do TLS usando o TSHARK. Divida seu terminal em duas telas e use um wget comando para recuperar um arquivo html de https: // www.Wireshark.org.
ubuntu@ubuntu: ~ $ wget https: // www.Wireshark.org
--2021-01-09 18: 45: 14-- https: // www.Wireshark.org/
Conectando -se a www.Wireshark.org (www.Wireshark.org) | 104.26.10.240 |: 443… conectado.
Solicitação HTTP enviada, aguardando resposta… 206 Conteúdo parcial
Comprimento: 46892 (46k), 33272 (32k) restante [Texto/html]
Economizando para: 'Índice.html '
índice.html 100%[++++++++++++++ ================================== ==>] 45.79k 154kb/s em 0.2s
2021-01-09 18:43:27 (154 kb/s)-'Índice.HTML 'salvo [46892/46892]
Em outra tela, usaremos o TShark para capturar os 11 primeiros pacotes usando o “-cParâmetro. Ao realizar análises, os registros de data e hora são importantes para reconstruir eventos, portanto, usamos “-t ad”, De uma maneira que Tshark adiciona registro de data e hora ao lado de cada pacote capturado. Por fim, usamos o comando host para capturar pacotes do host compartilhado endereço de IP.
Este aperto de mão é bastante semelhante ao handshake de TCP. Assim que o aperto de mão de três vias do TCP termina nos três primeiros pacotes, os quatro a nono pacotes seguem um ritual de aperto de mão um tanto semelhante e incluem seqüências de caracteres TLS para garantir a comunicação criptografada entre ambas as partes.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 11 -t anúncio host 104.26.10.240
Captura 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 vitória = 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 vitória = 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 vitória = 64240 len = 0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.10.240 TLSV1 373 Cliente Olá
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 servidor Olá, altere a especificação cifra
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 1160 Dados do aplicativo
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 cifra, dados do 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 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 de pacotes 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.
ubuntu@ubuntu: ~ $ 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 pacotes transmitidos, 1 recebido, 0% de perda de pacotes, tempo 0ms
rtt min/avg/max/mdev = 105.095/105.095/105.095/0.000 ms
Em outra janela, use o comando tshark com uma bandeira adicional para exibir os detalhes inteiros do pacote. Você pode notar várias seções, exibindo quadros, Ethernet II, IPV e detalhes do ICMP.
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 1 -v host 104.26.10.240
Frame 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)
Hora de chegada: 9 de janeiro de 2021 21:23:39.167581606 PKT
[Mudança de tempo para este pacote: 0.000000000 segundos]
Tempo de época: 1610209419.167581606 segundos
[Time Delta do quadro capturado anterior: 0.000000000 segundos]
[Time Delta do quadro exibido anterior: 0.000000000 segundos]
[Tempo desde a referência ou o primeiro quadro: 0.000000000 segundos]
Número do quadro: 1
Comprimento do quadro: 98 bytes (784 bits)
Comprimento da captura: 98 bytes (784 bits)
[O quadro está marcado: false]
[O quadro é ignorado: false]
[Protocolos no quadro: 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… = bit LG: endereço administrado localmente (este não é o padrão de fábrica)
… 0… = Ig Bit: 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)
Hora de chegada: 9 de janeiro de 2021 21:23:39.167581606 PKT
[Mudança de tempo para este pacote: 0.000000000 segundos]
Tempo de época: 1610209419.167581606 segundos
[Time Delta do quadro capturado anterior: 0.000000000 segundos]
[Time Delta do quadro exibido anterior: 0.000000000 segundos]
[Tempo desde a referência ou o primeiro quadro: 0.000000000 segundos]
Número do quadro: 1
Comprimento do quadro: 98 bytes (784 bits)
Comprimento da captura: 98 bytes (784 bits)
[O quadro está marcado: false]
[O quadro é ignorado: false]
[Protocolos no quadro: 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… = bit LG: endereço administrado localmente (este não é o padrão de fábrica)
… 0… = Ig Bit: 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… = Bit LG: Endereço globalmente exclusivo (padrão de fábrica)
… 0… = Ig Bit: Endereço individual (unicast)
Tipo: IPv4 (0x0800)
Internet Protocol 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… = Serviços diferenciados CodePoint: padrão (0)
… 00 = Notificação explícita de congestionamento: não é transporte de ECN (0)
Comprimento total: 84
Identificação: 0xcc96 (52374)
Bandeiras: 0x4000, não se fragmenta
0… = bit reservado: não definido
.1… = não fragmento: definido
… 0… = mais fragmentos: não definido
… 0 0000 0000 0000 = deslocamento do fragmento: 0
Hora de viver: 64
Protocolo: ICMP (1)
Soma de 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
Protocolo de mensagem de controle da Internet
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 da sequência (BE): 1 (0x0001)
Número da sequência (LE): 256 (0x0100)
Timestamp da ICMP Data: 9 de janeiro de 2021 21:23:39.000000000 PKT
[Timestamp da ICMP Data (parente): 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: 918E020000000010101112131415161718191A1B1C1D1E1F…
[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. Embora 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 mais úteis do TShark 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 enquanto trabalha em casos de uso de nível avançado. Podemos alavancar a capacidade do TShark de imprimir campos e manipular dados de acordo com nossos requisitos para análises detalhadas. Em outras palavras, é capaz de fazer praticamente tudo o que o Wireshark faz. Mais importante ainda, é perfeito para farejar de pacotes remotamente usando o SSH, que é um tópico para outro dia.