Образец, который сначала приняли за обычный Cobalt Strike Beacon, оказался гораздо опаснее. Исследователи разобрали SakDriver, полноценный руткит для Windows, способный работать в режиме ядра, скрывать процессы и сетевые соединения, отключать сбор событий и выполнять команды с максимальными системными привилегиями.
SakDriver загружается как драйвер и получает доступ к Ring 0, самому привилегированному уровню Windows. Вредоносная программа вмешивается в работу Event Tracing for Windows и мешает защитным решениям собирать сведения о происходящем в системе. Для сокрытия процессов руткит напрямую изменяет структуры ядра с помощью техники DKOM, а сетевые порты прячет через перехват драйвера Network Store Interface.
Одной из самых необычных особенностей SakDriver стал канал управления через реестр Windows. Вместо прямого получения команд по сети вспомогательный процесс записывает данные в обычное значение реестра. Зарегистрированный руткитом обработчик перехватывает запись, проверяет специальную последовательность байтов и передаёт команду драйверу. Такой механизм сокращает число подозрительных сетевых и системных вызовов, которые могли бы заметить средства защиты конечных устройств.
Исследователи восстановили таблицу более чем из двух десятков команд. SakDriver умеет читать и изменять память процессов, обращаться к физической памяти, внедрять библиотеки и исполняемый код, удалять защищённые файлы, менять права доступа к страницам памяти и загружать PE-файлы напрямую из памяти. Руткит также способен подделывать ввод с клавиатуры и мыши, менять идентификаторы дисков, видеокарт NVIDIA и SMBIOS.
Для закрепления в системе вредоносный драйвер сохраняется в каталоге Windows\System32\drivers под именем вида sak_XXX.sys. Затем SakDriver создаёт службу с названием msXXXX и маскирует её под Microsoft Player Service. Программа регистрируется как файловый мини-фильтр, перехватывает запросы на просмотр каталогов и может скрывать собственные файлы от антивирусного сканирования.
Руткит защищает связанные с ним разделы реестра и блокирует попытки изменить параметры службы. SakDriver также использует Windows Filtering Platform, чтобы мешать защитным продуктам обращаться к инфраструктуре операторов вредоносной программы. Одновременно руткит скрывает соединения на портах 6891, 6543, 7543, 9199 и нескольких портах диапазона 12341–12343.
Для усложнения анализа SakDriver проверяет временные показатели гипервизора и может распознавать запуск в песочнице. Адреса функций ядра руткит находит самостоятельно, разбирая таблицу экспорта ntoskrnl.exe, поэтому в файле отсутствует очевидный набор импортируемых функций, способный выдать назначение драйвера при статическом анализе.
Разработчик всё же оставил несколько заметных следов. В образце сохранился путь к отладочному файлу CrackerDrv.pdb, а при сбое установки служба может получить прямое имя SakDriver. Исследователи также опубликовали хеш образца, сетевые индикаторы и правило YARA для поиска вредоносного драйвера.
Анализ SakDriver показывает, насколько опасным становится вредоносное ПО после проникновения в ядро Windows. Руткит не просто скрывает отдельный процесс, а вмешивается в механизмы журналирования, файловую систему, сетевой стек и управление памятью. Средства защиты, которые полагаются только на телеметрию самой операционной системы, могут не увидеть значительную часть активности заражённого компьютера.