Вопрос или проблема
Существует ли команда в nmap или в каком-либо другом инструменте, которая остановит сканирование и перейдет к следующему IP, если будет найден хотя бы один открытый порт?
Необходимо выполнить это для обнаружения хостов на нескольких активов, у которых отключен пинг.
Например: На конкретном активе открыты порты 80, 443, 445. Nmap обнаруживает, что порт 80 открыт, не проверяет порты 443 и 445 и переходит к следующей указанной цели.
Именно так работает обнаружение хостов в Nmap. Он отправляет запрошенные пакеты и прекращает проверку каждой цели, как только получает однозначный ответ.
По умолчанию отправляемые пакеты (при наличии соответствующих привилегий) включают ICMP Echo Request (также известный как “пинг”), TCP SYN на порт 443, TCP ACK на порт 80 и ICMP Timestamp Request. Вы можете выбрать другие пакеты, используя -P
параметры обнаружения хостов.
Если вы не хотите выполнять полное сканирование портов, а только нуждаетесь в компоненте обнаружения хостов, используйте опцию -sn
, чтобы отключить сканирование. Вы также можете использовать опцию -n
, чтобы избежать выполнения обратного DNS-запроса для любых обнаруженных целей.
Ответ или решение
Да, Nmap обладает встроенной функциональностью, которая позволяет прекращать сканирование при обнаружении открытого порта. Это работает, поскольку Nmap останавливает дальнейшее сканирование хоста, как только получает однозначный ответ.
Для выполнения задачи, описанной вами, вы можете использовать опцию -Pn
(для сканирования без ICMP-эхо запросов) и -p
(для указания конкретных портов). Однако, если ваша цель — просто обнаружить хосты и не выполнять полный порт-скан, оптимальным вариантом будет использование команды -sn
, которая отключает дальнейшее сканирование портов после того, как хост будет обнаружен.
Пример команды, которая осуществляет только обнаружение хостов:
nmap -sn -Pn <target>
Здесь -Pn
отключает проверки на доступность (например, пинг), что полезно, если хосты имеют отключенный пинг. Опция -sn
отвечает за обнаружение хостов без выполнения полного порт-сканирования.
Если вы хотите сканировать определенные порты и прекратить сканирование сразу после нахождения открытого порта, такой функции в Nmap не существует напрямую. Однако вы можете использовать скрипты Nmap (с помощью опции --script
), чтобы настроить логику выполнения:
nmap -p 80,443,445 --script <your_script> <target>
В этом случае вам нужно будет разработать кастомный скрипт, который остановит дальнейшее сканирование при нахождении открытого порта.
Для автоматического перехода к следующему IP-адресу при обнаружении открытого порта можно использовать более сложные инструменты сканирования, такие как Masscan или специализированные скрипты на Python, которые могут управлять процессом в необходимом вам формате.
Таким образом, для вашей задачи, если хотите работать только с Nmap, используйте -sn
и -Pn
для базового обнаружения хостов. Для более детализированного подхода лучше всего воспользоваться скриптами или интегрировать Nmap с другими инструментами, которые обладают такой функциональностью.