Resultados 1 al 2 de 2

¿Port Knocking... ofuscación o capa de seguridad?

  1. #1 ¿Port Knocking... ofuscación o capa de seguridad? 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    El objeto de este artículo es recordar el concepto de "Port Knocking" y sus implicaciones de seguridad para en un posterior artículo reflexionar sobre "Single Packet Authorization" (SPA). "Port Knocking" no es un ingenio nuevo, lleva con nosotros desde 2003, pero es un tema recurrente en listas de correo y discusiones sobre seguridad.

    ¿Qué es "Port Knocking"?

    Todos hemos visto películas en las que alguien golpea cierta secuencia en la puerta de una taberna y si la secuencia era correcta el tabernero abre una rendija para solicitar una clave verbal. Si la secuencia de llamada no era correcta, ninguna medida se toma y el interesado cree que la taberna se halla cerrada. El concepto de "Port Knocking" es exactamente análogo.

    En informática, este concepto consiste en enviar paquetes a ciertos puertos en un orden específico con el fin de abrir un puerto en concreto. Este último puerto se halla cerrado por un cortafuegos siempre y cuando no se realice el barrido de puertos siguiendo la secuencia particular. De esta forma, si un atacante efectúa un escaneo del sistema, el puerto aparecerá cerrado aun estando el servicio asociado a él en funcionamiento, el cortafuegos hace un simple DROP si no se ha efectuado la secuencia de barrido previa.

    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.

    Si la secuencia correcta de inicializaciones ha sido efectuada, el puerto 22 se abrirá durante un lapso de tiempo determinado y únicamente para la IP que completó la secuencia previa. Una vez el puerto 22 se halle abierto, se pueden llevar a cabo medidas adicionales de autenticación.


    Polémica

    Muchos son los que defienden que "Port Knocking" no es una capa de seguridad sino una medida de ofuscación ("security by obscurity"). Lo cierto es que hay argumentos a favor y en contra de ambas afirmaciones.

    Acudiendo a las definiciones clásicas de los tipos de autenticación (algo que sabes, algo que eres y algo que tienes), este mecanismo se encuadraría en el primer conjunto. Ahora bien, si un atacante conociera la existencia de esta medida y fuera capaz de escuchar el tráfico (en lado cliente o servidor), esta medida de seguridad sería tan débil como las contraseñas que viajan en claro.

    Por tanto, como muchas otras técnicas, se trata de una línea de defensa que de manera aislada puede resultar muy débil, pero que junto con medidas adicionales puede proporcionar un nivel de robustez aceptable.


    Consideraciones de seguridad

    • Un atacante siempre podría intentar un ataque por fuerza bruta con el fin de descubrir la secuencia de puertos correcta, no obstante este ataque sería fácilmente detectado teniendo en cuenta su naturaleza ruidosa. Para una secuencia de 3 puertos, si el ataque recorre el rango de puertos 1 a 65535, esto implica que el ataque sería del orden de 655.353 tentativas, teniendo una esperanza de la mitad de este valor. Por tanto, como media, serían necesarios unos 140 billones de paquetes hasta conseguir la apertura del puerto deseado. Obviamente, esto se puede complicar mucho más incrementando el número de puertos de la secuencia.
    • Si un atacante ha conseguido la secuencia de puertos, nada le impide hacer un "replay" de la secuencia capturada contra el servidor para así abrir el puerto. Sería por tanto interesante que la secuencia mutara con el tiempo, que se hiciera algún tipo de Hash con información adicional (temporal, etc.) o alguna otra medida para impedir los ataques por "replay". No obstante ello implicaría sincronización cliente-servidor y/o involucrar otros campos de los paquetes que no fueran tan sólo los 16bits del puerto destino en la cabecera TCP. Como consecuencia de estas modificaciones, la medida se hace difícilmente escalable en situaciones donde hay un gran número de clientes.
    • Mucho más sencillo es hacer una denegación de servicio. Debido al lapso existente entre cada inicialización de conexión en la secuencia, un atacante puede simular y enviar paquetes para interrumpir la secuencia que está construyendo un usuario legítimo. Así, nada impide a un atacante el emplear herramientas como hping para forjar paquetes con la dirección IP de un usuario legítimo y enviar un flujo continuo hacia puertos aleatorios de la máquina servidor para que dicho usuario legítimo jamás sea capaz de completar una secuencia válida.
    • Por último en esta lista no exhaustiva de reflexiones, para un observador del tráfico de red, un "Port Knocking" es indistinguible de un escaneo de puertos. Muchos IDS detectan los escaneos de puertos y algunos no tienen forma de diferenciar lo que es un "Port Knocking" de lo que es un escaneo. Si el umbral de paquetes para alertar de un escaneo de puertos es lo suficientemente bajo, el "port knocking" podría introducir ruido no deseado en los logs del IDS.



    Aplicaciones

    • Imaginemos que deseamos correr un servidor SSH para compartir archivos con nuestros amigos. No deseamos que gusanos, automatismos y usuarios maliciosos encuentren el puerto del servidor SSH abierto en sus escaneos de reconocimiento para posteriormente lanzar un ataque por fuerza bruta que consume recursos y podría dar lugar a una intrusión. En este caso podríamos emplear "port knocking" para evitar "automatismos tontos". Obviamente, tras el "Port Knocking" deberíamos tener como mínimo una autenticación por usuario/contraseña, y además, deseablemente, autenticación basada en algún algoritmo de clave pública.
    • Una aplicación más oscura, y probablemente más popular, del "Port Knocking" es como método de ocultación de puertas traseras (ejemplo: cd00r.c). Muchos atacantes, tras haber instalado una puerta trasera en una víctima, la camuflan mediante "Port Knocking", de esta forma cualquiera que intente detectar anomalías basadas en la apertura de nuevos puertos difícilmente detectará la intrusión. Así, los servicios basados en herramientas como Nesus para detectar alteraciones en ciertas redes presentan una gran punto débil ante dichos ingenios y los profesionales de la seguridad no deberían tomar sus resultados como verdades absolutas.



    Conclusión

    "Port knocking" se basa en la comunicación de información en las cabeceras de los paquetes, lo cual limita severamente la cantidad de información que puede ser transmitida, y por tanto, su fortaleza como capa de seguridad. En una futura reflexión analizaremos otras técnicas como "Single Packet Authorization" (SPA), que presenta grandes ventajas sobre el mecanismo aquí estudiado.


    Más Información:

    An Analysis of Port Knocking and Single Packet Authorization
    Sebastien Jeanquier
    http://www.securethoughts.net/spa/

    Port Knocking
    http://www.portknocking.org/

    Port Knocking with IPTables
    http://www.neep.co.uk/index.php?tab=Projects&menu=Port%20Knocking

    Emiliano Martínez Contreras
    Hispasec
    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  2. #2  
    Colaborador HH
    Fecha de ingreso
    Jun 2006
    Ubicación
    Uruguay
    Mensajes
    1.451
    Descargas
    11
    Uploads
    0
    El año pasado asisti a una conferencia de software libre, donde me mostraron portknocko, era un programa desarrollado por dos estudiantes argentinos, era un extencion de netfilter para iptables.
    La presentacion era basada en un servidor SSH, al cual aplicaba este metodo para evitar ataques de fuerza bruta " evistar molestos script kiddies " como dijo el disertante.. ( yo me senti un poco incomodo cuando eso, en especial porque yo habia dado una charla antes que él y al final puse mi web.. que por charlas anteriores, no era muy bien vista ( qué estoy diciendo ? todo un canal de IRC contra mi por el nombre del dominio de mi web ) la palabra hacking por ahí )

    El disertante, decia que era un metodo de logging ( todo el proceso de port knocking ), que traia muchas ventajas, no era " seguridad por oscuridad " y en ese mometo me convencio

    ¿ Qué opiniones tiene los demas ?
    Louis Armstrong le dice a Ella Fitzgerald
    "take another drink of wine, and maybe you change your mind"
    Citar  
     

Temas similares

  1. ono capa conexiones p2p
    Por 54yk3r en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 1
    Último mensaje: 07-08-2008, 21:21
  2. Port
    Por Vbuletin en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 1
    Último mensaje: 11-09-2006, 22:57
  3. Primera grabadora de doble capa !
    Por LUK en el foro HARDWARE
    Respuestas: 1
    Último mensaje: 13-05-2004, 19:01
  4. Respuestas: 0
    Último mensaje: 10-10-2003, 21:36
  5. el port 80
    Por defcondos en el foro GENERAL
    Respuestas: 3
    Último mensaje: 07-04-2002, 19:17

Marcadores

Marcadores