Введение

Мы хотели бы поделиться опытом имитации атак MITRE в системе Windows с использованием инструмента Atomic Test Harnesses.

Ключевые термины и определения:

Atomic Test Harnesses (далее по тексту - ATH) - это open-source библиотеке, которая состоит из модуля Powershell для запуска имитации атак на Windows, а также пакета Python для запуска на macOS и Linux.

Mitre Att&ck (Adversarial Tactics, Techniques & Common Knowledge — «тактики, техники и общеизвестные факты о злоумышленниках») — основанная на реальных наблюдениях база знаний компании Mitre, содержащая описание тактик, приемов и методов, используемых киберпреступниками.

Цель данного тестирования - имитировать реальные техники атак и проверить, что ожидаемая телеметрия появляется в процессе тестирования. В дополнение к публикации, на тестируемой машине мы установим агент мониторинга wazuh, чтобы проверить возможности системы wazuh детектирования этих угроз.

Подготовка среды

В качестве тестового стенда мы будем использовать виртуальную машину Windows Server 2022.

Установка AtomicTestHarnesses

Перед установкой AtomicTestHarnesses убедитесь:

  • PowerShell версии 5 или более поздней. Подробнее см. в разделе Установка PowerShell .

  • Разрешение на тестирование. Всегда спрашивайте разрешения владельца вашей среды перед выполнением теста.

Существует три способа установки AtomicTestHarnesses: из галереи PowerShell , из GitHub как автоматически загружаемый модуль или из GitHub как явный импор��.

Ссылка на AtomicTestHarnesses

  1. Установка из галереи PowerShell

Для большинства пользователей установка AtomicTestHarnesses из PowerShell Gallery является наиболее простым методом.

Откройте PowerShell и выполните следующую команду:

Install-Module -Name AtomicTestHarnesses -Scope CurrentUser
  1. Установка как автоматически загружаемого модуля

Для автоматической загрузки AtomicTestHarnesses загрузите репозиторий с GitHub и поместите его в каталог модулей. По умолчанию существует несколько каталогов модулей, каждый со своей областью действия и разрешениями. Например, чтобы сделать AtomicTestHarnesses доступным для всех пользователей, скопируйте AtomicTestHarnessesв %ProgramFiles%\WindowsPowerShell\Modules.

Просмотреть список доступных каталогов можно, выполнив следующую команду:

(Get-Item Env:\PSModulePath).Value.Split(';')
  1. Установка как явный импорт

Чтобы явно импортировать AtomicTestHarnesses, загрузите репозиторий с GitHub и вызовите Import-Moduleфайл AtomicTestHarnesses.psd1. Например:

Import-Module C:\Users\Test\Desktop\AtomicTestHarnesses\AtomicTestHarnesses.psd1

Распространенные проблемы при установе

Если вы загружаете AtomicTestHarnesses с GitHub, ваш компьютер может пометить модуль как ненадежный. Вы можете снять пометку с модуля, выполнив следующую команду:

Get-ChildItem -Path Path\To\AtomicTestHarnesses -Recurse | Unblock-File

Если вы явно импортируете AtomicTestHarnesses и на вашем компьютере установлена ​​версия Pester 3.4.0, вам нужно будет вызвать ее Import-Moduleс включенными флагами -SkipPublisherCheckи -Force. Например:

Import-Module C:\Users\Test\Desktop\AtomicTestHarnesses\AtomicTestHarnesses.psd1 -SkipPublisherCheck -Force

Список доступных функций

После установки модуля вы можете просмотреть список доступных функций, выполнив следующую команду:

Get-Command -Module AtomicTestHarnesses

Чтобы узнать больше о конкретной функции, выполните команду:

Get-Help -Name <function name> -Full

Методы атак

На момент публикации статьи было доступно 17 методов атак Mitre для Windows

T1003.001_DumpLSASS

Дампинг учетных данных ОС: память LSASS

T1055.002_PortableExecutableInjection

Внедрение процесса: внедрение переносимого исполняемого файла

T1055_ProcessInjection

Внедрение процесса

T1059.001_PowerShell

Интерпретатор команд и сценариев: PowerShell

T1078.003_ValidAccounts

Действительные учетные записи: Локальные учетные записи

T1112_ModifyRegistry

Изменение реестра

T1127.001_MSBuild

Доверенные утилиты разработки: MSbuild

T1134.001_TokenImpersonation

Манипуляция токенами доступа: подделка/кража токенов

T1134.002_CreateProcessWithToken

Манипуляция токеном доступа: создание процесса с токеном

T1134.004_ParentPIDSpoofing

Манипуляция токеном доступа: подмена родительского PID

T1204.002_MaliciousFile

Запуск пользователем: Вредоносный файл

T1218.001_CompiledHTMLFile

Выполнение системного двоичного файла: скомпилированный HTML-файл

T1218.005_Mshta

Выполнение системного двоичного файла: Mshta

T1218.007_Msiexec

Выполнение системного двоичного файла: Msiexec

T1218_SignedBinaryProxyExecution

Выполнение системного двоичного файла

T1543.003_WindowsService

Создание или изменение системного процесса: служба Windows

T1574.012_COR_PROFILER

Перехват потока выполнения программ: COR_PROFILER

Тестирование

Рассмотрим на примере последней техники T1574.012.

Злоумышленники могут использовать переменную среды COR_PROFILER для перехвата потока выполнения программ, загружающих .NET CLR.

COR_PROFILER — это функция .NET Framework, которая позволяет разработчикам указывать неуправляемую (или внешнюю по отношению к .NET) профилирующую DLL для загрузки в каждый процесс .NET, загружающий Common Language Runtime (CLR). Эти профилировщики предназначены для мониторинга, устранения неполадок и отладки управляемого кода, выполняемого .NET CLR.

Переменная среды COR_PROFILER может быть установлена ​​в различных областях (система, пользователь или процесс), что приводит к разным уровням влияния. Системные и пользовательские области переменных среды указаны в реестре, где объект Component Object Model (COM) может быть зарегистрирован как DLL профилировщика. Область процесса COR_PROFILER также может быть создана в памяти без изменения реестра. Начиная с .NET Framework 4, профилирующая DLL не требует регистрации, если местоположение DLL указано в переменной среды COR_PROFILER_PATH.

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

Примеры процедур

ID

Название

Описание

G0108

Blue Mockingbird

Blue Mockingbird использует wmic.exe и модификацию реестра Windows, чтобы задать переменную среды COR_PROFILER для выполнения вредоносной DLL каждый раз, когда процесс загружает .NET CLR.

S1066

DarkTortilla

DarkTortilla может обнаружить профилировщики, проверив наличие и активность переменной среды COR_ENABLE_PROFILING .

Запуск

Для запуска выполним команду

 Invoke-ATHCORProfiler

Результат исполнения теста

Результаты детектирования с применением wazuh

Выводы

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