Дисклеймер
Вся информация предоставлена исключительно в ознакомительных целях. Автор не несет ответственности за любой возможный вред, причиненный материалами данной статьи.
Существует большое количество сервисов для обучения и тестирования различного ПО, например анализа ВПО, песочниц и тренировок по пентесту (в своем ТГ канале я делал подобную подборку — заходи), но что, если мы вдруг захотели создать свою лабораторию и сделать это буквально в пару кликов.
Кроме того, мы по сути реализуем тестовый полигон практически для любых учебных целей. Есть известные сервисы для эмуляции сетевого оборудования, например GNS3 или EVE-NG. Наша задача в данном случае сделать такую реализацию, где в случае необходимости мы смогли бы развернуть тестовый стенд под любые задачи максимально быстро.
Kasm Workspaces — это платформа для удаленного доступа к рабочим столам, построенная на базе Docker контейнеров. Вместо тяжелых виртуальных машин, Kasm использует контейнеры, что делает его более легковесным и эффективным решением.
Kasm Workspaces позволяет исследователям в области информационной безопасности эффективно управлять своими рабочими средами, минимизируя риски и повышая производительность. Платформа особенно полезна при работе с потенциально опасным ПО, где требуется высокая степень изоляции и контроля над средой выполнения, а также подготовке в проведении пентестов и обучении специалистов ИБ.
Kasm предоставляет готовые образы Docker, например Kali Linux, одновременно позволяя добавлять собственные или модифицировать существующие через веб-интерфейс.
Теория как всегда доступна в интернете, мы же сразу приступим к практике.
Устанавливать будем на Ubuntu Desktop 24 с самыми последними обновлениями. Почему не сервер? Я исхожу из того, что в дальнейшем мне понадобятся различные инструменты с GUI поэтому выбрал сразу решение с предустановленным рабочим столом.
ВАЖНО ОТМЕТИТЬ что вы должны помнить следующее — НИ В КОЕМ СЛУЧАЕ не проводить тесты потенциально вредоносного ПО на prod серверах, в рабочем контуре или своей основной машине.
В моем случае я устанавливаю все на тестовый Proxmox с отдельным vlan в изолированной сети. Мы будем запускать EICAR-Test-File и KnowBe4’s RanSim для максимальной учебной имитации и реализуем легенду, о том, что нашли в сети потенциальный С2 agent злоумышленников.
Опытные коллеги из ИБ скажут, что это не совсем схоже с тем, что мы делаем при расследовании настоящих атак, но в данной ситуации мы делаем максимально простую версию тестовой лаборатории. Да и помним про NDA. Кроме того, основная задача данной статьи в том, чтобы дать вам инструмент, который ничем не уступает тем же снапшотам при проведении тестирования, плюс будет гораздо удобнее в эксплуатации.
Кроме того ВАЖНО ПОМНИТЬ, что запуская что-то потенциально опасное в контейнере или виртуальной машине, которую вы считаете безопасной и изолированной — ВСЕГДА есть риск того, что вы нарветесь на exploit, который позволит выйти из вашего гипервизора или контейнера. В случае если у вас все обновлено, вы просто можете словить zero day. Всегда помните о безопасности.
Приступим к установке
Существует несколько видов установки Kasm Workspaces — Standard и Offline, single server и multi server. Мы остановимся на standard в варианте single server.
Для offline просто нужно скачать чуть больше файлов. Для максимальной имитации работы в тестовой лаборатории и безопасности стоит выбрать второй, так как представим, что после установки вы находитесь в полностью изолированном сегменте сети, физически отключенным как от интернета, так и от вашей локальной сети, где у вас есть например сервер с Proxmox и ваш ноутбук с Kali.
У Kasm очень хорошая документация по установке, в том числе описание рекомендуемых системных требований. Советую с ней ознакомиться, моя же задача в данном случае, сделать максимально простую инструкцию, не вдаваясь в подробности.
Для простоты мы выберем первый вариант, так как не будем запускать ничего плохого, а лишь имитируем работу с ВПО.
Итак, на Ubuntu Desktop 24.04.2 запускаем
sudo apt update
sudo apt full-upgrade
cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.16.1.98d6fa.tar.gz
tar -xf kasm_release_1.16.1.98d6fa.tar.gz
// по поводу swap решайте сами, я сделал 8192, вы можете выполнить просто
sudo bash kasm_release/install.sh
sudo bash kasm_release/install.sh --accept-eula --swap-size 8192
Ждем пока завершится установка и пройдем по адресу
https://your_server_ip
Сертификат самоподписанный, поэтому появится предупреждение.
В ходе установки выше у вас были сгенерированы учетные данные, вводим их
Зайдем с помощью учетной записи admin@kasm.local

