
"Security Incidents In A Box!" Модульный, управляемый через меню, кроссплатформенный инструмент для создания настраиваемых, распределенных событий безопасности с задержкой по времени. Легко создавайте пользовательские цепочки событий для учений Blue- & Red Team и маппинга сенсоров/оповещений. Red Teams могут создавать ложные инциденты, отвлечения и приманки для поддержки и масштабирования своих операций. Стройте последовательности событий («сценарии») для симуляции реалистичных ситуаций и создавайте соответствующие артефакты в сети и файловой системе.
Инструментарий DumpsterFire — «Инциденты безопасности в коробке!»
(Обновление 27.05.2020: Да, я буду мигрировать все свои проекты на Github на Python3 в течение лета 2020 года.)
Инструментарий DumpsterFire — это модульный, управляемый через меню, кроссплатформенный инструмент для создания повторяемых, распределённых по времени событий безопасности. С лёгкостью создавайте собственные цепочки событий для учений синих команд и картографирования датчиков/оповещений. Красные команды могут создавать ложные инциденты, отвлечения и приманки для поддержки и масштабирования своих операций. Превращайте бумажные настольные учения в контролируемые «живые огневые» полигоны. Стройте последовательности событий («нарративы») для имитации реалистичных сценариев и генерируйте соответствующие артефакты в сети и файловой системе.
Инструментарий спроектирован так, чтобы быть динамически расширяемым, позволяя вам создавать собственные Fires (модули событий) для дополнения встроенной коллекции. Просто напишите свой модуль Fire и поместите его в каталог FireModules. Инструментарий DumpsterFire автоматически обнаружит ваши пользовательские Fires при запуске и сделает их доступными для использования.
Joe Gervais (TryCatchHCF)
Красные и синие команды обычно перегружены. Не хватает способа масштабировать возможности каждой команды, обеспечивая более эффективную работу красных команд и более реалистичные (и полезные) упражнения синих/фиолетовых команд. Автоматизация приходит на помощь! Инструментарий DumpsterFire — это кроссплатформенное решение с управлением через меню, позволяющее легко создавать собственные инциденты безопасности, объединяя модульные цепочки событий в единый нарратив. Эти коллекции событий (DumpsterFires) затем могут выполняться как автоматизированные процессы с задержкой по времени. (Конечно, их можно запускать и немедленно.)
Результат? Пока вы на совещании или наслаждаетесь жизнью, ваш DumpsterFire ждёт своего временного триггера. В ходе работы красной команды, пока вы заняты эксплуатацией открытого сервиса на забытом B2B-сервере, ваши клонированные и синхронизированные по времени DumpsterFires «зажигают» SIEM целевой организации в удалённой подсети, отвлекая их команду реагирования. Синие команды могут превратить бумажные настольные учения в события «живого огня», используя контролируемые, предварительно одобренные цепочки событий DumpsterFire для активации датчиков и оповещений, тренируя аналитиков в их реальной операционной среде. Фиолетовые команды теперь могут выполнять методичные, повторяемые цепочки событий для последовательного картографирования своей датчиковой и оповещательной инфраструктуры. Вы можете генерировать новые сценарии для тестирования и тренировки команд, опережая угрозы и будучи готовыми к инцидентам безопасности.
Когда-нибудь задумывались, как ваша синяя команда отреагирует на активность бота Mirai в вашей внутренней сети? Теперь вы можете это узнать! (Не волнуйтесь, модуль Fire Mirai bot не совершает pivot, но он использует те же имена пользователей и пароли для брутфорса telnet-сессий по всей целевой сети.)
Нет красной команды, но хотелось бы иметь простой способ проводить контролируемые, повторяемые, настраиваемые учения против всех смен вашего SOC? Сделано!
Хотите поддержать работу красной команды против удалённой команды, которая находится в 7 часовых поясах от вас, не просыпаясь в 3:00 утра? Жмите на кнопку повтора!
Когда-нибудь хотели одновременно зарикроллить все системы ваших противников во время ежегодных киберучений? «Never gonna let you down!»
Примеры DumpsterFires смотрите ниже. И, конечно, раздел Shenanigans.
Смотрите мои слайды с CactusCon 2017 (включены в проект). Слайды написаны так, чтобы быть самодостаточными, предоставляя предысторию, подходы, конкретные варианты использования и многое другое. Они поместят всё в контекст и не дадут вам заснуть. Если же они всё-таки усыпят вас — значит, вам наверняка нужен был отдых, так что в любом случае все в выигрыше.
DumpsterFire создаёт журнал событий с метками времени, чтобы красные и синие команды могли координировать и отслеживать события, соотнося их с тем, что было обнаружено (или не обнаружено) вашими датчиками, какие оповещения сработали или не сработали и т.д. Это также позволяет командам подтверждать, какие события относились к вашей операции/учению, что избавляет всех от неприятностей. Вся фиксация времени производится в UTC, поэтому ваши глобальные операции легко сопоставляются без необходимости беспокоиться о преобразованиях между часовыми поясами и линиями смены дат.
Автоматически генерируемые журналы событий с метками времени также обеспечивают простую добавленную стоимость ваших проектов. Создайте набор DumpsterFires для ваших клиентов, адаптированный под их поверхность атаки. По окончании операций вы можете передать журналы как дополнительный результат фиолетовой команды для послеоперационного анализа.
Рабочий процесс инструментария DumpsterFire спроектирован так, чтобы быть удобным и надёжным. Всё можно сделать из скрипта с меню dumpsterFireFactory.py. Запустите скрипт, и инструмент будет направлять вас по ходу дела. Вы можете начать с просмотра существующих модулей Fire и сохранённых DumpsterFires. Когда будете готовы создать собственные DumpsterFires, инструмент проведёт вас по рабочему процессу до завершения. Наконец, наступит время поджечь ваш DumpsterFire. После выбора нужного DumpsterFire вы просмотрите его модули Fire и настройки. Если всё выглядит хорошо — зажигайте!
При создании DumpsterFire после выбора всех модулей Fire, которые вы хотите включить, инструмент циклически пройдёт по списку Fires. Если у Fire есть настраиваемые параметры, инструмент вызовет его метод Configure() для запроса настроек (например, IP-адрес целевой сети).
Когда все Fires настроены, вам будет предложено назначить индивидуальные задержки по времени для ваших Fires. Это позволяет DumpsterFire лучше имитировать реальные операции при выполнении своей цепочки событий. Например, первый Fire может посещать различные хакерские сайты, следующий Fire загружать несколько распространённых хакерских инструментов, прежде чем запустить третий Fire, который начнёт сканировать локальную сеть. Если бы всё это происходило в течение нескольких секунд, ни один аналитик SOC не поверил бы, что это человек. Добавив несколько минут или даже часов между этими событиями, вы создаёте более реалистичную цепочку событий.
После настройки всех Fires и назначения индивидуальных задержек (опционально) вас попросят дать имя вашему DumpsterFire. Не используйте пробелы или странные спецсимволы, придерживайтесь букв, цифр, подчёркиваний и дефисов.
Вуаля! Вы создали свой первый DumpsterFire. Пора его поджечь!
Когда вы готовы зажечь DumpsterFire, инструмент сначала покажет его настройки. Если всё выглядит хорошо, вас спросят, хотите ли вы назначить задержку по дате и времени перед поджиганием. Вся обработка даты/времени производится в UTC для согласованного выполнения независимо от местоположения вашего DumpsterFire. В противном случае вы можете отклонить задержку, и выполнение начнётся сразу после окончательного подтверждения.
По мере выполнения DumpsterFire вы будете регулярно получать обратную связь с метками времени о статусе каждого Fire и критических событиях. Это не только помогает отслеживать прогресс, но и предоставляет хронологическую запись действий вашего DumpsterFire — что критически важно для координации и устранения конфликтов ваших событий на фоне общего шума, захлёстывающего каждый SOC. Вы также можете передать эту хронологию внешним клиентам после завершения операций как дополненную запись ваших действий, которую они смогут использовать для проверки своих датчиков и настроек оповещений. И всё это без дополнительных усилий с вашей стороны.
1 апреля бывает! А также киберучения или день рождения вашего лучшего друга. Некоторые обстоятельства требуют чего-то особенного. Наконец проникли в периметр противника в соревновании по сетевым войнам? Отпразднуйте с Shenanigans, закрепляя победу! Лучший друг оставил экран разблокированным в игровой вечер? Делиться — значит заботиться! Shenanigans от DumpsterFire позволяют добавить изюминку в вашу операцию.
Хотите открыть браузер системы по умолчанию и стримить всю эту крутость Рика Эстли? После того, как установите громкость системы на максимум? А может, открыть любой выбранный вами URL? Или подменить алиасы оболочки системы, чтобы притвориться, что файловая система повреждена?
dumpsterFireFactory.py — Инструмент с меню для создания, настройки, планирования и выполнения DumpsterFires
FireModules/ — Каталог, содержащий подкаталоги Fires; каждый подкаталог — определённая категория Fires для организации модулей Fire. Fires добавляются в DumpsterFire для создания цепочки событий и действий.
DumpsterFires/ — Каталог, содержащий вашу коллекцию DumpsterFires
igniteDumpsterFire.py — Безголовый скрипт, запускаемый из командной строки с именем файла DumpsterFire, который вы хотите выполнить. Полезен для поджигания распределённых DumpsterFires.
testFireModule.py — Утилита для модульного тестирования методов класса ваших пользовательских модулей Fire, без необходимости проходить весь процесс DumpsterFire Factory для отладки. Также полезна для запуска одного Fire для проверки настроек. testFireModule.py запросит настройки конфигурации, если применимо.
__init__.py файлы — Требуются, чтобы Python обрабатывал каталоги как содержащие пакеты Python; позволяют инструментарию DumpsterFire находить и загружать модули Fire.
Python 2.7.x
$ ./dumpsterFireFactory.py
Скрипт DumpsterFire Factory с меню проводит вас через каждый шаг, предоставляя контекстную справку по ходу дела.
В первом примере у нас есть DumpsterFire, который может быть либо учением SOC, либо отвлечением красной команды. DumpsterFire сначала выполняет поиск в Google хакерских инструментов. Следующий Fire открывает веб-сессии на различных хакерских сайтах. Затем следующий Fire загружает некоторые распространённые хакерские инструменты. После этого порт-сканер нацеливается на подсеть, за которым следует брутфорс логинов на одном хосте через Telnet. Последний Fire выполняет серию команд Linux. Обратите внимание, что между каждым Fire создатель этого DumpsterFire вставил задержки времени. Это делает поток событий более реалистичным.
В следующем примере фиолетовые команды создали DumpsterFire для анализа и валидации своих конфигураций датчиков и оповещений. Этот DumpsterFire выполняет хореографированную серию порт-сканов, каждый из которых нацелен на разные наборы портов и сервисов, с различной скоростью зондирования. Они вставили 5-минутную задержку между каждым сканирующим Fire, чтобы упростить изоляцию трафика, связанного с каждым сканирующим Fire. Когда они запускают этот DumpsterFire, они также видят метки времени в начале каждого Fire, чтобы помочь разграничить сетевую активность Fire и другие сетевые события.
Модульная конструкция DumpsterFire даёт вам гибкость для создания любого количества сценариев-нарративов цепочек событий. Модули Fire с настраиваемыми параметрами позволяют задавать целевые сети или системы и т.д. Однако есть несколько модулей Fire, которые сразу дают гибкость для значительного расширения ваших последовательностей событий DumpsterFire.
Не создавая новых классов FireModule, вы можете использовать эти существующие «пользовательские» модули Fire для использования и расширения ваших DumpsterFires:
Вы можете добавить любое количество этих модулей в ваш DumpsterFire, каждый со своими пользовательскими действиями. Например, вы можете соединить в цепочку дюжину модулей 'custom_url.py', чтобы построить полный, адаптированный сценарий просмотра веб-страниц. Затем вы можете иметь различные экземпляры Fire 'OSCommand/', выполняющие системные команды, чтобы ещё больше усилить желаемый сценарий событий. Fires из 'OSCommand/' особенно дают невероятную гибкость. Каждый отдельный Fire в вашей цепочке событий DumpsterFire принимает любые команды оболочки, подходящие для ОС хоста:
Пример: Linux/Unix (и терминал OSX)
find /home -name '*.bash_history' -exec cat {} ; ; echo "Never gonna give you up" > rickroll.txt ; wall rickroll.txt
DumpsterFire готов к использованию «из коробки», но его настоящая ценность в том, как легко вы можете расширить арсенал сценариев DumpsterFire, создавая собственные модули Fire. Создавая и настраивая модули Fire под свои конкретные нужды, вы можете быстро расширить типы сценариев DumpsterFire, которые можете строить и выполнять. Просто напишите свой новый модуль Fire и поместите его в существующий каталог в FireModules/, и инструментарий DumpsterFire автоматически загрузит его во время выполнения и сделает доступным.
Хотите, чтобы ваши пользовательские модули Fire находились в отдельной категории? Легко! Просто создайте новый каталог в FireModules/, и инструментарий DumpsterFire автоматически обнаружит его и сделает доступным как новую категорию Fires.
ПРИМЕЧАНИЕ: Убедитесь, что в вашем новом каталоге есть пустой файл с именем __init__.py, иначе менеджер пакетов Python не сможет его найти, и DumpsterFire его не увидит.
Ваш модуль Fire наследуется от класса FireModule. В качестве отправной точки вы можете скопировать существующий модуль Fire. Обязательно измените имя файла и все ссылки на имя класса в файле, чтобы они соответствовали вашему новому Fire. (Также при необходимости обновите ссылки на пути к категориям в методах конструктора класса.)
Обязательные методы класса:
Configure() — Запрашивает ввод у пользователя, заполняет параметры FireModule
Description() — Возвращает строку с описанием FireModule
GetParameters() — Возвращает одну строку параметров Fire
SetParameters( string ) — Принимает одну строку и заполняет члены Fire
ActivateLogging( boolean ) — Устанавливает флаг для генерации Fire журнала своей деятельности (отлично для просмотра) ПРИМЕЧАНИЕ: для первоначального релиза журналирование в stdout всегда включено.
Ignite() — Выполняет действия Fire
Тестирование классов Python может быть раздражающим, особенно когда вы хотите протестировать каждый метод класса модульно, заставляя вас пробираться через все варианты использования приложения, чтобы убедиться, что каждый метод класса выполняется в правильном порядке. Брр. Поэтому я написал и включил скрипт, который корректно вызывает каждый метод ваших новых классов, производных от FireModule, позволяя вам быстро пройти отладку. Пожалуйста. :-) Также отличный способ запустить один Fire для проверки настроек, посмотреть, что он делает и т.д.
В командной строке передайте скрипту testFireModule.py относительный путь к вашему пользовательскому модулю Fire. Тестовый скрипт вызовет каждый из обязательных методов FireModule в правильной последовательности (получение конфигурации перед сохранением и т.д.). Тестовый скрипт не использует обработку исключений, потому что Python даёт полезные ошибки (например, указывая на пропущенную двойную кавычку) только при сбое. Разбивайтесь и сгорайте на пути к успешному пользовательскому Fire!
У меня сейчас около 30 модулей Fire на разных стадиях разработки и отладки. Я буду выпускать их в течение октября и ноября. Каждый раз, когда я создаю один, мне хочется создать ещё два, так что следите за обновлениями.