Использование Nmap для обнаружения и обхода ограничений брандмауэра

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

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

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") subgraph Lab Skills nmap/installation -.-> lab-415921{{"Использование Nmap для обнаружения и обхода ограничений брандмауэра"}} nmap/save_output -.-> lab-415921{{"Использование Nmap для обнаружения и обхода ограничений брандмауэра"}} nmap/port_scanning -.-> lab-415921{{"Использование Nmap для обнаружения и обхода ограничений брандмауэра"}} nmap/target_specification -.-> lab-415921{{"Использование Nmap для обнаружения и обхода ограничений брандмауэра"}} nmap/firewall_evasion -.-> lab-415921{{"Использование Nmap для обнаружения и обхода ограничений брандмауэра"}} end

Настройка локального сервиса для сканирования

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

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

mkdir -p /home/labex/project/http_service

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

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

cd /home/labex/project/http_service

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

echo "<html><body><h1>Welcome to the StarPath Exploration Server</h1></body></html>" > index.html

Команда echo выводит текст в кавычках. Символ > перенаправляет этот вывод в файл с именем index.html. Таким образом, эта команда создает файл с именем index.html с указанным базовым HTML - содержимым.

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

cat index.html

Команда cat считывает содержимое файла и отображает его в терминале. Вы должны увидеть HTML - содержимое, которое мы только что создали:

<html><body><h1>Welcome to the StarPath Exploration Server</h1></body></html>

Теперь пришло время запустить простой HTTP - сервер. Мы будем использовать встроенный модуль http.server Python. Python - это язык программирования, и этот модуль позволяет нам быстро настроить веб - сервер.

python3 -m http.server 8000

Опция -m в Python используется для запуска модуля как скрипта. Здесь мы запускаем модуль http.server и сообщаем ему прослушивать порт 8000. Порт похож на дверь, через которую данные входят и выходят из компьютера.

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

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Этот вывод указывает, что HTTP - сервер запущен и ожидает подключений на порту 8000. Важно оставить это окно терминала открытым, потому что если вы закроете его, сервер перестанет работать.

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

Базовое сканирование с использованием Nmap с обходом обнаружения хостов

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

Сначала убедитесь, что HTTP - сервер продолжает работать в предыдущем терминале. Затем откройте новое окно терминала. В этом новом терминале нам нужно перейти в проектную директорию. В проектной директории хранятся все наши соответствующие файлы и настройки для этого эксперимента. Для этого мы будем использовать команду cd, которая означает "изменить директорию". Вот команда:

cd /home/labex/project

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

nmap -Pn --reason -p 8000 localhost

Разберем опции команды, чтобы понять, что каждая из них делает:

  • -Pn: Эта опция пропускает процесс обнаружения хостов. Вместо проверки, находится ли цель в сети с помощью пинга, Nmap напрямую предположит, что цель находится в сети и начнет сканирование портов.
  • --reason: Эта опция заставляет Nmap показывать причину, по которой порт находится в определенном состоянии. Например, если порт открыт, он скажет, почему он считается открытым.
  • -p 8000: Эта опция сообщает Nmap сканировать только порт 8000. Мы заинтересованы в этом конкретном порте, потому что наш локальный HTTP - сервер работает на нем.
  • localhost: Это цель, которую мы хотим сканировать. В этом случае localhost относится к нашей локальной машине.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-05 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up, received localhost-response (0.000097s latency).

PORT     STATE SERVICE      REASON
8000/tcp open  http-alt     syn-ack

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

Вывод показывает, что порт 8000 открыт и работает HTTP - сервис. В столбце "REASON" написано "syn - ack", что означает, что когда Nmap пытался подключиться к порту, порт ответил пакетом SYN - ACK. Это стандартный способ для сервера принять запрос на подключение в протоколе TCP.

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

nmap -Pn --reason -p 8000 localhost > /home/labex/project/nmap_scan.txt

Наконец, давайте проверим сохраненные результаты сканирования. Мы будем использовать команду cat, которая означает "конкатенация". Эта команда считывает содержимое файла и отображает его в терминале. Вот команда:

cat /home/labex/project/nmap_scan.txt

Вы должны увидеть те же результаты сканирования, которые были ранее отображены в терминале.

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

Продвинутый обход брандмауэра с использованием фрагментации пакетов

На этом этапе мы рассмотрим более продвинутую технику обхода брандмауэра, называемую фрагментацией пакетов. Прежде чем углубиться в детали, давайте разберемся, что такое фрагментация пакетов. Когда данные отправляются по сети, они разбиваются на более мелкие единицы, называемые пакетами. Некоторые брандмауэры и системы обнаружения вторжений (Intrusion Detection Systems, IDS) предназначены для анализа этих пакетов на предмет признаков вредоносной активности. Однако эти системы безопасности могут иметь трудности с обработкой фрагментированных пакетов, то есть пакетов, которые были разбиты на еще более мелкие части. Эта проблема может дать нам возможность обойти определенные меры безопасности при сканировании.

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

cd /home/labex/project

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

sudo nmap -f -Pn --reason -p 8000 localhost

Разберем дополнительную опцию -f в этой команде. Опция -f сообщает Nmap фрагментировать IP - пакеты. Таким образом, мы усложняем задачу для фильтров пакетов анализировать пакеты и обнаружить, что мы выполняем сканирование.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2025-03-18 16:46 CST
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.000062s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE  REASON
8000/tcp open  http-alt syn-ack ttl 64

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

Этот вывод показывает результаты нашего сканирования. Он сообщает, что хост (localhost) активен и порт 8000 открыт.

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

sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt

Символ > в этой команде перенаправляет вывод сканирования Nmap в указанный файл.

Теперь давайте проверим содержимое этого файла, чтобы убедиться, что результаты были сохранены правильно. Мы будем использовать команду cat, которая используется для отображения содержимого файла:

cat /home/labex/project/nmap_frag_scan.txt

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

Сравним два метода сканирования, которые мы использовали до сих пор: обычное сканирование и сканирование с фрагментацией. Мы создадим новый файл для хранения этого сравнения. Вот команды для этого:

echo "Comparing regular scan vs. fragmented scan:" > /home/labex/project/scan_comparison.txt
echo "---------------------------------------------" >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "1. Regular scan with -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_scan.txt >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "2. Fragmented scan with -f -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_frag_scan.txt >> /home/labex/project/scan_comparison.txt

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

Теперь давайте рассмотрим наше сравнение, отобразив содержимое файла сравнения:

cat /home/labex/project/scan_comparison.txt

В нашем контролируемом окружении результаты двух сканирований могут выглядеть похожими. Однако в реальных сценариях эти разные техники могут иметь разный уровень эффективности при различных настройках брандмауэра. Фрагментация пакетов (-f) особенно эффективна против бессостоятельных фильтров пакетов. Бессостоятельные фильтры пакетов анализируют каждый пакет независимо и часто не могут собрать фрагменты для анализа целого пакета, что дает нашему сканированию с фрагментацией больше шансов обойти эти фильтры.

Для более глубокой фрагментации Nmap позволяет увеличить уровень фрагментации, используя несколько флагов -f (например, -ff) или указав пользовательский размер максимальной передаваемой единицы (Maximum Transmission Unit, MTU) с помощью опции --mtu. MTU - это максимальный размер пакета, который может быть передан по сети. Указав пользовательский MTU, вы можете контролировать, как пакеты будут фрагментироваться.

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

Резюме

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

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