Files
2026-07-30 11:35:10 +05:00

9.9 KiB

Когда мы сканируем с помощью nmap, есть 3 базовых типа сканирования:

  1. TCP connect scans -sT
  2. SYN Полуоткрытое сканирование -sS
  3. UDP scans -sU

Дополнительно есть несколько не так часто используемых, некоторые из них мы также рассмотрим (хотя и менее подробно). Это:

  1. TCP null scans -sN
  2. TCP FIN scans `-sF
  3. TCP Xmas Scans -sX

Многие из них (за исключением UDP) мы используем в очень похожих целях, однако, способ их работы отличаются друг от друга. Это означет то, что один из базовой тройки вероятнее всего будет вашим выбором в большинстве ситуаций, но не стоит забывать о существовании других возможных типов сканирования.

TCP connect scans -sT

Что бы понимать как работает этот вид сканирования, нужно понимать концепцию Трехстороннего TCP рукопожатия. Давайте вспомним что это обозначает. RFC 9293

Трехстороннее TCP рукопожатие состоит из трёх (ну не четырех же =) ) стадий.

  1. Клиент (в нашем случае атакующий) отсылает TCP запрос к целевой системе с флагом SYN.
  2. Сервер признает этот TCP запрос, включающий в себя SYN флаг, отсылается ответ с флагами SYN и ASK.
  3. Клиент получает ответ и отправляет подтверждение с флагом ASK !Pasted image 20250416202446.png!Pasted image 20250416202511.png Каким образом это связано с работой nmap? Очень просто. Чтобы понять, работает ли порт или нет, nmap пытается установить TCP соединение и отправить SYN флаг. Если nmap проучает SYN\ASK ответ, это значит что порт открыт. Nmap помечает его открытым и завершает рукопожатие отправкой ASK флага.

Если же nmap получает ответ с флагом RST (Reset), то это означает что порт закрыт.

!Pasted image 20250416203106.png Если же открыт фаервол, обычно он просто роняет подключение. Тоесть, nmap отправляет ASK флаг, но в ответ ничего не получает. В данном случае порт помечается как filtered.

SYN scans -sS

Так же как и TCP сканирование, SYN использует подключение к TCP портам, но работает немного иначе. Этот вид сканирования часто называют скрытым.

Если TCP сканирование полностью следует Трехстороннему рукопожатию, то SYN сканирование после ответа от сервера с флагами SYN\ASK отпрвляет флаг RST обрывая соединение. !Pasted image 20250417102631.png!Pasted image 20250417102751.png Данный вид сканирование имеет множество приемуществ для нас как для хакеров:

  1. Он может использоваться для обхода старых систем обнаружения, которым необходимо полное трехстороннее рукопожатие.
  2. SYN сканирование не логируется приложениями, открытыми на портах (это является стандартной практикой логгировать соединение когда оно будет установленно)
  3. SYN сканирование банально быстрее.

Конечно есть некоторое количество минусов:

  1. Необходимо запускать с правами админа (sudo) что бы оно работало нормально на линуксе, так как SYN сканирование создает сырые пакеты, что является привелегией админа.
  2. Нестабильные сервисы иногда падают в процессе сканирования, это может быть проблемой если тестируется прод.

Не считая способа поиска открытых портов, в основном работа TCP сканирования и SYN сканирования идентичны.

UDP сканирование

В отличие от TCP, у UDP нет никакого подтверждения о получении пакета. Буквально отсылается пакет, с надеждой на то, что он был получен. Это делает его широкоиспользуемым там, где нужна скорость (например - видеотрансляции). Но отсутствие подтверждения получения пакета сильно услажняет возможность сканирования.

Когда пакет отсылается на открытый UDP порт, ответа не должно последовать. Если это так и есть, то nmap помечает порт как открытый или отфильтрованный.

Если же пакет был отправлен на закрытый UDP порт, то назад возвращается ICMP (ping) пакет, содержащий сообщение что порт не доступен. В этом случае nmap помечает порт как закрытый.

UDP сканирование достаточно медленное, поэтому рекомендуется ипользовать --top-ports <number> флаг при сканировании.

nmap -sU --top-ports 20 <target>

Данная команда будет сканировать топ 20 самых используемых UDP портов.

NULL FIN Xmas TCP port scan

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

NULL Scans NULL сканирование, флаг -sN, отправляет TCP запрос без заданных флагов. Если порт закрыт, то вернется RST. !Pasted image 20250417111734.png

FIN Scans FIN сканирование, флаг -sF отправляет TCP запрос с флагом завершения FIN. Если порт закрыт, то вернется RST. !Pasted image 20250417112443.png

XMAS Xmass сканирование, флаг -sX, отсылает TCP пакет с флагами PSH, URG, FIN Если порт закрыт, то вернется RST. !Pasted image 20250417122554.png

Эти типы сканирования использются для обхода фаерволов, так как многие блокируют входящий TCP трафик, котрый содержит SYN флаг. Но не нужно думать что они 100% эффективны в современных системах защиты.

ICMP Network scaning

Во время первого соединения с целью, наша первая цель - составление карты сети.

Единственная возможность сделать это используя nmap - подготовить "проверку пингом". Nmap отправляет ICMP пакет на каждый доступный IP address. Когда получен ответ - ip маркируется как живой.

Флаг для вызова -sn

NSE (Nmap Scripting Engine)

Мощное рассширение, сильно расширяющее возможности nmap. NSE написаны на LUA, и могут быть использованны для множества вещей, начиная с таких как сканирование на уязвимости, заканчивая эксплуатацией этих уязвимостей.

Доступно множество категорий, вот некоторые из них:

  1. safe - не имеют эффекта на цели
  2. intrusive - не безопасны, влияют на цель
  3. vuln - поиск уязвимостей
  4. exploit - эксплуатация уязвимостей
  5. auth - Обход аутентификации (например: получение доступа к анонимному ftp серверу)
  6. brute - Подбор паролей и логинов
  7. discovery - попытка запроса запущенных сервисов

Более подробно можно узнать тут: https://nmap.org/book/nse-usage.html

Команда что бы запустить скрипт:

--script=<script-name>

Что бы передать какой-то аргумент:

--script-args

Что бы прочитать помощь:

nmap --srcipt-help <script-name>