Soft Splunk Attack Range в виртуальной гостевой Ubuntu VM: Руководство

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

1589482394745.png



Краткое руководство для тех, кто хочет запустить этот фантастический проект локально, а не в AWS.

Ссылка на проект: splunk/attack_range


Предисловие

Splunk Attack Range - это отличный проект от Splunk, который позволяет любому заинтересовавшемуся быстро (то есть автоматически) собрать и развернуть весь инфраструктурный стак с различным ПО, либо инструментом для тестирования кибер атака на уязвимые хосты, захвата и отправки логов с хостов, пересылки данных о событиях в Splunk и даже реализации SOAR playbooks (см. выше страницу GitHub проекта для получения подробной информации) .

Разворачивать мы будем «локально» (не в AWS Cloud), тем не менее, я нашел отличную документацию на странице GitHub, которая изначально нам пытается внушить, что локальная установка – легкая задача. Более того, есть документация и по Apple MacOS, но нет руководства по локальному выполнению этой задачи на виртуальной машине.

Да, это сработает, по крайней мере, должно сработать, и для многих, небольшая может подойти. Но я знаю много людей из Cyber Security, и они хотят изучить и использовать Splunk с необходимыми "событиями безопасности" для тестирования своих ресерчей в Splunk, но, в тоже время, не хотят расстраиваться из-за "всего остального", чтобы получить что-то вроде такого.

1589482501545.png

Обзор компонентов Splunk Attack Range


Зачем запускать это локально и в ВМ

Мне нравится моя операционная система хоста (Windows 10) чистая как свисток, и кроме Microsoft Office, NAPS, VmWare, Steam, iTunes, Dropbox и Firefox + менеджер паролей на ней больше ничего нет, а все остальное помещается в одну или две VM в VMware.

Запуск обьектов в VM означает, что я могу сделать "снэпшот" хорошо известного состояния и вернуться в это состояние за считанные секунды. Это дает возможность " тестировать/ломать обьекты", что ты, как кто-то в области Информационных Технологий и как "хакер", должен делать [на самом деле я просто ломаю вещи, так что это помогает].

AWS великолепна, и я люблю "облако", однако затраты на запуск нескольких ВМ в AWS не совсем бесплатны, а уничтожение/остановка диапазона в AWS не такое быстрое, как локальное программное обеспечение виртуализации, как VMware.


Киберпаранойя

Если вы скачиваете что-то из Интернета, которые "запускают код", вы никогда не знаете, что на самом деле происходит, если вы не просмотрите код и все зависимости, которые нужны коду...

Тотальная паранойя. И поэтому, я запускаю это внутри "чистой" только для этой цели ВМ, а не на моей основной операционной системе или ВМ, которая имеет доступ к моим файлам или учетным записям.

Да, я долго работал в Безопасности, но количество атак на систему поставок программного обеспечения за последние несколько лет только увеличилось, и это моя работа.


Пошаговое руководство

Читайте сверху вниз! Прочтите это после прочтения страницы проекта Splunk Attack Range Github и руководства по установки конфигурации 'local' Vagrant и Virtualbox.

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


Где возможно это запустить

Я запускаю среду на моем ПК с Windows 10 в VMware Workstation 15 Pro.

Теоретически любая приличная платформа виртуализации также подойдет, но VMware проверена мною годами. Если вы на Mac, тогда используйте Paralleles или VMware Fusion и т.д., в таком случае все должно работать хорошо.

1589482534196.png

Мой Attack Range, запущенный в Vmware в Ubuntu


Какую гостевую операционную систему вы используете для VMware?

Это важно учитывать, так как именно здесь могут начаться трудности зависимости/программного обеспечения.

Гостевая операционная система по моему выбору - Ubuntu 18.04.4 LTS Desktop.

Команда проекта Splunk Attack, кажется, запускает диапазон локально на своих машинах, так как Mac OS не виртуализированы.

Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
Virtualization: vmware
Operating System: Ubuntu 18.04.4 LTS
Kernel: Linux 4.15.0–99-generic
Architecture: x86–64


Какие настройки гостевой виртуальной машины вы используете?


Удивительно, что проект не дает здесь никаких рекомендаций, и дважды мне приходилось изменять размер места на жестком диске, так как для запуска четырех виртуальных ОС для "моего" диапазона атак (это настраивается, см. ниже) требуется много места на диске. Поэтому я рекомендую использовать от четырех до пяти ОС:
  • 8 x CPU процессор
  • ~16 Гб оперативной памяти
  • ~ 140 Гб дискового пространства
  • Включите опции Virtualization Engine (CPU Hardware)!
