Hace ya unas semanas que hice una primera introducción a esta téctica, y en este post, pretendo ampliarla, empezando con algunos ejemplos, y viendo algunas cositas mas…
Para empezar, en el anterior post, comente una primera teoria, pero veamos un primer ejemplo ilustrativo:
Tomemos como ejemplo un demonio sshd escuchando en el puerto 22/TCP.
Elegimos como secuencia de barrido la sucesión 43, 6540 y 82. El puerto
22 se abrirá si, y solo si, un usuario inicializa conexiones TCP hacia
los puertos 43, 6540 y 82 en ese orden exacto. En caso contrario el
usuario recibirá como respuesta un RST/ACK cuando intenta comenzar una
conexión hacia el puerto 22.
Como podeis ver en el ejemplo ( que es tal cual el que recibi), hablan de un demonio (o servicio) que «escucha» un puerto en concreto, pero que si antes no se ha iniciado una conexión con los puertos adecuados, este puerto original permanece «ofuscado», y el cliente recibira RST/ACK (para los que no conozcan, es un cierre de conexión), ya que segun el protocolo tcp/ip, se requiere, antes de iniciar ninguna transmisión de datos, la negociación de una conexión entre el cliente y servidor.
Bien, una vez que se ha realizado la conexión a los puertos adecuados, se podrá iniciar la conexión con el servicio ofrecido, pero que problemas existen?
Desde el punto de vista de la seguridad (algo que sabes, algo que eres, algo que tienes), esta técnica, se podrÃa encuadrar en el primer grupo, algo que sabes, ya que sabes una cierta combinación para hacer algo. Pero un atacante con experiencia, que intentase acceder a un sistema que ha ocultado el acceso usando port knocking? si dicho atacante, fuese capaz de escuchar tráfico, bien en el lado cliente o bien en el lado servidor, serÃa capaz de encontrar la secuencia de conexión sin mucho problema, por eso insistire en que esta técnica de manera aislada no sirve de nada, pero en conjunto con otras técnicas de autentificación puede resultar muy últil.
Y para terminar con esta entrega, veremos un par de consideraciones de seguridad:
Si un atacante pensara resolver el problema por fuerza bruta, intentando conectarse a todo el rango de puertos, mediante combinaciones de tres en tres (suponiendo tres el numero de puertos de la combinación) la cantidad de paquetes necesarios serÃa tan elevada que serÃa muy facilmente detectable, pero si elevamos la cantidad de puertos, la complejidad del problema se dispara exponencialmente.
Otro problema viene dado por los ataques de denegación de servicio, ya que entre que un cliente (de los de verdad) se conecta a cada uno de los puertos, hay un lapso de tiempo que puede ser aprovechado por un atacante para que construyendo un paquete adecuado, tire por tierra el intento de conexión del cliente de verdad, y os dejo la pregunta en el aire, como haria esto?
Y antes de acabar, dos preguntitas para que reflexioneis sobre el tema:
¿Qué ocurre si un atacante consigue la secuencia de puertos (y suponemos que no hay más medidas de seguridad por detras)? ¿Cómo se puede resolver este problema? ¿Qué tienen que ver aquà los mutantes?
Desde el punto de vista de un sistema para detectar intentos de intrusión por scaneo de puertos, el port knocking le es indistinguible de un scaneo de puertos normal y corriente. ¿Que pasarÃa con los ficheros de logs del sistema de detección?
Reflexionar sobre ello y en la 3º y última entrega veremos aplicaciones de esta técnica y una conclusión final de este tema.
Enlaces: Port Knocking (I)
febrero 21, 2008 at 2:16 pm
No sabÃa que estuvieras metido en el mundillo de la seguridad informática 🙂 Me tienes que pasar enlaces y demás, que es algo que siempre me interesó, pero que nunca exploré suficientemente a fondo.
PD: SÃ, te escribo ahora porque en mi lector de RSS tenÃa puesta tu dirección antigua, y sólo la cambié cuando avisaste a Isma (Kraziest). A partir de ahora te seguiré con más atención 🙂
febrero 21, 2008 at 2:23 pm
jejeje, hombre algo metidillo estoy, pero vamos que no soy para nada un experto, simplemente me llaman la atención algunas cosillas de este estilo.
Si te interesan estos temas, suscribete al boletin de hispasec, que suelen mandar cosillas chulas.
P.D: asias por refrescar tu rss xD me alegra que sigamos en contacto mas alla de ogame 😉
febrero 22, 2008 at 1:57 pm
niano niano…
febrero 23, 2008 at 7:52 pm
niano niano 2…
marzo 18, 2008 at 7:29 pm
ah!! qué fuerte!! Gzu no contesta en lenguaje informático, sino en lenguaje bebé!! qué está pasando????? xDD
chemi, necesitamos que publiques cosas mundanas… xDD
abril 23, 2008 at 8:44 pm
ZZZZZZZZzzzzzzzzzZZZZZZZZ
*Abuelo Simpson durmiendo*
mayo 13, 2008 at 9:53 pm
¡ACTUALIZACION! xD
mayo 13, 2008 at 10:51 pm
ke noooooooooo!!! paciencia
mayo 14, 2008 at 6:07 pm
KAAAAAAAAAAAAAAAAAA!
mayo 15, 2008 at 3:08 pm
¡Ponzoña!
junio 12, 2008 at 8:36 pm
voy a morir de hambre antes de que actualices…
junio 13, 2008 at 6:26 pm
Knock knock
Who is there?
It’s me, I kill you!
agosto 11, 2008 at 3:54 pm
jopé, chemis, si es que te pones muy pesado cuando no publicas…