¿Cómo se puede detectar un escaneo TCP SYN / ACK en un firewall de inspección de paquetes con estado?

Si su firewall está examinando todos y cada uno de los paquetes que se le envían, entonces un “escaneo” de sus hosts o redes sería una serie de paquetes TCP_SYN con diferentes números de puertos de destino de un solo host, o una única red de máscara de red pequeña, dentro de un “pequeña” cantidad de tiempo.

Esto plantea algunas interesantes preguntas de seguimiento:

  • ¿Cuántos números de puerto diferentes constituyen un “escaneo”?
  • ¿Qué tan grande o pequeño período de tiempo deben agruparse estos paquetes para ser un “escaneo”?
  • ¿Qué tan grande o pequeño debe agruparse un número de direcciones IP remotas distintas para constituir un “escaneo”?

“Lo sé cuando lo veo” es un poco difícil de traducir al código del programa.

Tenga en cuenta que el escaneo, aunque posiblemente sea el preludio de un ataque, no es en sí mismo un acto hostil, ya que es muy difícil distinguir entre:

  • un paquete cuyo propósito es configurar una conexión TCP real a un servicio o demonio en uno de sus hosts, y
  • un paquete que se envía para determinar qué servicios ofrecen sus hosts.

Si responde de una manera que no sea completamente pasiva (por ejemplo, enviando un paquete de respuesta / defensa, o cualquier otra cosa que no sea un paquete ICMP “puerto inalcanzable” o TCP SYN_ACK), es posible que responda a una indicación falsamente positiva de un “escaneo” cuando haya no es uno, y posteriormente tener que explicarte a un compañero amigable.

Además, tenga en cuenta que existen mitigaciones contra los criterios de la política del detector de escaneo: use más hosts, extienda las sondas a tiempo, etc.

Un escaneo SYN verifica qué puertos aceptan conexiones. En su encarnación más simple, intenta conectarse al puerto 0, luego al puerto 1, y así sucesivamente hasta 65536, el puerto más alto.

Probablemente no responde a ningún puerto abierto que responda con un SYN / ACK.

Entonces, una forma de detectar un escaneo es buscar solicitudes de conexión entrantes, puertos cerrados, tal vez todos provenientes de la misma dirección IP, y cuando llegan a un puerto abierto no responden al SYN / ACK. O si responden, no envían ningún dato.

Un escáner realmente inteligente podría intentar evitar estas pruebas, accediendo a los puertos en un orden aleatorio o con un rango falso de direcciones IP, o podrían responder a SYN / ACK para aparecer como un conector válido, o incluso podrían enviar algunos datos válidos, como “GET /”.

Dado que hay tantos puertos para escanear, probablemente harán muchos intentos por segundo, por lo que otra forma sería contar la tasa promedio de conexiones entrantes, y si la tasa aumenta a más del doble de la tasa promedio , o si todas las solicitudes provienen de una dirección IP o, en su mayoría, de la misma subred, es probable que se trate de un escaneo de puertos.

Un escáner de puerto inteligente real escanearía muchas direcciones IP diferentes a la vez, con pausas aleatorias y con números de puerto aleatorios y números de secuencia aleatorios. Sería más difícil de detectar si los intentos de conexión se produjeron en segundos. Aún así, no hay ninguna razón para que alguien se conecte a otros puertos que no sean “conocidos”, por lo que puede filtrar eso. Cualquiera que inicie una conexión a cualquier puerto por encima de 1024, probablemente sea un escaneo de puertos allí mismo.

Un escaneo SYN / ACK sería fácil: solo busque paquetes con el conjunto SYN / ACK que provengan de pares de host y puerto con los que no inició una conexión. Lo mismo para la exploración ACK: si no envió un SYN / ACK, no debe esperar un ACK. Los firewalls sin estado pueden pensar que estos provienen de una conexión ya existente y dejarlos entrar (para que el servidor los instale RST en su interior, pero esto aún le brinda información valiosa).

Si ve una gran cantidad de SYN sin sus objetivos enviando una respuesta correspondiente. Esta alta tasa de falla es una posible señal de un escaneo.

El resto mira la respuesta de Erik Fair a ¿Cómo se puede detectar un escaneo TCP SYN / ACK en un firewall de inspección de paquetes con estado ?.

El firewall SPI mantiene los estados de conexión de todas las conexiones TCP que lo atraviesan. Un simple monitor de paquetes en el firewall debe revelar todo el proceso TCP.