Remarks
Realmente me disculpo si este contenido no coincide con la comunidad, pero no estoy siendo aprobado en las listas de correo electrónico y no sé qué puedo hacer por lo mismo, por lo que siento que este puede ser un buen lugar para hacer consultas.
Pregunta
Información de configuración
Estoy utilizando el (versión 2.9.8.0) spp_sfportscan preprocesador de snort para la detección del escaneo de puertos.
Tengo tres sistemas A, B, C:
A - corriendo snort
B, C: instalado con nmap para portscan
Realizo un escaneo de puertos TCP rápido desde B y confirmé que el preprocesador está detectando el escaneo de puertos (Detalles de registro en el directorio de registro).
Duda
Noté que si estoy haciendo el mismo escaneo de puertos TCP por segunda vez desde el sistema B o desde el sistema C, snort no está detectando el escaneo de puertos.
En resumen, snort está detectando el puerto de puertos TCP solo por primera vez y la próxima vez que se realiza el mismo puerto de puertos TCP desde la misma máquina o desde una máquina diferente, no lo detecta.
Pasos tomados
Para obtener información, entré en el código preprocesador / portscan.c y descubrí que en la función:
static int ps_alert_one_to_one(PS_PROTO *scanner, PS_PROTO *scanned,PS_ALERT_CONF *conf)
la condición :: IF(SCANNED->PRIORITY_COUNT >= CONF->PRIORITY_COUNT)
se cumple para la primera vez que se realiza portscan y no se satisface desde la segunda vez en adelante.
Por lo tanto, he comprobado dónde se está incrementando PRIORITY_COUNT y luego imprimí su valor, esta es la función en preprocesador / portscan.c
static int ps_proto_update(PS_PROTO *proto, int ps_cnt, int pri_cnt, sfaddr_t* ip, u_short port, time_t pkt_time)
if(pri_cnt)
{
proto->priority_count += pri_cnt;
///printf("proto->priority_count::%hi\n",proto->priority_count);
.........
.........
}
Los valores impresos por esta declaración printf, claramente satisfechos
la condición :: IF (SCANNED- > PRIORITY_COUNT > = CONF- > PRIORITY_COUNT)
Pero, sorprendentemente, como mencioné anteriormente, esta condición no se cumple en la función ps_alert_one_to_one.
¿Alguien puede explicar cuál es la razón de esto, y sería bueno si alguien nos diera una idea de la vida de los paquetes dentro de Snort?