martes, 30 de abril de 2013

DEFENSA OFENSIVA POR OSCURIDAD-PORT KNOCKING II



Antes de comenzar, GRACIAS a todos por la acogida,los "likes", "tweets", los comentarios y las críticas .. y como el público manda y parece ser que la "escritura" ese día no estaba como debía .. bueno, hoy seremos más ingenieros de seguridad que "colegas" ;) ... (aunque mi toque no lo pierdo . :P )

En esta segunda entrega vamos a ver que se puede hacer si quisiéramos atacar una defensa perimetral donde existi un port-knocking.. o visto de otro modo, cuales son las vulnerabilidades de esta "defensa"?

Exsiten voces que claramente abogan por la revisión completa de los mecanismos usados en Port-Knocking para la autenticación debido a los problema de (in)seguridad que conllevan y hace que sea vulnerable a lo que se conoce hoy y vamos a ver. NAT-Knocking

Pero recordamos rápidamente cual es la secuencia de autenticación.

1-El cliente comienza a hacer conexiones a los puertos, con el fin de generar entradas en el registro del servidor.

2-El servidor está analizando ese registro, y cuando detecta una secuencia válida se calcula el puerto de servicio (puerto 22 pongo siempre de ejmplo...) y la dirección del cliente

3-Se modifica la política de conexión con el fin de abrir el puerto que ha solicitada el cliente .

Desde el punto de vista del cliente, los puertos que tienne que hacer el “golpeo” "se puede calcular como:

p1 = f1 (puerto abrir, dirección del cliente; :::) (1)
p2 = f2 (puerto abrir, dirección del cliente; :::), (2)

etc. . , Donde p1 es el primer puerto utilizado en la secuencia de “golpeo”, P2 es la segunda, etc. .

Desde el punto de vista del servidor, todos los parámetros del servidor “golpeando” el puerto se tienen que tener en cuenta en la modificación de las políticas del cortafuegos que pueden expresarse como:

Puertos_abierto = f3 (p1, p2; :::; pn), (3)

IP_permitida f4 = (p1, p2; :::; pn), (4)

y así sucesivamente....



                                        Mecanismo de Autenticación Port-Knocking

NAT-Knocking<Burlando al Firewall>

Al compartir la misma dirección de red nos podemos encontrar con un serio problema de seguridad cuando estamos “Nateando”.

De nuevo ( si, soy muy pesado si … pero no se te olvida, ya verás ..) y como indico y repito , el port-knocking se basa en la idea de la apertura de puertos en el cortafuegos sólo para los clientes que han proporcionado la contraseña correcta a través de los “golpes” correctos contra el servidor. Para indentificar quien el el cliente al que se le debe abrir o no, el port-Knoking recae sobre la dirección de red del cliente.

Pero sin embargo, esto plantea la cuestión de lo que podría suceder si dos clientes comparten la misma dirección .. Por ejemplo “Nateando” (NAT)

Como se muestra más adelante en la Figura 2, cuando los paquetes desde el interior de la NAT salen de la red privada todos ellos comparten la misma dirección de origen (la dirección pública del NAT) y los paquetes no se pueden utilizar para identificar la fuente que existe detrás del NAT SIN PODER ACCEDER A LAS “TABLAS DE NATEO DEL ROUTER”

Como el port-knocking se basa en la dirección de red para abrir los puertos necesarios para los clientes de “confianza”, no puede diferenciar entre todos los clientes detrás de la misma dispositivo NAT. Como resultado de ello, cuando un cliente en una red que utiliza el mismo NAT se identifica ante el servidor “tocando” el puerto obtiene acceso total al puerto de servicio, que le ha dado por utiizar el mismo dispositivo para hacer NAT (y, en consecuencia, comparte la misma dirección de red pública).

Por otra parte, cuando el usuario es de confianza "golpeando" el cortafuegos no hay
necesidad de que un atacante potencial tenga que "ver" la secuencia de autenticación, sólo
hay que esperar hasta que el puerto de servicio está abierto para tener acceso a ella sin saber la secuencia de autenticación. Un ejemplo puede verse en la Tabla 1: Cliente
172.16.8.102 es el usuario autorizado que autentifica utilizando enfleche portk con

Tabla 1. Captura de red del ataque NAT-Knocking

No. Fuente Destino Info Protocolo

