9.9 KiB
Когда мы сканируем с помощью nmap, есть 3 базовых типа сканирования:
- TCP connect scans
-sT - SYN Полуоткрытое сканирование
-sS - UDP scans
-sU
Дополнительно есть несколько не так часто используемых, некоторые из них мы также рассмотрим (хотя и менее подробно). Это:
- TCP null scans
-sN - TCP FIN scans `-sF
- TCP Xmas Scans
-sX
Многие из них (за исключением UDP) мы используем в очень похожих целях, однако, способ их работы отличаются друг от друга. Это означет то, что один из базовой тройки вероятнее всего будет вашим выбором в большинстве ситуаций, но не стоит забывать о существовании других возможных типов сканирования.
TCP connect scans -sT
Что бы понимать как работает этот вид сканирования, нужно понимать концепцию Трехстороннего TCP рукопожатия. Давайте вспомним что это обозначает. RFC 9293
Трехстороннее TCP рукопожатие состоит из трёх (ну не четырех же =) ) стадий.
- Клиент (в нашем случае атакующий) отсылает TCP запрос к целевой системе с флагом
SYN. - Сервер признает этот TCP запрос, включающий в себя
SYNфлаг, отсылается ответ с флагамиSYNиASK. - Клиент получает ответ и отправляет подтверждение с флагом
ASK!
!
Каким образом это связано с работой nmap? Очень просто. Чтобы понять, работает ли порт или нет, nmap пытается установить TCP соединение и отправить SYNфлаг. Если nmap проучаетSYN\ASKответ, это значит что порт открыт. Nmap помечает его открытым и завершает рукопожатие отправкойASKфлага.
Если же nmap получает ответ с флагом RST (Reset), то это означает что порт закрыт.
!
Если же открыт фаервол, обычно он просто роняет подключение. Тоесть, nmap отправляет ASK флаг, но в ответ ничего не получает. В данном случае порт помечается как filtered.
SYN scans -sS
Так же как и TCP сканирование, SYN использует подключение к TCP портам, но работает немного иначе. Этот вид сканирования часто называют скрытым.
Если TCP сканирование полностью следует Трехстороннему рукопожатию, то SYN сканирование после ответа от сервера с флагами SYN\ASK отпрвляет флаг RST обрывая соединение.
!
!
Данный вид сканирование имеет множество приемуществ для нас как для хакеров:
- Он может использоваться для обхода старых систем обнаружения, которым необходимо полное трехстороннее рукопожатие.
- SYN сканирование не логируется приложениями, открытыми на портах (это является стандартной практикой логгировать соединение когда оно будет установленно)
- SYN сканирование банально быстрее.
Конечно есть некоторое количество минусов:
- Необходимо запускать с правами админа (sudo) что бы оно работало нормально на линуксе, так как SYN сканирование создает сырые пакеты, что является привелегией админа.
- Нестабильные сервисы иногда падают в процессе сканирования, это может быть проблемой если тестируется прод.
Не считая способа поиска открытых портов, в основном работа 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.
!
FIN Scans
FIN сканирование, флаг -sF отправляет TCP запрос с флагом завершения FIN. Если порт закрыт, то вернется RST.
!
XMAS
Xmass сканирование, флаг -sX, отсылает TCP пакет с флагами PSH, URG, FIN Если порт закрыт, то вернется RST.
!
Эти типы сканирования использются для обхода фаерволов, так как многие блокируют входящий TCP трафик, котрый содержит SYN флаг. Но не нужно думать что они 100% эффективны в современных системах защиты.
ICMP Network scaning
Во время первого соединения с целью, наша первая цель - составление карты сети.
Единственная возможность сделать это используя nmap - подготовить "проверку пингом". Nmap отправляет ICMP пакет на каждый доступный IP address. Когда получен ответ - ip маркируется как живой.
Флаг для вызова -sn
NSE (Nmap Scripting Engine)
Мощное рассширение, сильно расширяющее возможности nmap. NSE написаны на LUA, и могут быть использованны для множества вещей, начиная с таких как сканирование на уязвимости, заканчивая эксплуатацией этих уязвимостей.
Доступно множество категорий, вот некоторые из них:
safe- не имеют эффекта на целиintrusive- не безопасны, влияют на цельvuln- поиск уязвимостейexploit- эксплуатация уязвимостейauth- Обход аутентификации (например: получение доступа к анонимному ftp серверу)brute- Подбор паролей и логиновdiscovery- попытка запроса запущенных сервисов
Более подробно можно узнать тут: https://nmap.org/book/nse-usage.html
Команда что бы запустить скрипт:
--script=<script-name>
Что бы передать какой-то аргумент:
--script-args
Что бы прочитать помощь:
nmap --srcipt-help <script-name>