Выполнение скрытого сканирования сети с помощью Nmap

NmapBeginner
Практиковаться сейчас

Введение

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

Вы изучите различные методы сканирования Nmap, начиная с базовых скрытых сканирований и переходя к более продвинутым скрытым методам. Эти навыки необходимы специалистам по безопасности, проводящим аудит сети, без срабатывания существующих систем безопасности или оповещения потенциальных угроз в сети. К концу лабораторного практикума вы получите практический опыт скрытого сканирования с помощью Nmap и узнаете, как применять эти методы при реальной оценке безопасности.

Настройка тестовой среды

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

Сначала нам нужно открыть терминал. Терминал — это командная строка, где вы можете вводить команды для взаимодействия с компьютером. После открытия терминала перейдите в свою рабочую область. Рабочая область — это определённый каталог, где вы будете хранить все файлы, связанные с проектом. Для этого используйте следующую команду:

cd /home/labex/project

Команда cd означает "изменить каталог". Она сообщает системе переместиться из текущего расположения в указанный каталог, в данном случае — /home/labex/project.

Теперь, когда вы находитесь в своей рабочей области, создадим новый каталог под названием stealth. Каталоги подобны папкам на вашем компьютере, а создание отдельного каталога помогает организовать вашу работу. Используйте следующую команду для создания каталога:

mkdir -p /home/labex/project/stealth

Команда mkdir используется для создания нового каталога. Опция -p гарантирует, что если какие-либо промежуточные каталоги в пути не существуют, они будут созданы также.

После создания каталога вам необходимо перейти в него. Таким образом, все создаваемые вами файлы будут храниться внутри каталога stealth. Используйте команду cd ещё раз:

cd /home/labex/project/stealth

Далее, мы создадим простой HTML-файл. HTML (Hypertext Markup Language) — это стандартный язык для создания веб-страниц. Этот файл будет обслуживаться нашим веб-сервером, имитируя реальную веб-службу. Используйте следующую команду для создания файла:

echo "Сервер робототехники работает..." > index.html

Команда echo выводит текст "Сервер робототехники работает..." в терминал. Символ > перенаправляет этот вывод и записывает его в новый файл под названием index.html.

Теперь нам нужно настроить DNS-резолвер. DNS (Domain Name System) — это как справочник по интернету. Он преобразует доменные имена (например, google.com) в IP-адреса. Настройка DNS-резолвера гарантирует, что наша система может правильно подключаться к другим сетям. Используйте следующую команду:

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

Команда sudo предоставляет вам административные привилегии для выполнения действий, требующих специальных разрешений. sh -c используется для выполнения командной оболочки. Мы записываем строку "nameserver 8.8.8.8" в файл /etc/resolv.conf, где система хранит конфигурацию DNS.

Наконец, мы запустим простой веб-сервер с помощью команды nc (netcat). Netcat — это универсальный сетевой инструмент, который может использоваться для различных задач, включая настройку простого сервера. Этот сервер будет прослушивать порт 8080 и обслуживать созданный ранее HTML-файл. Используйте следующую команду:

nc -lvp 8080 < index.html &

Давайте разберём эту команду:

  • nc — это утилита netcat для сетевых подключений. Она позволяет создавать соединения между различными сетевыми конечными точками.
  • -l сообщает netcat о прослушивании входящих подключений. Вместо попытки подключения к другому серверу, он будет ожидать подключения к нему.
  • -v включает подробный вывод. Это означает, что netcat предоставит более подробную информацию о своих действиях.
  • -p 8080 указывает порт для прослушивания. Порты подобны дверям на компьютере, и в данном случае мы открываем порт 8080 для входящих подключений.
  • < index.html подаёт содержимое index.html любому подключению. Когда клиент подключается к нашему серверу, он получит содержимое файла index.html.
  • & запускает процесс в фоновом режиме. Таким образом, вы можете продолжать использовать терминал для выполнения других команд, пока сервер работает.

