Продвинутый обход брандмауэра с использованием фрагментации пакетов
На этом этапе мы рассмотрим более продвинутую технику обхода брандмауэра, называемую фрагментацией пакетов. Прежде чем углубиться в детали, давайте разберемся, что такое фрагментация пакетов. Когда данные отправляются по сети, они разбиваются на более мелкие единицы, называемые пакетами. Некоторые брандмауэры и системы обнаружения вторжений (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, вы можете контролировать, как пакеты будут фрагментироваться.
Эта техника демонстрирует, как фрагментация пакетов может быть использована как дополнительный метод для обхода обнаружения брандмауэром при проведении оценок безопасности.