Данная статья ялвяется переводом. Оригинал вотСсылка скрыта от гостей
Краткое руководство для тех, кто хочет запустить этот фантастический проект локально, а не в AWS.
Ссылка на проект: splunk/attack_range
Предисловие
Splunk Attack Range - это отличный проект от Splunk, который позволяет любому заинтересовавшемуся быстро (то есть автоматически) собрать и развернуть весь инфраструктурный стак с различным ПО, либо инструментом для тестирования кибер атака на уязвимые хосты, захвата и отправки логов с хостов, пересылки данных о событиях в Splunk и даже реализации SOAR playbooks (см. выше страницу GitHub проекта для получения подробной информации) .
Разворачивать мы будем «локально» (не в AWS Cloud), тем не менее, я нашел отличную документацию на странице GitHub, которая изначально нам пытается внушить, что локальная установка – легкая задача. Более того, есть документация и по Apple MacOS, но нет руководства по локальному выполнению этой задачи на виртуальной машине.
Да, это сработает, по крайней мере, должно сработать, и для многих, небольшая может подойти. Но я знаю много людей из Cyber Security, и они хотят изучить и использовать Splunk с необходимыми "событиями безопасности" для тестирования своих ресерчей в Splunk, но, в тоже время, не хотят расстраиваться из-за "всего остального", чтобы получить что-то вроде такого.
Обзор компонентов 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 и т.д., в таком случае все должно работать хорошо.
Мой 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)!
Последний пункт зависит от виртуализации программного обеспечения, но убедитесь, что включена опция «любой вариант», позволяющая виртуализации программного обеспечения использовать функции виртуализации вашего ЦП. Без этого мое Windows компьютеры не запустились бы внутри гостевой машины.
Настрйоки 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.
Обратите внимание, что вы должны увидеть это в окне терминала.
Активный 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 и ничего больше. По мере загрузки сервера, за несколько минут загружаются и устанавливаются пакеты для сервера и т.д.
Сборка. Сначала Vagrant затем ansible.
Если сборка работает, то скрипт python scrip должен завершиться, и вы должны вернуться в оболочку в вашем терминале.
Доступ к Splunk теперь можно получить через веб-браузер в гостевой виртуальной машине по адресу:
Ссылка скрыта от гостей
Username - admin, а пароль в attack_range.conf.
Также вы должны увидеть запущенную ВМ Splunk Virtualbox.
Фото для демонстрации
Слева - терминал, где я запустил python attack range attack. Браузер Firefox открыт и подключен к серверу Splunk, а справа - Virtualbox, на котором запущен сервер Splunk, и все это внутри гостевой VM Ubuntu.
Первая сборка 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.
Успех! Диапазон определенно работает, и вы можете его использовать.
Панель Splunk Attack Range
Хотите еще что-нибудь отметить?
Сделайте "снэпшот" гостевой VM до/после установки программного обеспечения и т.д.
Команды "Attack Range" хорошо объяснены на GitHub, но если что-то "не удастся" и пойдет не так, я обнаружил, что открытие интерфейса Virtualbox, остановка и удаление VM действительно помогает. Однажды мне пришлось вручную удалить папку Virtualbox VM у пользователей "VirtualBox VM", для дополнительной очистки после нехватки дискового пространства, но после "повторной сборки" диапазон работал нормально.
VM VirtualBox в Ubuntu
Спасибо
Большое спасибо за весь вклад, который вы внесли в поддержание и строительство Splunk Attack Range, а также за десятки других проектов, которые находятся внутри этого проекта, таких как MITRE Caldera, Atomic Red Team, конфигурации Sysmon и Sysmon, и т.д.
Спасибо!
Надеюсь, это помогло кому нибудь.