После выполнения команды вы должны увидеть вывод, указывающий, что сервер прослушивает порт 8080:

Listening on 0.0.0.0 8080

Теперь у вас запущен веб-сервер на порту 8080, который будет служить целью для упражнений по скрытому сканированию.

Выполнение базовых скрытых сканирований с помощью Nmap

На этом шаге мы изучим, как выполнить базовое скрытое сканирование с помощью Nmap. Но сначала давайте разберёмся, что такое скрытое сканирование. Скрытое сканирование, также известное как сканирование SYN, — это очень полезная техника в области сетевой безопасности. Когда вы пытаетесь определить, какие порты открыты на целевой системе, скрытое сканирование может помочь вам сделать это, уменьшив вероятность обнаружения целевой системой. Это важно, потому что если целевая система обнаружит ваше сканирование, она может принять защитные меры или залогировать вашу активность.

Прежде чем начать сканирование, убедимся, что мы находимся в нужном месте. Вернёмся в нашу основную рабочую область. Это как вернуться в свой штаб, где хранятся все файлы, связанные с проектом. Для этого используем следующую команду:

cd /home/labex/project

Понимание скрытого сканирования

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

  1. Клиент отправляет пакет SYN (синхронизация) серверу. Это как если бы клиент сказал: "Привет, я хочу начать разговор".
  2. Если сервер готов к разговору, он отвечает пакетом SYN-ACK (синхронизация-подтверждение). Это как если бы сервер сказал: "Конечно, я готов говорить".
  3. Наконец, клиент отправляет пакет ACK (подтверждение), чтобы завершить соединение. Это как если бы клиент сказал: "Отлично, давайте начнём разговор".

Однако скрытое сканирование не проходит весь этот процесс. Вместо этого:

  1. Клиент отправляет пакет SYN серверу, как и при обычном соединении.
  2. Если порт на сервере открыт, сервер отвечает пакетом SYN-ACK.
  3. Но вот в чём разница. Вместо отправки пакета ACK для завершения соединения, клиент отправляет пакет RST (сброс). Это прерывает установление соединения.

Это полезно, потому что целевая система менее склонна к регистрации такого взаимодействия, поскольку соединение никогда не устанавливается полностью. Таким образом, это хитрый способ узнать, какие порты открыты, не оставляя большого следа.

Выполнение скрытого сканирования

Теперь, когда мы понимаем, как работает скрытое сканирование, давайте выполним его против нашего локального веб-сервера. Используем следующую команду Nmap:

sudo nmap -sS -p 8080 localhost > /home/labex/project/stealth_scan.txt

Давайте разберём эту команду, чтобы вы точно знали, что делает каждая её часть:

  • sudo используется, потому что скрытые сканирования требуют доступа к сырым сокетам. Сырой доступ к сокетам — это низкоуровневый способ взаимодействия с сетью, и он требует специальных разрешений. Поэтому мы используем sudo, чтобы выполнить команду с административными привилегиями.
  • nmap — это инструмент сканирования, который мы используем. Это очень популярный и мощный инструмент для сетевого исследования и аудита безопасности.
  • -sS указывает, что мы хотим выполнить скрытое сканирование SYN. Это сообщает Nmap использовать технику скрытого сканирования, о которой мы только что узнали.
  • -p 8080 сообщает Nmap сканировать только порт 8080. Иногда вам может потребоваться сканировать несколько портов, но в данном случае нас интересует только порт 8080.
  • localhost — это цель нашего сканирования. Поскольку мы выполняем это на нашем локальном компьютере, localhost относится к нашему собственному компьютеру.
  • > /home/labex/project/stealth_scan.txt перенаправляет вывод сканирования в текстовый файл. Таким образом, мы можем сохранить результаты и посмотреть на них позже.

После выполнения сканирования мы хотим увидеть результаты. Для этого используем следующую команду:

