
Actualmente estoy usandoNmapapara mapear redes locales en parte de mi programa, y me preguntaba cuánto tiempo llevaría realizar diferentes escaneos de puertos en todos los puertos.
¿Cuál es el tiempo de espera y el tamaño promedio del paquete enviado para verificar si el puerto está abierto (si los paquetes se envían para verificar) y existe alguna correlación con el tiempo necesario para escanear en función de estos y otros factores?
Me encantaría poder representarlos en un gráfico y posiblemente probar estos resultados también.
Sé que, en general, los escaneos de puertos UDP toman más tiempo que los TCP porque no tienen conexión y se utilizan muchos más recursos.
Respuesta1
Puede haber muchos factores involucrados, incluida la velocidad del enlace, el dúplex, el tamaño mínimo del paquete, el tiempo de ida y vuelta, la latencia del host de destino, si está involucrado o no un sistema de detección/prevención de intrusiones y cuántos viajes de ida y vuelta realiza el escaneo en particular. el tipo requiere, qué tan ocupado está el enlace, etc.
Entonces, supongamos que la máquina del escáner y el objetivo están en el mismo gigabit Ethernet, y estimaremos el tiempo mínimo teórico que puede tomar un escaneo de 65536 puertos. GigE siempre es full-duplex, tiene un tamaño mínimo de fotograma de 64 bytes y, después de calcular los espacios obligatorios entre fotogramas, tiene una velocidad máxima de fotogramas de 1.488.000 fotogramas de tamaño mínimo por segundo. TCP Syns, Syn-Acks, Acks (vacíos), Fins y Rsts son todos marcos de tamaño mínimo. En el GigE en el que estoy ahora, el RTT es de 0,3 ms (300 µs), así que supongamos que el host de destino responde a Syns con Syn-Ack o Rst dentro de esa misma latencia de 0,3 ms. Supongamos además que responderá con uno u otro; que no habrá ningún puerto "filtrado" para el cual simplemente tendremos que esperar un tiempo de espera arbitrario.
Entonces, el tiempo que lleva enviar TCP Syns a todos los puertos es: 65.536/1.488.000 = 44 ms
Dado que GigE es full duplex, las primeras respuestas comenzarían a llegar a medida que salieran los Syns posteriores, pero tendríamos que esperar 1 RTT entre el último Syn enviado y la última respuesta, así que agregue 1 RTT que es 0,3 ms, para un total de44,3 ms.
Incluso si tuviera un escaneo que tuviera que hacer dos viajes de ida y vuelta, todo el tráfico de su red podría realizarse en menos de un segundo.
Tenga en cuenta que si el host de destino no responde a Syns para algunos puertos, usted debe elegir durante cuánto tiempo establecer su tiempo de espera de "sin respuesta", en su propio algoritmo. Pero puedes pensar en eso como el RTT. Digamos que desea utilizar un tiempo de espera de 10 segundos. Aún puedes enviar todos tus Syns en 44 ms, pero es posible que tengas que esperar 10 segundos desde el último Syns enviado para determinar que no es probable que obtengas una respuesta de ese puerto. Entonces, incluso en el caso de que los 2^16 puertos no respondan y un tiempo de espera de 10 segundos, el tiempo total sería de 44 ms + 10 segundos = 10,044 segundos.