Если вы запускаете только Splunk и одну машину Windows 35 Гб дискового пространства, вам должно хватит 8 Гб оперативной памяти; если вы хотите получить полный опыт "windows доменов" и Kali, и не можете выделить 16 Гб оперативной памяти для вашей гостевой ВМ, идите по AWS путем.

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

1589482657336.png

Настрйоки vmware


Подождите, пока вы запустите виртуальные машины в виртуальной машине

Это хорошо будет работать, при отличной скорости на современном хорошем компьютере с быстрым SSD-накопителем (или NVME), большим количеством оперативной памяти и с хорошим процессором.


Предпосылки для гостевой VM Ubuntu.

Ниже приведена информация о том, что должно произойти до того, как вы попробуете запустить что-либо из проекта Splunk Attack Range.


Python DEV

Используется много строк python кода, создается виртуальная python среда с помощью pip (менеджер python пакетов), а также загружается/устанавливается уйма пакетов, и это мне не помогло, пока я не установил python-dev в Ubuntu для единственного пакета. Ошибка сборки pip psutil пакета выглядела аналогично:

Python:
ERROR: Command errored out with exit status 1:
 command: /home/user/attack_range/venv/bin/python -u -c 'import sys,  setuptools, tokenize; sys.argv[0] =  '"'"'/tmp/pip-install-rneywg_0/psutil/setup.py'"'"'; file='"'"'/tmp/pip-install-rneywg_0/psutil/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file,  '"'"'exec'"'"'))' install --record  /tmp/pip-record-1uxg11up/install-record.txt  --single-version-externally-managed --compile --install-headers  /home/user/attack_range/venv/include/site/python3.6/psutil


Python 3.6 уже установлен в Ubuntu, но некоторые библиотеки/заголовки доступны только в версии -dev (по-моему), которая нужна psutil с pip.

Поэтому, чтобы избежать этой ошибки в pip, установите python DEV:

sudo apt-get install python3.6-dev


Программное обеспечение для виртуализации Virtualbox

sudo apt-get install virtualbox virtualbox-qt virtualbox-dkms

После установки, просто запустите virtualbox и посмотрите, загрузится ли он. Обратите внимание, что Виртуальные Машины расположены в папке под домашним каталогом пользователя.


Vagrant


Не используйте упакованную версию Ubuntu!

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

Вам нужно вручную скачать и установить Vagrant и для этого в Ubuntu требует также программное обеспечение RPM.

Скачайте CentOS Vagrant RPM пакет с

и затем в терминале установите RPM.

sudo apt-get install rpm

и затем установите скачанный пакет Vagrant RPM.

sudo rpm -ivh vagrant_2.2.7_x86_64.rpm

Убедитесь, что Vagrant был установлен правильно, запустив

vagrant -v


Загрузка и подготовка диапазона атак

В основном, сейчас мы следуем условию: "Настройка Attack Range для Vagrant", но давайте разберемся с этим.

В терминале, измените каталог, в который вы хотите установить Splunk Attack ragne. Для быстрого доступа я выбираю папку Desktop.

Затем:

git clone [URL]https://github.com/splunk/attack_range[/URL] && cd attack_range

Этот код клонирует (загружает) проект из Github, и вы меняете каталог в эту папку. Затем запустите:

pip install virtualenv

Это устанавливает пакет python virtualenv. Это инструмент для создания изолированных сред Python. В данном случае для диапазона атак:

virtualenv -p python3 venv

мы создаем новую виртуальную среду под названием venv. Тогда:

source venv/bin/activate

это активирует virtualenv.

Обратите внимание, что вы должны увидеть это в окне терминала.

1589482869215.png

Активный virtualenv


Дальше выполните

pip install -r requirements.txt

Это установит десятки python пакетов в python virtualenv, которые необходимы для выполнения attack range скриптов. Если вы обнаружите здесь какие-либо ошибки, удачи вам в устранении неполадок с pip.


Что на самом деле происходит, когда я собираю "Range" с помощью attack_range.py.


Этот python скрипт (.py) считывает с конфигурационного файла attack_range.conf указания, что и как собирать.

Так как мы запускаем это локально, а не в облаке, то после запуск 'Vagrant', начинается сборка виртуальных машин по различным шаблонам в папке attack range.

Vagrant является инструментом автоматизации, который, по сути, собирает/запускает виртуальные машины против предварительно настроенных шаблонов в attack range с помощью бесплатного программного обеспечения виртуализации Virtualbox.

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

Допускается программное обеспечение автоматизации для "Операционных систем".


Первая сборка attack range


Теперь вы готовы построить range.

Не меняйте пока конфигурационный файл
attack_range.conf

Убедитесь, что вы находитесь в нужной папке в вашем терминале, и virtualenv venv настроен для вашей python среды, а затем соберите среду.

