Los números de puerto de origen normalmente se eligen al azar para no interferir con los servidores que escuchan en puertos "conocidos". Si la máquina A es un cliente a la máquina B (por ejemplo, B es su servidor SSH), el núcleo en A normalmente elegirá un puerto "alto" libre aleatorio, porque si elige el puerto N , evitará cualquier posible conexión de B a un servidor que se ejecute en A y que esté vinculado al puerto N .
Sin embargo, es trivial elegir un puerto de origen específico; se trata de una simple llamada bind()
antes del connect()
. Para valores de puerto inferiores a 1024, en los sistemas Unix, esto requiere root
privilegios, pero podemos suponer que el atacante es root
en su propia máquina. ¿Por qué un atacante haría eso? Probablemente engañar reglas de firewall mal escritas. Algunos administradores de sistemas simplemente permiten paquetes con valores de puerto bajos en el supuesto (erróneo) de que un puerto bajo solo puede estar en el lado del servidor de una conexión.
Para el registro, el puerto 11 es para el servicio systat
, una forma tradicional para que los administradores de sistemas recopilen cierta información del sistema en tiempo de ejecución en sus máquinas.