Видим основной Dashboard и меню слева

Если мы выведем на сервере
docker ps
Увидим, что все запущено в контейнерах
Для удобства установим Portainer
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Пройдем по адресу
http://your_server_ip:9000
Зададим пароль и получим удобное управление контейнерами (помогает когда нет большого опыта с docker-cli)

В разделе Администратор — Рабочие области у нас доступно 2 меню, собственно сами Рабочие области и Реестр, где содержатся нужные нам образы. Там же вы можете добавить (на свой страх и риск) сторонние реестры, выбрать готовое рабочее пространство или добавить свое. Готовые реестры есть в документации на сайте Kasm.
Кстати сказать, доступны образы Kali и Parrot 🙂



Выберем для примера следующие образы и дождемся загрузки (я специально взял не самые большие по размеру, поэтому обойдемся без Kali и Parrot)

Ждем когда загрузится и на рабочем столе видим

По сути это ОС в вашем браузере или же отдельное приложение — например Chrome. Не буду сильно перегружать скриншотами, думаю принцип вполне понятен.
Windows нет в стандартных реестрах (я не нашел), но это легко решается через простой запуск стороннего контейнера и подключение кастомного реестра, например в виде ссылки
Здесь у нас сторонний контейнер с Windows — не связан с Kasm

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

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

Аналогично можно сделать со всем что run in docker, например MacOS 🙂
В целом все готово и вы можете пользоваться вашим тестовым стендом ориентируясь на собственные задачи. Дальнейшее повторять не нужно, это просто пример, того, что можно сделать в KASM.
Давайте создадим простое тестовое окружение, ориентируясь на нашу легенду выше.
Начнем с проверки на потенциальное выполнение ВПО. Для этого нам понадобится EICAR-Test-File и KnowBe4’s RanSim.
Давайте проверим на Windows
Windows Defender включен
Скачиваем EICAR

Теперь с помощью KnowBe4’s RanSim имитируем страшный сон любого системного администратора — атаку шифровальщика, да еще и не одного.
Отмечу — на данном этапе Windows Defender отключен (!в учебных целях и на программе, которая лишь имитирует работу ransomware)

Как итог

А теперь представим что мы нашли C2 агент (мы так думаем), и хотим его изучить, запустив его в нашем контейнере с Windows и проанализировать. В данном примере я просто поднял один из Pentest Framework и сгенерировал агента для Windows.
Изучим процессы

Отправим его на Virustotal

Само собой он генерировался просто как есть, без обфускаций и прочих вещей. Мы на стороне Blue team и делаем это только в учебных целях. Никогда не занимайтесь противозаконными вещами. Будьте на стороне White hat.
И последнее, что мы сделаем — запустим reverse shell. Чтобы придерживаться нашей легенды, мы исходим из того, что было запущено что-то вредоносное и возможно злоумышленник сейчас на нашей Windows машине. Давайте его найдем.
Запустим Wireshark, изучим трафик, допустим мы обратили внимание на странное соединение на порту 3001 (не буду приводить скрин, фильтр самый обычный tcp.port == 3001).
Запуск powershell на Win машине

Получение reverse shell на другой машине с Linux (допустим это потенциальный злоумышленник)

Выполним просмотр папки на Windows через сессию

Теперь выполним ping

И благодаря Process Explorer и Wireshark мы находим нашего «злоумышленника» 🙂

Само собой это был лишь один из примеров, как можно использовать решение от Kasm Workspaces, начиная от проверки ВПО, заканчивая учебным стендом для Active Directory или Linux.
Успешного обучения!