Como identificar pacotes udp com o tcpdump

1

Estou tentando fazer o tratamento automatizado do pcap com o tcpdump (para armazená-los no ELK). Meu problema é que preciso ter acesso a flags TCP, e não consigo identificar se um pacote é TCP ou UDP.

Se eu usar -q , há um campo bastante óbvio após o número da porta de destino, mas os sinalizadores TCP não são exibidos:

Oct 04 16:47:21.058974 00:08:e3:ff:fc:04 00:00:5e:00:01:19 171: 10.193.47.54.3389 > 10.60.2.87.54075: tcp 117 (DF) [tos 0x2 (E)] (ttl 127, id 14452, len 157)
Oct 04 16:47:21.058990 2c:76:8a:53:2f:d6 00:08:e3:ff:fc:04 157: 10.60.7.17.54934 > 10.194.151.66.53522: udp 115 (ttl 62, id 0, len 143, bad ip cksum 0! -> c90d)

Se eu remover o sinalizador -q , esse campo praticamente desaparece. Ele é preenchido apenas para pacotes UDP, mas não todas as vezes (especialmente solicitações DNS e SNMP).

Oct 04 16:49:52.964277 00:08:e3:ff:fc:04 00:00:5e:00:01:19 0800 172: 10.194.5.11.53 > 10.202.7.126.55187: 61642 NXDomain 0/1/0 (130) (ttl 126, id 10111, len 158)
Oct 04 16:51:59.321776 2c:76:8a:53:2f:d6 00:08:e3:ff:fc:04 0800 128: 10.60.2.46.161 > 10.194.125.121.41624: |30|54|02|01|04|05C=toto47 |a2|48GetResponse(60)|02|02|02|01|02|01|30|3c |30|12|06|0c.1.3.6.1.2.1.25.5.1.1.2.4305=|02|022824 |30|13|06|0c.1.3.6.1.2.1.25.5.1.1.1.4305=|02|03539869 |30|11|06|0c.1.3.6.1=[|snmp] (ttl 62, id 0, len 114, bad ip cksum 0! -> e7d6)

Existe uma maneira para que o protocolo l4 seja sempre exibido na saída, sem perder os sinalizadores TCP? Ou pelo menos para sempre exibir se isso é UDP?

Ou eu terei que fazer alguma filtragem complicada de logstash para classificar DNS e SNMP?

Obrigado

    
por Pierre Bardou 04.10.2017 / 16:56

2 respostas

1

Eu não tenho certeza se é sua intenção, mas você apenas usa as opções -v e então você tem uma saída como essa onde você tem "proto":

1507132726.499248 IP (tos 0x0, ttl 64, id 60959, offset 0, flags [DF], proto UDP (17), length 59)
    
por 04.10.2017 / 18:04
0

Estou certo em dizer que sua prioridade é filtrar quais pacotes são TCP e quais são UDP?

Embora eu não esteja inteiramente certo de que esta é uma solução completa para o seu problema, uma opção seria filtrar a saída do tcpdump pelo protocolo de nível 4.

Isso pode ser feito da seguinte forma para exibir apenas os pacotes UDP:

tcpdump 'udp'

O equivalente para mostrar apenas os pacotes TCP é:

tcpdump 'tcp'
    
por 04.10.2017 / 17:57