Зачем nmap -pи сканирование nmap -A показывают разные результаты?

Зачем nmap -pи сканирование nmap -A показывают разные результаты?

У меня есть приложение C#, написанное мной, которое прослушивает порт 789. Оно работает на компьютере с Windows XP Professional. Работает

netstat -an | find "789"

TCP    0.0.0.0:789            0.0.0.0:0              LISTENING

Когда я запускаю приложение nmap -A -vv ipна другой машине Linux (но в той же подсети), оно сообщает только о других открытых на хосте портах (например, mysql, vnc и т. д.), но не о порте, открытом моим приложением.

Однако, когда я бегу, nmap -p 789 ipя получаю:

PORT     STATE   SERVICE
789/tcp  open  unknown

Почему есть разница между двумя сканированиями nmap? Можно ли что-то сделать, чтобы nmap обнаруживал открытый порт при выполнении полного сканирования?

решение1

По умолчанию nmap сканирует только "общие" порты (1000 наиболее распространенных портов на протокол, как я полагаю). Поскольку 789 не является общим портом, он не найден. Если вы это сделаете

nmap -A -vv -p- ip

он должен сканировать порты 1-65535.

Вот документация nmap, в которой указано, какие порты сканируются по умолчанию: http://nmap.org/book/man-port-specification.html

решение2

Единственный способ сделать это — изменить файл служб nmap, что не рекомендуется. Эта -Aопция запускает расширенные опции, включая обнаружение служб, обнаружение ОС, трассировку и т. д. — она не сканирует весь диапазон. Если вы хотите сканировать все порты 65k, используйте опцию -p-. В остальном вам просто нужно указать порт с помощью -p 789. Лучшим вариантом, вероятно, будет создание псевдонима, который делает nmap -p 789, чтобы сэкономить время.

Если вам действительно нужно изменить файл служб (по умолчанию /usr/local/share/nmap/nmap-services), найдите строку, которая гласит, unknown 789/tcp 0.000075и замените ее на имя вашей программы, и добавьте номер в конце в 0.9, так что это будет верхний порт, который включает nmap. Хотя псевдоним был бы намного лучше.

решение3

Я не уверен. Он определяет его как "открытый", что вам и нужно, верно? Так что этоявляетсяпрослушивание. Почему его не находят с -A, я не уверен.

Редактировать - это из старой документации, которая может не относиться к вашей версии. Запустите man nmapи сообщите нам, какая у вас версия.

Из документов я вижу:

«По умолчанию сканируются все порты от 1 до 1024, а также все порты, перечисленные в файле служб, который поставляется с nmap».

Итак, 789 следует сканировать, даже если его нет в вашем файле служб (поскольку он помечен как «неизвестный», я уверен, что это не так).

Так что я не знаю. Проверьте свой man-файл для вашей версии nmap, может быть, его поведение относительно того, какие порты сканировать с помощью -A, отличается от документа, который я нашел?

Это маловероятно, но может быть стоит исследовать - разница может быть в вашем идентификаторе пользователя на машине Linux. Привилегированные и непривилегированные пользователи NMap имеют разные типы сканирования по умолчанию. Пользователи с правами root могут выполнять сканирование TCP SYN, пользователи без прав root будут по умолчанию использовать TCP connect() .

решение4

Команда nmap -Aявляется агрессивной, так как она запускает несколько скриптов в фоновом режиме, и это главная причина, по которой она даст вам больше результатов. Она объединяет определение версии -sVс определением операционной системы -O(заглавная буква O, а не цифра ноль) и другими скриптами обнаружения. Nmap по умолчанию, и если не указан конкретный номер порта, будет сканировать первые 1000 наиболее распространенных портов (они указаны вnmap-сервисыфайл, который вы можете редактировать). Агрессивную команду можно скормить портам, которые вы хотите сканировать, чтобы вы не получили результаты для других портов, кроме того, который вы хотите сканировать, TCP 789

nmap -p 789 -A TARGET_IP_ADDRESS_OR_IP_RANGE

тогда как если вы хотите только проверить, открыт/закрыт/фильтруется ли порт, в вашем случае 789

nmap -p 789 TARGET_IP_ADDRESS_OR_IP_RANGE

Так как -Aон выполняет несколько скриптов и производит много шума (с точки зрения сетевого трафика), его легко обнаруживают системы обнаружения вторжений (IDS), и, скорее всего, он будет заблокирован брандмауэрами или системами предотвращения вторжений (IPS), и это может быть одной из причин, по которой он не отображает правильный статус порта.

Связанный контент