python attack_range.py -m vagrant -a build

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

1589482944896.png

Сборка. Сначала Vagrant затем ansible.

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

Доступ к Splunk теперь можно получить через веб-браузер в гостевой виртуальной машине по адресу:



Username - admin, а пароль в attack_range.conf.

Также вы должны увидеть запущенную ВМ Splunk Virtualbox.


Фото для демонстрации

Слева - терминал, где я запустил python attack range attack. Браузер Firefox открыт и подключен к серверу Splunk, а справа - Virtualbox, на котором запущен сервер Splunk, и все это внутри гостевой VM Ubuntu.

1589482991618.png

Первая сборка attack range, запущенная внутри гостевой виртуальной машины ubuntu guest vm.


Если эта сборка по умолчанию не удастся

Начните сначала и посмотрите, не пропустили ли вы что-нибудь. Проверьте сообщение об ошибке или почему скрипты провалились и что конкретно (vagrant, ansible, python)? Есть ли подобные открытые issues на GitHub, которые звучат знакомо?

См. также раздел Сложности, возникшие после сборки

Можно обратиться к Google, и если всё остальное не удаётся, создаете вопрос на странице GitHub проекта.


Правильное построение Attack Range

Теперь давайте создадим attack range с некоторыми Windows компьютерами, которые отправляют логи в Splunk, и мы сможем провести атаку.

Прежде всего, остановим текущую среду.

python attack_range.py -m vagrant -a stop

Пусть скрипт завершит работу, откроет файл attack_range.conf в выбранном вами текстовом редакторе, найдет раздел [environment], а затем изменит 0 на 1 на следующее:

Код:
windows_domain_controller = 1

windows_server = 1

kali_machine = 1

windows_client = 1

windows_server_join_domain = 1

windows_client_join_domain = 1


Очевидно, что это зависит от того, что вы хотите сделать/архивировать, но я хочу поиграть с некоторыми политиками Windows GPO, установить/управлять sysmon с помощью GPO и использовать metasploit (от Kali) против компьютеров Windows.

Сохраните свои изменения в файле конфигурации и снова создайте среду.

python attack_range.py -m vagrant -a build

Если все пройдет хорошо, примерно через 30-40 минут, все должно работать.

Быстрое подключение к Интернету, очевидно, помогает, так как загрузка Windows и т.д. требует времени. Обратите внимание, что первая сборка занимает больше времени, чем последующие сборки.


Сложности, возникшие после сборки

Две вещи, которые случились со мной:

1.Загрузка программного обеспечения: Скрипты загружаются из AWS образов/программного обеспечения, но возникают ошибки. Повторный запуск сборки через 5 минут сработал нормально; Как такое может произойти – не понятно.

2.Таймаут при остановке соединения: это случилось только один раз. Kali был построен, виртуальный ящик Kali был запущен, но vagrant скрипт ждал, когда виртуальный ящик включится и пытался подключиться к нему... это происходило долго, и в конце концов скрипт выдал таймаут.


Следующий шаг -> Давайте совершим Атаку!

Первое, что вы захотите сделать, это "проверить", работает ли на самом деле имитируемая атака и превращаются ли события в Splunk.

Используя метод scripted attack range (который использует Caldera и Atomic Red Team), мы можем запустить две техники технологии и против контроллера домена Windows, выполнив команду

python attack_range.py -m vagrant -a simulate -st T1117,T1003 -t attack-range-windows-domain-controller

Менее чем за 2 минуты симуляция атаки должна быть завершена, и ниже в Splunk, вы должны увидеть внутри приложения "Отчет о Attack Range " Splunk.

Успех! Диапазон определенно работает, и вы можете его использовать.

1589483105122.png

Панель Splunk Attack Range


Хотите еще что-нибудь отметить?


Сделайте "снэпшот" гостевой VM до/после установки программного обеспечения и т.д.

Команды "Attack Range" хорошо объяснены на GitHub, но если что-то "не удастся" и пойдет не так, я обнаружил, что открытие интерфейса Virtualbox, остановка и удаление VM действительно помогает. Однажды мне пришлось вручную удалить папку Virtualbox VM у пользователей "VirtualBox VM", для дополнительной очистки после нехватки дискового пространства, но после "повторной сборки" диапазон работал нормально.


1589483130721.png

VM VirtualBox в Ubuntu


Спасибо

Большое спасибо за весь вклад, который вы внесли в поддержание и строительство Splunk Attack Range, а также за десятки других проектов, которые находятся внутри этого проекта, таких как MITRE Caldera, Atomic Red Team, конфигурации Sysmon и Sysmon, и т.д.

Спасибо!

Надеюсь, это помогло кому нибудь.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!