cat /home/labex/project/stealth_scan.txt

При выполнении этой команды вы должны увидеть вывод, похожий на этот:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

Обратите внимание, что Nmap правильно определил, что порт 8080 открыт. Это означает, что наше скрытое сканирование успешно обнаружило веб-сервер, который мы настроили на шаге 1.

Понимание состояний портов

При анализе результатов сканирования вы заметите, что Nmap сообщает о портах в различных состояниях:

  1. open — на этом порту активно принимаются подключения
  2. closed — порт доступен, но на нём не работает служба
  3. filtered — порт заблокирован брандмауэром или сетевым препятствием
  4. unfiltered — порт доступен, но Nmap не может определить, открыт он или закрыт
  5. open|filtered — Nmap не может определить, открыт порт или заблокирован

В нашем сканировании порт 8080 указан как open, что означает, что наш веб-сервер активно принимает подключения.

Преимущество использования скрытого сканирования заключается в том, что оно даёт нам точные результаты, будучи менее навязчивым, чем полное сканирование TCP connect. Полное сканирование TCP connect проходит через весь трёхэтапный процесс рукопожатия, что более вероятно будет замечено целевой системой и вызовет срабатывание оповещений на контролируемых системах.

Расширенные методы скрытого сканирования

На этом шаге мы рассмотрим более продвинутые методы сканирования, обеспечивающие ещё более высокий уровень скрытности. Эти методы имеют решающее значение в кибербезопасности, поскольку позволяют собирать информацию о целевой сети, не будучи легко обнаруженными. Одним из таких мощных методов является скрытое сканирование, также известное как сканирование с использованием «зомби». Этот метод позволяет сканировать цель, маскируя свою личность за другим хостом.

Прежде чем начать, важно убедиться, что вы находитесь в своей рабочей области. Здесь будут выполняться все ваши файлы и команды, связанные с проектом. Для перехода в рабочую область выполните следующую команду в терминале:

cd /home/labex/project

Понимание скрытого сканирования с использованием «зомби»

Сканирование с использованием «зомби» — один из самых скрытных методов сканирования, доступных в Nmap. Но как это работает? Ну, оно использует хост третьей стороны, который мы называем «зомби», для проведения сканирования. Это делает так, что сканирование кажется исходящим от хоста-зомби, а не от вас.

Давайте разберём процесс скрытого сканирования с использованием «зомби» пошагово:

  1. Сначала сканер отправляет запрос хосту-зомби. Этот запрос помогает сканеру определить текущую последовательность идентификаторов IP-пакетов зомби. Последовательность идентификаторов IP — это уникальное число, которое хост присваивает каждому IP-пакету, который он отправляет.
  2. Затем сканер отправляет пакет SYN целевому хосту. Однако он устанавливает исходный IP-адрес этого пакета как IP-адрес зомби. Пакет SYN используется для инициализации TCP-соединения.
  3. Если порт на целевом хосте открыт, целевой хост ответит пакетом SYN-ACK. Этот пакет отправляется хосту-зомби, потому что это исходный IP-адрес, который он увидел в пакете SYN.
  4. Зомби, который не ожидал этого пакета SYN-ACK, отправит пакет RST обратно целевому хосту. Пакет RST используется для сброса TCP-соединения.
  5. Затем сканер снова отправляет запрос хосту-зомби. Он проверяет, увеличилась ли последовательность идентификаторов IP-пакетов зомби.
  6. Если последовательность идентификаторов IP увеличилась, это указывает на то, что порт на целевом хосте открыт. Это происходит потому, что зомби отправил пакет RST в ответ на пакет SYN-ACK от целевого хоста.

Прелесть этой техники в её скрытности. Целевой хост видит только общение, исходящее от зомби, а не от фактического сканера. Поэтому для целевого хоста очень сложно обнаружить, что он сканируется.

Выполнение скрытого сканирования с использованием «зомби»

