Por que o tcpdump captura muitos pacotes com “(tcp-syn)! = 0” mas não com “tcp [tcpflags] & (tcp-syn)! = 0”

0

Eu quero capturar o handshake inicial de uma conexão UDP entre meu computador e um servidor VPN. Para isso, estou usando tcpdump , mas não entendo o porquê:

tcpdump dst port 1194 and "tcp[tcpflags] & (tcp-syn) != 0"

Não capturará nada, enquanto

tcpdump dst port 1194 and "(tcp-syn) != 0" 

captura vários pacotes durante a conexão quando é suposto capturar somente o primeiro pacote SYN que inicia o handshake.

Para que tcp[tcpflags] é usado?

    
por ChiseledAbs 27.07.2016 / 14:37

1 resposta

3

  1. tcp[tcpflags] é uma variável que armazena os sinalizadores TCP (bits) no pacote TCP atualmente capturado. tcp-syn é uma constante com zeros em todos os lugares, exceto o bit correspondente ao pacote TCP SYN. Assim:

    tcpdump dst port 1194 and "(tcp-syn) != 0" 
    

    é equivalente a

    tcpdump dst port 1194 and 1 = 1
    
  2. O protocolo UDP é mais simples e não possui esses sinalizadores - não há SYN, ACK etc. no tráfego UDP. Como resultado, não há um aperto de mão real que você possa capturar sem inspecionar o conteúdo dos pacotes UDP.

  3. Se a comunicação VPN estiver realmente em execução no UDP. Então, a primeira regra não captura o "handshake" porque se aplica apenas aos pacotes TCP. O segundo irá capturá-lo, mas junto com tudo direcionado para a porta 1194 - TCP e UDP.

por 27.07.2016 / 15:10