Назад | Перейти на главную страницу

Why do nmap -p <port> а nmap -A сканы показывают разные результаты?</port>

У меня есть приложение 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 обнаружил открытый порт при полном сканировании?

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

nmap -A -vv -p- ip

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

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

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

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

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

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

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

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

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

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

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