Теперь давайте выполним скрытое сканирование с использованием Nmap. В реальной ситуации вы бы использовали внешний хост-зомби. Но для этой лабораторной работы мы смоделируем процесс, используя ваш локальный компьютер.

Выполните следующую команду в терминале:

sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt

Давайте разберём каждую часть этой команды:

  • sudo используется, потому что Nmap нуждается в прямом доступе к сокетам для выполнения скрытого сканирования. Прямой доступ к сокетам позволяет Nmap создавать и отправлять пользовательские IP-пакеты, что необходимо для этого типа сканирования.
  • nmap — это известный инструмент сканирования, который мы используем для этой задачи.
  • -sI 127.0.0.1 указывает, что мы выполняем скрытое сканирование с использованием 127.0.0.1 (локальный хост) в качестве хоста-зомби.
  • localhost — это целевой хост, который мы хотим сканировать.
  • -p 8080 сообщает Nmap сканировать только порт 8080 на целевом хосте.
  • > /home/labex/project/idle_scan.txt перенаправляет вывод сканирования в текстовый файл. Таким образом, мы можем легко просмотреть результаты позже.

После выполнения сканирования давайте рассмотрим результаты. Используйте следующую команду для просмотра содержимого выходного файла:

cat /home/labex/project/idle_scan.txt

Вы можете увидеть вывод, похожий на этот:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:10 UTC
Idle scan using zombie 127.0.0.1 (127.0.0.1:80); Class: Incremental
Skipping Idle Scan against localhost (127.0.0.1) -- you can't idle scan your own machine (localhost).
Nmap scan report for localhost (127.0.0.1)
Host is up.

PORT     STATE   SERVICE
8080/tcp unknown http-proxy

Nmap done: 1 IP address (1 host up) scanned in 2.03 seconds

Обратите внимание, что Nmap сообщает о пропуске скрытого сканирования. Это происходит потому, что вы пытаетесь использовать свой собственный компьютер как зомби и цель одновременно. В реальной ситуации, когда у вас есть отдельные хосты, этот метод был бы очень эффективным для скрытого сканирования.

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

Этот расширенный метод очень ценен, когда вам нужна максимальная скрытность. Это делает крайне сложным для целевого хоста отследить сканирование до фактического сканера.

Сравнение результатов сканирования

Давайте сравним результаты обоих типов сканирования, чтобы увидеть различия:

echo "=== Stealth Scan Results ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Idle Scan Results ===" && cat /home/labex/project/idle_scan.txt

Оба сканирования успешно обнаружили открытый порт 8080, но скрытое сканирование с использованием «зомби» показывает дополнительную информацию о используемом методе сканирования.

Очистка

Прежде чем закончить, давайте очистим нашу среду, остановив веб-сервер:

pkill -f "nc -lvp 8080"

Это завершит процесс netcat, который запускает наш веб-сервер на порту 8080.

Резюме

В этой лабораторной работе вы изучили методы скрытого сетевого сканирования с помощью Nmap, что является важным навыком для специалистов по кибербезопасности. Вы начали с настройки тестовой среды с простым веб-сервером, чтобы практиковать сканирование в контролируемых условиях. Затем вы изучили базовые методы скрытого сканирования с использованием техники SYN-сканирования, которая обеспечивает точные результаты и снижает риск обнаружения, что делает её полезной для аудита безопасности без оповещения контролируемых систем.

Наконец, вы углубились в более продвинутые методы скрытого сканирования, такие как сканирование с использованием «зомби», которое может скрыть источник сканирования. Хотя его применение было ограничено в лабораторной среде, вы узнали, как он работает в реальных сценариях. Вы также практиковали интерпретацию результатов сканирования, понимая различные состояния портов и сравнивая результаты разных методов сканирования. Овладение этими методами скрытого сканирования позволит вам проводить тщательные оценки сетей в работе по кибербезопасности.