ipt de regra de correspondência para tráfego STUN / TURN

0

Estou procurando encontrar pacotes TURN / STUN em uma porta 443. De acordo com o RFC da TURN, os Bytes 46 a 49 são pacotes mágicos '2112a442' do pacote TURN. Aqui está a captura de tela da wireshark, onde encontrei o cookie STUN entre 46 e 49

Estou usando -m u32 --u32 "46=0x2112A442" , mas não posso filtrá-los.

Aqui está minha regra completa de iptable

-A PREROUTING -i eth0 -p tcp --dport 443 -m u32 --u32 "46=0x2112A442" -j REDIRECT --to-port 3478

Alguma idéia do que eu poderia estar fazendo errado?

    
por Mystic monk 05.06.2018 / 11:11

1 resposta

1

Os deslocamentos do módulo iptables u32 são referenciados ao pacote menos o wrapper ethernet (menos o MAC de origem e de destino, 6 bytes cada, e o tipo ether, 2 bytes. Portanto, seu offset de 46 precisa ser ajustado por 14 e deve ser 32.

Agora, para uma verificação de integridade, encontre o tipo de byte de serviço, que conhecemos na área do u32 de as páginas man do iptables-extensions estão no offset 9 e também sabemos que é 0x11 (17) para o UDP. É no byte 0x17 (23) da sua imagem do wireshark. Contando a partir daí, também obtemos 32 como o deslocamento que você deve usar.

EDIT 1: Como o protocolo é UDP, você também precisa ajustar essa parte do seu comando iptables. Então:

sudo iptables -A PREROUTING -i eth0 -p udp --dport 443 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478

EDIT 2: No seu exemplo de captura de tela wireshark, a porta de destino é 5004, não 443. Portanto, o comando iptables ainda não funcionará para o seu exemplo de pacote específico. Talvez isto:

sudo iptables -A PREROUTING -i eth0 -p udp --dport 5004 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478
    
por Doug Smythies 06.06.2018 / 16:07