Задача: быстро отсканировать с помощью nmap большую подсеть.



Из-за количества хостов сканирование будет длиться сутки, неделю или больше, а с данными хочется работать в ближайшее время.

Одно из решений - это использовать многоходовочку, поделить сканирование на несколько шагов и быстро получить данные самых популярных портов, пока редкие порты сканируются.



Играемся с таймаутом RTT, таймаутом хостов (tarpit еще никто не отменял), количеством попыток на ответ и другие настройки.

Но если нам нужно увеличить точность, то запускаем с -Pn, если скорость, то без него.



Кстати, nmap умеет импортировать данные предыдущего сканирования и работать уже с ним, например,

nmap --script-args newtargets,state=up,iX=scan.xml

запустит сканирование взяв в качестве целей для сканирования хосты из файла scan.xml, которые находились в статусе up в тот момент.



Важно, что если у хоста не будет открытых портов из топа, то он не попадет в выдачу первого шага, и втором и третьем шаге его попросту не будет.



Ставим как исходящий порт - 53 (DNS), чтобы обмануть некоторые наркоманские настройки фаерволов, получаем подобный скрипт.



Во время сканирования забираем полученные XML файлы, загружаем в нужный нам софт.



В других случаях используем Masscan и RustScan.