По завершению этапа обнаружения, nmap переходит к сканированию портов в поиске интересных служб. По умолчанию сканируется 1000 самых популярных портов при помощи SYN сканирования. Большая часть сканирования доступна лишь для привилегированных пользователей.
Причина в том, что nmap отправляет и получает сырые пакеты, а это требует доступа root или администратора. Nmap старается предоставлять точные результаты, но держите в уме, что все эти результаты основываются на пакетах возвращаемых целевыми машинами или фаерволом, который расположен перед ними. Хостам можно и не доверять, они могут отправлять пакеты для введения в заблуждение или дезинформации сканера. Весьма сильно распространены хосты работающие не по RFC стандартам, которые не отвечают на запросы nmap так как должны были бы. Сканирования Null, Fin и Xmas особенно зависимы от этой проблемы. Всего в nmap доступно с десяток приемов сканирования и лишь один метод может быть использован за один подход. За исключением UDP сканирования и любого из SCTP сканирования, они могут быть использованы с любым из TCP сканирований (sS/sT/sA/sW/sM).
Все TCP сканирования начинаются со строчной "s" за которой следует как правило первая буква из названия сканирования. Например:
-sS - это SYN сканирование,
-sT - Connect,
-sA - ACK сканирование,
-sW - для Windows,
-sM - Maimon,
-sU - для UDP,
-sN - Null,
-sF - FIN,
-sX - Xmas.
В основном используются: sS, sA, sU.
-sS - SYN сканирование, очень быстрое. Оно также относительно не заметное и скрытое, поскольку никогда не устанавливает TCP соединение полностью. Пример:
nmap 192.168.1.35 -sS -v
-sT - TCP Connect сканирование. Используется по умолчанию если SYN сканирование не доступно. Обычно так происходит если работать не из под root (у вашей учетной записи нет права на использование сырых пакетов). Выполняется дольше, чем SYN сканирование и устанавливает соединение. Пример:
nmap 192.168.1.35 -sT -v
-sU - UDP сканирование. Работает медленнее, чем TCP или SYN сканирование, но с его помощью могут быть обнаружены UDP службы, которые можно проэксплуатировать.
-sY - SCTP сканирование. Протокол передачи с управлением потока. В основном используется для служб связанных с ss7 и sectran в мобильных и сотовых сетях. Если вы не работаете с такими сетями, то понятно, что ничего не сможете обнаружить по SCTP.
-sA - ACK сканирование. Это сканирование отличается от перечисленных ранее тем, что оно никогда не определяет открытые или даже открытые/фильтруемые порты. Оно используется для выявления правил фаервола. Для определения: запоминает ли фаервол состояния или нет, и какие порты фильтруются.
-sW - Windows сканирование. Практически тоже, что и ACK сканирование за исключением того, что оно использует особенности реализации определенных систем, для разделения портов на открытые и закрытые (вместо того, чтобы всегда при получении RST пакета выводить: не фильтруется).
-sN - при TCP Null сканировании не устанавливаются никакие биты, в TCP заголовке 0 флагов.
-sF - при FIN сканировании устанавливаются только TCP FIN бит.
-sX - при Xmas сканировании устанавливаются FIN PSH и URG флаги, которые раскрашивают пакет как рождественскую елку. Отсюда и название: Xmas-рождество.
sN/SF/sX - используют незаметную лазейку в TCP RFC, для разделения портов на открытые и закрытые. Ключевой особенностью этих типов сканирования является то, что они потенциально могут обойти определенные не учитывающие состояния фаерволы и маршрутизаторы с функцией пакетной фильтрации.
-sM - Maimon сканирование работает точно так же как sN/SF/sX, только в запросах используется FIN ACK. Согласно TCP rfc-793, RST пакет должен быть сгенерирован на подобный запрос если порт открыт или закрыт, однако создатели этого типа сканирования отметили что многие BSD системы просто сбрасывают пакет если порт открыт. По этому оно может быть полезным для BSD систем.
--scanflags - с помощью этой опции вы сможете настраивать TCP флаги самостоятельно.
-sI - зомби-сканирование или ленивое сканирование. При помощи небольшого ухищрения, при правильном выборе хоста, появляется возможность сканирования через зомби хост (какой либо другой хост). Вы можете сканировать свою цель и сканирование будет идти с зомби (другого) хоста, а не с вашей машины. В наше время найти зомби-хост не просто.
-sO - сканирование IP протокола. Пример с указанием конкретных IP протоколов:
nmap 192.168.1.35 -sO -p 1,2,3,4,5,6,17
-b - в качестве аргумента промежуточный FTP сервер. Сканирование с проходом по FTP. В нем используется особенность FTP протокола rfc-959. А именно поддержка прокси FTP соединений. В наши дни эта уязвимость совершенно не распространена. Можете проигнорировать эту опцию, поскольку она мало применима.
ᅠ