Анонимность / Безопасность
October 8, 2023

Изолированный Pentest

Бонсуар, господа. 🍷

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

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

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


Предыстория

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

Подобная постановка вопроса сразу выводит обсуждение за пределы упрощенного представления об анонимности как о результате использования одного инструмента, сервиса или цепочки проксирования. На практике речь идет не о выборе отдельного средства, а о построении целостного контура, в котором каждый элемент выполняет строго определенную функцию. Виртуализация обеспечивает изоляцию рабочих процессов от основной системы, сетевые механизмы отвечают за управляемое прохождение трафика и сокращение вероятности утечек, а хост-среда формирует базовый уровень предсказуемости, прозрачности и доверия ко всей архитектуре. Именно в этой логике возникла идея использовать Whonix в связке с гипервизором QEMU/KVM.

Выбор в пользу QEMU/KVM в данном случае был обусловлен не только технической целесообразностью, но и требованиями к доверенной вычислительной базе. Когда виртуализированная среда становится одним из ключевых элементов всей модели изоляции, вопрос выбора гипервизора перестает быть второстепенным. Использование VirtualBox в таком сценарии представляется менее предпочтительным как с точки зрения архитектурной прозрачности, так и с позиции общей логики построения контролируемой Linux-инфраструктуры. Напротив, QEMU/KVM обеспечивает более естественную интеграцию с Linux-средой, предоставляет более гибкие средства конфигурирования и в целом лучше соответствует задаче построения управляемого и предсказуемого контура.

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

На стороне хост-системы также применяются WireGuard, Pi-hole и Unbound. Их включение в архитектуру продиктовано необходимостью усилить контроль над сетевым взаимодействием и сократить зависимость от внешней DNS-инфраструктуры. В данном контексте эти компоненты рассматриваются не как разрозненный набор вспомогательных инструментов, а как части единого сетевого контура, задача которого состоит в снижении вероятности утечек, повышении управляемости DNS-разрешения и формировании более закрытой и предсказуемой среды. Подробная конфигурация каждого из этих компонентов заслуживает отдельного рассмотрения и потому выходит за рамки настоящего раздела.

Таким образом, к следующему этапу задача приобретает вполне определенный и технически завершенный вид: необходимо подготовить хост-инфраструктуру, развернуть QEMU/KVM и перейти к конфигурированию Whonix-Gateway как одного из ключевых элементов будущей изолированной среды.


Установка QEMU/KVM на Void Linux (glibc):

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

doas xbps-install -Su

doas xbps-install libvirt virt-manager virt-manager-tools xz qemu bridge-utils

doas ln -s /etc/sv/libvirtd /var/service
doas ln -s /etc/sv/virtlockd /var/service
doas ln -s /etc/sv/virtlogd /var/service
doas ln -s /etc/sv/dbus /var/service
doas ln -s /etc/sv/polkitd /var/service

doas usermod -aG kvm,libvirt $USER

reboot

В данном материале используется doas вместо sudo, поскольку именно такая схема повышения привилегий применяется в рассматриваемой хост-системе.

Libvirt представляет собой свободную реализацию API, демон и набор инструментов для управления виртуализацией. Для корректной работы в среде Void Linux ему также требуются dbus и polkit, обеспечивающие межсервисное взаимодействие и управление политиками доступа. Следует учитывать, что приведенная последовательность установки актуальна именно для Void Linux; в других дистрибутивах набор пакетов, названия служб и порядок их активации могут отличаться. Если все действия выполнены корректно, следующим шагом можно запустить virt-manager и убедиться в том, что виртуализационный стек функционирует без ошибок.

Если запуск прошел корректно, можно переходить к следующему этапу. На данном этапе гипервизор QEMU/KVM установлен и готов к дальнейшей работе. Дополнительно следует учитывать, что на части систем аппаратная виртуализация может быть отключена на уровне BIOS/UEFI. В таком случае ее необходимо предварительно включить, иначе использование QEMU/KVM будет невозможно.


Установка и конфигурирование Whonix в среде QEMU/KVM:

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

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

doas virsh -c qemu:///system net-autostart default

tar -xvf Whonix*.libvirt.xz

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

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

После редактирования XML-файла необходимо определить внешнюю и внутреннюю сети Whonix через virsh, включить для них автозапуск и затем активировать их:

doas virsh -c qemu:///system net-define Whonix_external*.xml
doas virsh -c qemu:///system net-define Whonix_internal*.xml

doas virsh -c qemu:///system net-autostart Whonix-External
doas virsh -c qemu:///system net-start Whonix-External

doas virsh -c qemu:///system net-autostart Whonix-Internal
doas virsh -c qemu:///system net-start Whonix-Internal

doas brctl show

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

Далее необходимо передать гипервизору описание виртуальной машины с помощью подготовленного XML-файла:

