Demasiado tiempo sin escribir una entrada en el blog, aunque me gustaría y de vez en cuando tengo ideas pero el día a día nos come a todos, aunque esta entrada me parecía breve e interesante. Seguramente os habrá ocurrido que escaneando un target con los scripts de nmap se os cuelga en el 99,99% y no termina nunca, por lo que al final pierdes el output de esos scripts que buscabas.
También puede ocurrir que el porcentaje que inicialmente nos marca cambia, y del 85% pase al 64% por ejemplo, como se puede observar en la siguiente captura:
Esto es debido a que nmap actualmente muestra el tiempo basado en el número de threads completado vs comenzados, debido a esto y a la naturaleza de los scripts y puertos sobre los que se están lanzando, es posible que un thread abra otro thread y así sucesivamente por diseño, por lo que es difícil para nmap ofrecernos cuánto tiempo tardará el escaneo completo en terminar.
Esto podría solucionarse en cierta medida si se mostrara un contador para el número de «spawned threads» y basado en el número estimado de conexiones que hará el script, por lo que nmap podría hacer una estimación algo más acorde. Hablando con la gente envuelta en las pull request en freenode, resulta que hay una de hace pocos días sobre esto mismo, por lo que quizás en no mucho tiempo podríamos ver una mejora en nmap de estas características, y de paso, me he ahorrado abrir yo mismo el thread o duplicar info en la mailing list.
En cualquier caso y retomando el tema inicial del «cuelgue» de nmap en 99,99% lanzando NSE, existe un parámetro –script-timeout que se puede pasar por linea de comandos con valor –script-timeout=40m si ese es el tiempo estimado que tarda nmap en llegar hasta ese punto para que, una vez ahí, «mate» el hilo que se ha quedado colgado, pero mostrando toda la información restante de los demás scripts.
Un saludo!