Si un puerto detrás de NAT envía un paquete a un host malicioso, ¿puede ese host enviar paquetes a cualquier puerto abierto o solo al puerto que envió el paquete?

Si un puerto detrás de NAT envía un paquete a un host malicioso, ¿puede ese host enviar paquetes a cualquier puerto abierto o solo al puerto que envió el paquete?

Por ejemplo, una computadora detrás de un enrutador NAT usa Skype. Skype utiliza el puerto 4000 para enviar paquetes a un servidor para establecer conexiones indirectas con otros clientes de Skype.

Dado que Skype había enviado un paquete al servidorprimero, el servidor obviamente puede enviar paquetes al enrutador que utiliza NAT.

Mi pregunta es, considerando que el enrutador está usando NAT, ¿ese servidor puede enviar paquetes a cualquier puerto abierto/reenviado que tenga NAT, o solo al puerto 4000?

Sé que los servidores de Skype no son nada maliciosos, fue sólo un ejemplo.

Respuesta1

Para el tráfico entrante iniciado por otros: un host malicioso siempre puede enviar datos a cualquier puerto de su enrutador (Escaneo de puertos). Si el puerto no se reenvía, su enrutador puede decidir si descarta el paquete no solicitado o responde cortésmente que la conexión no es válida. Si el puerto fue reenviado, llegará al host final detrás del enrutador.

Para el tráfico saliente iniciado por su host: no existe ninguna regla sobre qué puerto de origen debe utilizar para comunicarse con el servidor de retransmisión de Skype. Además, en su host final, Skype podría usar TCP 4000, pero NAT podría usar otro puerto para enviar el mensaje, digamos el puerto A. El servidor de Skype solo ve el puerto A, no el puerto 4000. Si el servidor de Skype responde a un puerto que no sea A , se aplica la situación descrita en "Para tráfico entrante". Si el servidor de Skype responde al puerto A, entonces NAT lo enruta de regreso a su host enviándolo al puerto 4000.

Para aclarar: el NAT (Traductor de direcciones de red) es su enrutador. Y no confunda la parte "Para el tráfico entrante" con la respuesta de la red a su host. En realidad, significa que el servidor externo es el primero que habla con su host para establecer una conexión.

Respuesta2

La respuesta simple es "sólo puede enviar paquetes (al cliente detrás del enrutador NAT) al puerto que envió el paquete". Aunque esto es en gran medida correcto, aunque no del todo.

La respuesta depende de la forma en que esté configurado IPTables, el puerto en cuestión y los módulos utilizados. Los dispositivos nat simples solo permitirían mapear el tráfico al mismo puerto del que proviene, sin embargo, no todos los dispositivos son tan simples. En Linux y otros sistemas operativos, obtienes "cortafuegos con estado", donde normalmente se utilizan puertos "establecidos y relacionados", junto con varios módulos que analizan los estados de conexión; por ejemplo, si se realiza una solicitud FTP saliente (puerto 21), el enrutador puede También abra el puerto 20 para datos si el módulo FTP está cargado. También es posible que FTP abra otros puertos, y un servidor malicioso podría hacerlo para acceder a un puerto arbitrario con un número alto. Algunos módulos de seguimiento comunes que podrían aprovecharse incluyen FTP, SIP, Netbios, PPTP, gre, tftp, h323, irc. Existe un error CVE-2014-8160 que puede permitir la omisión arbitraria del firewall cuando se utiliza el seguimiento de conexiones bajo ciertas condiciones, posiblemente de la forma que usted contempla.

Sería bastante difícil para un servidor malicioso abrir otros puertos, pero puede que no sea imposible. Por supuesto, necesitaría algo vulnerable escuchando en los otros puertos y (en Linux), podría mitigar este riesgo asegurándose de que sus reglas de seguimiento de conexión vengan después de las reglas que niegan el acceso general a esos puertos.

información relacionada