Область применения подсетинга при пентесте

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

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

  • Идентификация границ сегментов сети и VLAN
  • Планирование маршрутов для внутреннего пентеста
  • Определение доступных IP-адресов для анализа

Нотация CIDR и классовый расчёт

Современная нотация CIDR (Classless Inter-Domain Routing) обозначает подсеть в виде IP-адреса, слешей и количества битов маски сети. Например, 192.168.1.0/24 означает сеть с маской 255.255.255.0, где первые 24 бита зарезервированы для сетевого адреса. При расчёте необходимо понимать взаимосвязь между длиной префикса и количеством доступных хостов: формула 2^(32-префикс) даёт общее количество адресов, минус два на сетевой адрес и широковещание.

Для быстрого расчёта полезно помнить, что каждый бит маски удваивает количество подсетей из большей сети. Маска /25 даёт две подсети по 128 адресов, маска /26 — четыре подсети по 64 адреса. Тестировщик должен уметь быстро переводить CIDR-нотацию в десятичную маску и определять граничные адреса диапазона.

  • /24 = 256 адресов (254 хоста): 255.255.255.0
  • /25 = 128 адресов (126 хостов): 255.255.255.128
  • /26 = 64 адреса (62 хоста): 255.255.255.192
  • /30 = 4 адреса (2 хоста): 255.255.255.252

Определение границ подсетей и адресов хостов

Для заданной подсети необходимо вычислить: адрес сети (первый адрес), адрес широковещания (последний адрес) и диапазон используемых хостов. Алгоритм: преобразовать IP и маску в двоичный вид, применить логическую операцию AND между IP и маской для получения адреса сети. Сетевой адрес плюс один — первый используемый хост, адрес широковещания минус один — последний используемый хост.

Практический пример: для подсети 10.0.50.0/24 сетевой адрес — 10.0.50.0, первый хост — 10.0.50.1, последний хост — 10.0.50.254, адрес широковещания — 10.0.50.255. При пентесте это позволяет определить, какие адреса следует сканировать и какие интерфейсы маршрутизаторов находятся на границах подсети.

Суперсети и агрегация маршрутов

Суперсеть (supernet) объединяет несколько смежных подсетей в одну большую сеть с меньшей длиной префикса. Если пентестер находит две подсети 192.168.0.0/25 и 192.168.0.128/25, они могут быть представлены как одна суперсеть 192.168.0.0/24. Это полезно при анализе правил брандмауэра, где может быть использована агрегированная нотация для управления доступом к блоку адресов.

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

Примеры практических расчётов

Задача 1: разделить подсеть 172.16.0.0/22 на четыре равные подсети для разных отделов. Префикс /22 = 1024 адреса. Разделение на четыре даёт /24 каждому (256 адресов). Результат: 172.16.0.0/24, 172.16.1.0/24, 172.16.2.0/24, 172.16.3.0/24. При пентесте каждая подсеть сканируется отдельно с документированием её функции и контроля доступа.

Задача 2: определить, находятся ли адреса 10.20.30.50 и 10.20.31.100 в одной подсети /23? Маска /23 = 255.255.254.0. Применяя AND: 10.20.30.0 (сеть содержит оба адреса). Ответ: да, они в одной подсети. Знание этого помогает при анализе связности между хостами и определении возможности прямого взаимодействия без прохождения через маршрутизатор.

Инструменты и автоматизация расчётов

Для ускорения расчётов используются утилиты: ipcalc (Linux), sipcalc, калькуляторы подсетей в онлайн-ресурсах. В Bash доступны инструменты для работы с IP: grep, awk, python-скрипты с использованием модуля ipaddress. При автоматизации пентеста скрипты на Python позволяют генерировать списки хостов для сканирования, проверять принадлежность адреса к подсети, агрегировать результаты сканирования по сетевым сегментам.

При использовании Metasploit или Nmap можно передавать подсети в CIDR-нотации для автоматического сканирования диапазонов. Python-модуль ipaddress предоставляет функции для работы с сетями: определение хостов в подсети, проверка пересечения сетей, вычисление суперсети. Это упрощает подготовку плана сканирования и анализ результатов.

Документирование и отчётность

В отчёте пентеста необходимо чётко документировать тестируемые подсети с указанием их CIDR-нотации, количества хостов, используемого диапазона IP и обнаруженных сервисов. Это позволяет клиенту понять объём проведённой работы и границы тестирования. При наличии исключений (адреса, которые не сканировались по согласованию) они также должны быть явно указаны.

Таблица в отчёте может содержать столбцы: подсеть (CIDR), количество адресов, количество активных хостов, функция сегмента, найденные уязвимости. Это облегчает руководству понимание риска для каждого сегмента и приоритизацию мер по исправлению. Правильный расчёт и документирование подсетей повышает профессионализм пентеста и уменьшает вероятность конфликтов при обсуждении результатов.

Источники

PENTEST.RED / RED JOURNAL