1 172.16.8.102 163.117.149.93 TCP 32987! 7682 [SYN]
2 172.16.8.102 163.117.149.93 TCP 32988! 7697 [SYN]
3 172.16.8.102 163.117.149.93 TCP 32989! 7810 [SYN]
4 172.16.8.102 163.117.149.93 TCP 32990! 7800 [SYN]
5 172.16.8.102 163.117.149.93 TCP 32991! 7811 [SYN]
6 172.16.8.102 163.117.149.93 TCP 32992! 7809 [SYN]
7 172.16.8.102 163.117.149.93 TCP 32993! 7673 [SYN]
8 172.16.8.102 163.117.149.93 TCP 32994! 7686 [SYN]
9 172.16.8.102 163.117.149.93 TCP 32995! 7603 [SYN]
10 172.16.8.102 163.117.149.93 TCP 32996! 7682 [SYN]
11 172.16.8.102 163.117.149.93 TCP 32997! 7602 [SYN]
12 172.16.8.102 163.117.149.93 TCP 32998! 7887 [SYN]
13 172.16.8.102 163.117.149.93 TCP 32999! 7699 [SYN]
14 172.16.8.102 163.117.149.93 TCP 33000! 7808 [SYN]
15 172.16.8.102 163.117.149.93 TCP 33001! 7629 [SYN]
16 172.16.8.102 163.117.149.93 TCP 33002! 7602 [SYN]
17 172.16.8.102 163.117.149.93 TCP 33003! 7686 [SYN]
18 172.16.8.102 163.117.149.93 TCP 33004! 7663 [SYN]
19 172.16.8.102 163.117.149.93 TCP 33005! 7655 [SYN]
20 172.16.8.102 163.117.149.93 TCP 33006! 7692 [SYN]
21 172.16.8.102 163.117.149.93 TCP 33007! 7992 [SYN]
22 172.16.8.102 163.117.149.93 TCP 33008! 7839 [SYN]
23 172.16.8.102 163.117.149.93 TCP 33009! 7637 [SYN]
24 172.16.8.102 163.117.149.93 TCP 33010! 7990 [SYN]
25 172.16.8.102 163.117.149.93 TCP 33011! 80 [SYN]
26 163.117.149.93 172.16.8.102 TCP 80! 33011 [SYN, ACK]
27 172.16.8.102 163.117.149.93 TCP 33011! 80 [ACK]
28 172.16.8.102 163.117.149.93 HTTP GET / HTTP/1.1 info.php
29 163.117.149.93 172.16.8.102 TCP 80! 33011 [ACK]
30 163.117.149.93 172.16.8.102 HTTP HTTP/1.1 200 OK
31 172.16.8.100 163.117.149.93 TCP 1196! 80 [SYN]
32 163.117.149.93 172.16.8.100 TCP 80! 1196 [SYN, ACK]
33 172.16.8.100 163.117.149.93 TCP 1196! 80 [ACK]
34 172.16.8.100 163.117.149.93 HTTP GET / HTTP/1.1 info.php
35 163.117.149.93 172.16.8.100 TCP 80! 1196 [ACK]



Podemos ver en la figura 2 como dos hosts A y B comparten la misma IP pública
abordar, por lo que tienen que utilizar NAT para acceder a otras redes. El Paquete 1 (creado por A) se traduce en el paquete 2, donde la dirección de origen y el puerto han cambiado a la dirección pública y un puerto libre en el dispositivo NAT. El mismo proceso es realizado con el paquete 3 de B. Como se puede ver, desde el exterior de la NAT es
imposible determinar qué paquete proviene de qué origen usando esa dirección ( source addresses)






Los Hosts A y B que comparten la misma red con la dirección del servidor 163.117.149.93 Y VEMOS que solicita la apertura del puerto 80. Podemos ver todos los “golpes”(knocks”) enviados al servidor ( mirar del 1 a 24 ) y cómo, después de que el cliente es capaz de conectarse al puerto 80 procede a establecer con la comunicación normal ( del 25 al 30 )

Sin embargo, la dirección 172.16.8.102 cliente está “NATEANDO”, y otro cliente en el mismo red (172.16.8.100) puede conectarse PERFECTAMENTE SIN NECESIDAD de hacer ese golpeo de puertos (del 31 al 35).

Espero que os haya parecido interesante, porque todavía quedan más....

Un saludo

Live Free Or Die Hacking
5 0verl0ad Labs: DEFENSA OFENSIVA POR OSCURIDAD-PORT KNOCKING II Antes de comenzar, GRACIAS a todos por la acogida,los "likes", "tweets", los comentarios y las críticas .. y como el ...

2 comentarios:

peib0l dijo...

Una cosilla, si implementas eae tipo de seguridad, lo logico ya que vas a estar detras del nat y seguramente unos cuantos routers es que el admin lo tendra configurado para accesos a traves de VPN's... por lo que un ataque externo seria inutil no? ¿O lo entendí mal... XD?

secnight dijo...

Buena observación .. pero estás asumiendo dos cosas.. Una que el "admin" sabe y conoce el nat-knocking y tiene todo configurado para evitar este "bypassing" y dos que lo tendrá todo por VPN´S .. No vamos a asumir nada, pero atendiendo estrictamente a tu pregunta, un ataque externo no sería viable .. Si tengo controlado los host dentro del "NATEO" ( puedes hacer aquí varias cosas para "el no control") y he hecho los deberes .. El ataque no ha lugar.. pero de eso se trata en todos los ataques no? Si lo deberes están hecho raro que pase algo.. ;) Muchas Gracias campeón por el interés mostrado. Un saludo muy fuerte

< >