В этом руководстве описаны различные техники выполнения скрытого сканирования (stealth scan) с помощью Nmap.
Методы скрытого сканирования применяются для обхода брандмауэров или обнаружения живых узлов, оставаясь при этом незамеченными.
Nmap предлагает множество флагов и опций для выполнения различных типов скрытого сканирования, большинство из которых описаны в этой статье. Они просты в реализации и представляют собой хороший процесс обучения работе с IP-пакетами.
После прочтения этого материала читатель будет лучше понимать сетевые пакеты и коммуникации, одновременно приобретая глубокие практические знания о скрытом сканировании с помощью Nmap.
Все инструкции в этом руководстве содержат скриншоты, что позволяет всем читателям легко понять, как они выполняются и каковы их выходы или результаты.
Краткое введение в скрытое сканирование
Обычно брандмауэры обнаруживают устанавливающиеся или установленные соединения.
TCP посылает пакеты, пытаясь установить соединение с целью (собирая информацию в процессе). Эта активность может быть заблокирована и зарегистрирована брандмауэром для сообщения администратору.
Предположим, что пользователь по умолчанию имеет привилегии root. В этом случае Nmap использует технику скрытого сканирования, состоящую из пакетов SYN (синхронизация) и пакетов RST, прерывающих соединение после первого ответа от адресата.
Пользователи могут помешать брандмауэрам обнаружить сканирование, прерывая краткое взаимодействие за один раз и отменяя процесс соединения до отправки ответа ACK.
Как показано на рисунке ниже, обычное TCP-сканирование состоит из начального пакета SYN (синхронизация) от Nmap (PC1), запрашивающего цель (PC2) о синхронизации соединения. Если целевой порт открыт, цель отвечает пакетами SYN+ACK (подтверждение и синхронизация), подтверждающими прием SYN и синхронизацию с Nmap, а Nmap посылает пакеты ACK (подтверждение) в качестве ответа на SYN цели.
На следующем рисунке показано скрытое сканирование с пакетами SYN. Как вы видите, последний пакет подтверждения (ACK), отправленный PC1 (Nmap), заменяется пакетом RST, прерывая соединение для обхода брандмауэров (системы обнаружения вторжений и пользовательские брандмауэры обнаружат скрытое сканирование).
Техники сканирования TCP SYN (Stealth) в Nmap
Чтобы выполнить SYN или скрытое сканирование, подобное тому, что изображено на предыдущем втором рисунке, пользователь должен использовать флаг -sS (SYN). Эта опция сбросит соединение до его установления.
SYN-сканирование требует привилегий root; используйте команду sudo.
В следующем примере выполняется скрытое сканирование сети 192.168.153.0/24:
1 | sudo nmap -sS 192.168.153.0/24 |
Сканирование TCP SYN Ping
Флаг -PS позволяет запускать SYN ping для обнаружения живых хостов скрытным способом.
1 | nmap -sn -PS80 192.168.153.0/24 |
Флаг -sP также позволяет запустить сканирование без пинга, без сканирования портов.
1 | nmap -sP 192.168.153.0/24 |
Nmap NULL сканирование
Несмотря на отправку RST-пакета, предотвращающего регистрацию соединения, SYN-сканирование может быть обнаружено брандмауэрами и системами обнаружения вторжений (IDS). Существуют дополнительные техники для проведения более скрытного сканирования с помощью Nmap.
Nmap работает, анализируя ответы пакета от цели, сопоставляя их с правилами протокола и интерпретируя их. Nmap позволяет подделывать пакеты, чтобы генерировать правильные ответы, раскрывающие их природу, например, чтобы узнать, закрыт ли порт или фильтруется брандмауэром.
В следующем примере показано сканирование NULL, которое не включает пакеты SYN, ACK или RST.
При выполнении NULL-сканирования Nmap может интерпретировать три результата: Open|Filtered, Closed или Filtered, где:
- Open|Filtered: Nmap не может определить, открыт ли порт или фильтруется брандмауэром.
- Closed: Порт закрыт
- Filtered: Порт фильтруется.
В следующем практическом примере пользователь использует флаг -sN для запуска сканирования NULL:
1 | sudo nmap -v -sN -p 22 192.168.153.131 |
Как показано в следующем примере, вы можете добавить опцию -sV, чтобы узнать, действительно ли порт, обозначенный как Open|Filtered, открыт, но добавление этого флага может привести к более легкому обнаружению сканирования целью, как объясняется в книге Nmap.
1 | sudo nmap -sN -sV -p 22 192.168.153.131 |
- nmap = Вызывает программу
- -v = Указывает Nmap сканировать со всей тщательностью
- -sN = Указание Nmap выполнить сканирование NULL
- -sV = Определение версии
- -p = Префикс для определения порта для сканирования.
В некоторых случаях брандмауэры блокируют SYN-пакеты. В этом случае пользователь может послать пакет с флагами SYN/ACK, чтобы обойти брандмауэры, которые не блокируют пакеты SYN/ACK.
Некоторые пакеты не блокируют пакеты SYN с ACK, а также допускают комбинацию SYN с другими заголовками, заголовок SYN/FIN является одним из них.
Следующий тип сканирования будет посылать заголовки SYN и FIN. У этого типа сканирования низкий шанс остаться необнаруженным.
1 | sudo nmap -sS --scanflags SYNFIN 192.168.153.131 -v |
Nmap Xmas Scan
Xmas scan считается техникой скрытого сканирования, анализирующей ответы на Xmas-пакеты, чтобы узнать тип удаленной системы.
Каждая операционная система или сетевое устройство отвечает на Xmas-пакеты по-разному, раскрывая информацию, такую как состояние операционной системы и порта.
Xmas - это старая техника сканирования; сегодня многие брандмауэры и системы обнаружения вторжений могут обнаружить Xmas. Не рекомендуется полагаться на них как на технику скрытного сканирования.
1 | sudo nmap -sX -T2 192.168.153.131 -v |
Сравнение между TCP SYN stealth scan и TCP "Connect Scan":
Обычное TCP-общение
- "Эй, ты меня слышишь? Мы можем встретиться?" (SYN-пакет, запрашивающий синхронизацию)
- "Привет!, я тебя вижу!, мы можем встретиться" (где "я тебя вижу" - это ACK-пакет, а "мы можем встретиться" - SYN-пакет)
- "Отлично!" (пакет RSTet)
Скрытая коммуникация SYN
- "Эй, ты меня слышишь? Мы можем встретиться?" (SYN-пакет, запрашивающий синхронизацию)
- "Привет!, я тебя вижу!, мы можем встретиться" (где "я тебя вижу" - это пакет ACK, "мы можем встретиться" - пакет SYN)
- "Извини, я отправил тебе запрос по ошибке, забудь об этом" (пакет RSTet).
Во втором примере выше показано SYN-соединение, которое не устанавливает соединение в отличие от TCP-соединения или Connect Scan. Поэтому на втором устройстве не ведется журнал о соединении, как и не регистрируется ваш IP-адрес.
Другие флаги Nmap (без стелса)
В дополнение к методам скрытного сканирования мы решили описать несколько различных флагов.
Важно уточнить, что приведенные ниже флаги не являются стелс-методами.
Флаг -O может определить целевую операционную систему, как показано на следующем снимке экрана:
1 | sudo nmap -O 192.168.153.131 |
Как видно на предыдущем снимке экрана, цель, вероятно, имеет Linux с ядром 2.6.x; согласно отчету, условия обнаружения были сложными.
Следующий пример пытается узнать версию программного обеспечения (-sV), прослушивающего порты. Как вы можете видеть, был обнаружен Varnish.
1 | nmap -sV 192.168.153.131 |
Флаг -oN создает файл с результатами сканирования.
В следующем примере пользователь использует флаг -oN для создания файла "results.txt" с результатами сканирования.
1 | nmap -oN results.txt 192.168.153.131 |
Вот и все о методах скрытого сканирования. Вы можете протестировать их с помощью системы обнаружения вторжений, например Snort, чтобы увидеть их эффективность перед различными правилами обнаружения.
Заключение
Как вы видите, Nmap предлагает различные техники скрытого сканирования. Все они просты в реализации, и технику легко понять, если пользователь знает основы сетевых технологий. Читатели с минимальным опытом могут воспроизвести приведенные практические примеры без особых трудностей. Настоятельно рекомендуется применять пример дополнительно к прочитанному.
Все приведенные инструкции действительны для всех дистрибутивов Linux. Спасибо, что прочитали это руководство, объясняющее, как выполнять скрытое сканирование с помощью Nmap.