doas virsh -c qemu:///system define Whonix-Gateway*.xml

После этого виртуальная машина станет доступна в virt-manager, где можно выполнить ее базовую настройку. В рассматриваемом примере для Whonix-Gateway был увеличен объем оперативной памяти до 815 MB, что обеспечивает более стабильную работу гостевой системы при первичном запуске и последующем обновлении.

После запуска виртуальной машины необходимо выполнить ее первичное обновление и убедиться в корректности сетевой маршрутизации. В рассматриваемой конфигурации Whonix-Gateway запускается в окружении XFCE, после чего систему можно обновить штатными средствами пакетного менеджера с последующей перезагрузкой. Затем следует проверить, что трафик действительно проходит через сеть Tor, например определив внешний IP-адрес изнутри гостевой системы с помощью команды curl ifconfig.me. Если в результате отображается IP-адрес, принадлежащий выходному узлу сети Tor, это означает, что базовая схема маршрутизации функционирует корректно, а Whonix-Gateway был успешно развернут и настроен.

На данном этапе можно считать, что в среде Void Linux успешно подготовлен гипервизор QEMU/KVM и выполнено первичное конфигурирование Whonix-Gateway. Далее можно переходить к следующему этапу построения изолированного контура.


Что дальше?

На следующем этапе исходный план предполагал установку Artix Linux с последующим подключением репозиториев BlackArch. Далее требовалось настроить шлюз через NetworkManager, используя уже подготовленный Whonix-Gateway, и перенаправить через него трафик рабочей виртуальной машины. После этого оставалось проверить сетевую связность, подключение по SSH и устойчивость всей схемы в практической работе.

Однако на этапе развертывания возникли затруднения, связанные с установкой Artix Linux в среде QEMU/KVM. С высокой вероятностью проблема была обусловлена особенностями используемого ISO-образа, а не самой логикой построения изолированной среды. В подобных условиях более рациональным решением становится не искусственное удержание первоначального сценария, а переход к рабочей альтернативе, позволяющей продолжить тестирование без потери общей архитектуры.

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

Сразу после установки рабочей виртуальной машины необходимо перейти к настройке сетевого шлюза через Whonix-Gateway.

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

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

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

Адрес, полученный из конфигурации Whonix-Gateway, далее используется в настройках сетевого соединения рабочей системы. Таким образом, рабочая виртуальная машина начинает использовать Whonix-Gateway как промежуточный узел для выхода в сеть.

Следует отдельно отметить, что подобная настройка может быть выполнена и без графической оболочки, исключительно средствами терминала. Однако в рассматриваемом примере используется графическая конфигурация через NetworkManager, поскольку она наглядно демонстрирует общую схему и позволяет быстрее зафиксировать взаимосвязь между внутренней сетью, шлюзом и рабочей машиной. При этом принципиально важно соблюдать порядок запуска: сначала должен быть запущен Whonix-Gateway, и только после этого — рабочая виртуальная машина, использующая его для маршрутизации трафика.


Итоги и результаты:

После завершения настройки целесообразно проверить, каким образом система видна во внешней сети и не возникают ли утечки DNS-запросов.

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

Однако подобная схема имеет и очевидные ограничения. Использование выходных узлов Tor нередко сопровождается снижением доступности отдельных ресурсов, дополнительными проверками со стороны сервисов, ограничениями на авторизацию и повышенным вниманием со стороны систем антиабуза. Иными словами, Tor обеспечивает существенный прирост анонимности, но одновременно делает сетевое поведение менее “обычным” с точки зрения внешних сервисов.

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

Если свести итоговую архитектуру к краткой схеме, она может быть представлена следующим образом:

WireGuard → Pi-hole → Unbound DNS → Whonix-Gateway (Tor) → рабочий дистрибутив → дополнительный прокси

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

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

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


Заключение

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

С архитектурной точки зрения итоговая схема может быть сведена к следующим уровням:

  • OpenWRT / WiFi Safe
  • Safe VDS: WireGuard + Pi-hole + Unbound DNS
  • Void Linux + DWM
  • QEMU/KVM + Whonix-Gateway
  • рабочая виртуальная машина
  • дополнительный Shadowsocks или SOCKS5-прокси

Именно сочетание этих уровней формирует среду, в которой каждый компонент выполняет отдельную функцию: один отвечает за изоляцию, другой — за фильтрацию и DNS-контроль, третий — за маршрутизацию, четвертый — за анонимизацию, а пятый — за рабочую эксплуатацию инструментов. В этом и состоит ключевой смысл всей конструкции: не в использовании одного “магического” средства, а в выстраивании последовательной и управляемой системы, где каждый слой снижает долю доверия к остальным и усложняет компрометацию всего контура целиком.

С вами был Томми.
До встречи, господа. 🍷

Блог автора в телеграмме.