Bloquear paquetes / secuencias específicos de paquetes para eliminar la "característica" del cliente molesto

0

Recientemente, una de mis aplicaciones cliente-servidor comenzó a molestarme con algunas "notificaciones" muy molestas. Básicamente, lo que sucede es que el servidor remoto envía algunos paquetes a mi cliente, lo que los traduce en un mensaje que muestra en su interfaz. La cosa es: estas notificaciones realmente me molestan.

Dado que estas notificaciones no son nada vital para el cliente, comencé a analizar mis transmisiones TCP provenientes del servidor remoto. Noté un patrón obvio: cada vez que aparecen las notificaciones, me envían 4 paquetes específicos. Por ejemplo:

Flags [P.],  seq 60:297,                 ack 1,          win 257,    options [nop,  nop,    TS val 108022880 ecr 914609],    length 237
Flags [.],                               ack 6,          win 257,    options [nop,  nop,    TS val 108022891 ecr 915061],    length 0
Flags [P.],  seq 297:534,                ack 6,          win 257,    options [nop,  nop,    TS val 108022891 ecr 915061],    length 237
Flags [.],                               ack 11,         win 257,    options [nop,  nop,    TS val 108022904 ecr 915090],    length 0

Observé la comunicación TCP durante un tiempo y dejé que aparecieran varias notificaciones. Esto es lo que noté:

  • El servidor siempre envía paquetes 4 cuando solicita al cliente que me "notifique".
  • Estos paquetes siempre se organizan en el mismo orden: 237 bytes, 0 bytes, 237 bytes, 0 bytes.
  • El resto de la comunicación entre el servidor y el cliente no sigue ningún patrón (excepto cuando repetidamente hago las mismas solicitudes al cliente, por supuesto).

Desde que pude identificar un patrón, ahora me gustaría que mi máquina lo detecte cuando ocurra, y bloquee los paquetes asociados antes que lleguen al cliente.

He intentado usar el tamaño como parámetro de bloqueo usando:

iptables -I INPUT -p tcp -s [server-IP] -m length --length 237 -j DROP

Desafortunadamente, aún puedo ver los paquetes de 237 bytes que llegan al cliente ... ¿Hay alguna manera en que pueda ser lo suficientemente específico con iptables , para bloquear esta secuencia en particular, sin cerrar toda la comunicación? streaming?

Editar: la opción No mostrar notificaciones molestas no existe en el cliente, eso sería demasiado fácil, ¿no es así? Estas notificaciones se parecen mucho a los anuncios.

    
pregunta John WH Smith 13.06.2014 - 23:25
fuente

1 respuesta

2

No. Si elimina los paquetes desde el medio de una conexión, el servidor reenviará esos paquetes hasta que tengan éxito. Si no tienen éxito durante un tiempo suficientemente largo, el servidor asumirá que la conexión completa ha fallado y cerrará la conexión.

La razón por la que su regla de IPTables no coincide es que IPTables coincide con la longitud total del paquete, mientras que sus 237 bytes son la longitud de los datos en el paquete TCP. La longitud total del paquete es al menos 20 bytes más larga (puede ser más, dependiendo de las opciones de TCP).

Podrías establecer la conexión y eliminar el mensaje en la capa de la aplicación, pero eso dependería del protocolo en uso.

    
respondido por el David 13.06.2014 - 23:40
fuente

Lea otras preguntas en las etiquetas