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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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

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

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

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

cd /home/labex/project

Команда cd означает "change directory" (изменить директорию). Она сообщает системе переместить вас из текущего местоположения в указанный каталог, в данном случае это /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 "Robotics server running..." > index.html

Команда echo выводит текст "Robotics server running..." в терминал. Символ > перенаправляет этот вывод и записывает его в новый файл с именем 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.

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

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

На этом этапе мы рассмотрим более продвинутые методы сканирования, которые обеспечивают еще более высокий уровень скрытности. Эти методы являются важными в области кибербезопасности, так как позволяют собирать информацию о целевой сети, не привлекая к себе внимания. Одним из таких мощных методов является пассивное сканирование (Idle Scan), также известное как сканирование с использованием "зомби" (Zombie Scan). Этот метод позволяет сканировать цель, маскируя свою идентичность за другим хостом.

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

cd /home/labex/project

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

Пассивное сканирование является одним из самых скрытных методов сканирования, доступных в Nmap. Но как оно работает? Оно использует сторонний хост, который мы называем "зомби", для выполнения сканирования. Это делает сканирование выглядящим, как будто оно исходит от зомби - хоста, а не от вас.

Разберем процесс пассивного сканирования пошагово:

  1. Сначала сканер отправляет запрос на зомби - хост. Этот запрос помогает сканеру определить текущую последовательность IP - идентификаторов (IP ID) зомби. Последовательность 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 сообщает, что он пропускает пассивное сканирование. Это происходит потому, что вы пытаетесь использовать свою собственную машину как зомби и цель одновременно. В реальной ситуации, когда у вас есть отдельные хосты, этот метод будет очень эффективен для скрытого сканирования.

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

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

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

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

Сначала нам нужно перейти в рабочую директорию. Рабочая директория - это своего рода специальная область, где хранятся все файлы, связанные с проектом. Чтобы туда попасть, мы используем команду cd. Команда cd расшифровывается как "change directory" (изменить директорию), и она используется для перехода от одной директории к другой в файловой системе. Выполните следующую команду в терминале:

cd /home/labex/project

Сравнение различных типов сканирования

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

Следующая команда отобразит результаты скрытого сканирования. Команда echo используется для вывода текста в терминал, а команда cat - для отображения содержимого файла. Здесь мы сначала выводим заголовок, чтобы указать, что это результаты скрытого сканирования, а затем показываем фактическое содержимое файла stealth_scan.txt:

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

Аналогично, эта команда покажет результаты пассивного сканирования:

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

Интерпретация состояний портов

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

  1. open (открыт) - Это означает, что на этом порту активный сервис принимает соединения. Например, если веб - сервер работает на определенном порту, этот порт будет отчетливо как open.
  2. closed (закрыт) - Порт доступен, но на нем нет слушающего сервиса. Это как дверь, которая не заперта, но внутри никого нет.
  3. filtered (фильтруется) - Файрволл или другой сетевой препятствие блокирует порт. Это как если бы охранник не позволял доступ к этому порту.
  4. unfiltered (нефильтруется) - Порт доступен, но Nmap не может определить, открыт он или закрыт. Это как посмотреть на дверь и не понять, есть ли кто - то внутри.
  5. open|filtered (открыт или фильтруется) - Nmap не может определить, открыт порт или фильтруется. Существует неопределенность по состоянию порта.
  6. closed|filtered (закрыт или фильтруется) - Nmap не может определить, закрыт порт или фильтруется.

В вашем скрытом сканировании порт 8080 был отчетливо как open. Это показывает, что ваш веб - сервер активно принимает соединения на этом порту, что означает, что он готов предоставлять веб - страницы или другие сервисы клиентам.

Практическое применение

Понимание того, как интерпретировать эти результаты, имеет несколько практических применений в области кибербезопасности:

  1. Выявление уязвимостей безопасности: Открытые порты могут быть потенциальными точками входа для атакующих. Если есть ненужные открытые порты, атакующие могут использовать их для несанкционированного доступа к вашей системе.
  2. Проверка конфигурации файрволла: Фильтруемые порты показывают, что правила файрволла правильно блокируют доступ. Это помогает вам убедиться, что ваша сеть защищена от нежелательного трафика.
  3. Проведение аудиторских проверок безопасности: Регулярное сканирование помогает убедиться, что открыты только необходимые порты. Периодически сканируя свою сеть, вы можете обнаружить любые новые открытые порты, которые могут представлять угрозу безопасности.
  4. Разработка планов по устранению неполадок: На основе результатов сканирования вы можете разработать планы по устранению проблем безопасности. Например, если вы найдете ненужный открытый порт, вы можете закрыть его.

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

cat << EOF > /home/labex/project/scan_report.txt
## Network Scan Report

### Findings:
- Port 8080 is open and running an HTTP proxy service
- This port was successfully detected using stealth scanning techniques

### Recommendations:
- Ensure this port is intended to be open
- Implement proper access controls if this service is necessary
- Close the port if the service is not required
- Regularly scan the network to detect changes in the network footprint
EOF

Чтобы просмотреть ваш отчет, снова используйте команду cat:

cat /home/labex/project/scan_report.txt

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

Очистка

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

pkill -f "nc -lvp 8080"

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

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

Резюме

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

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