Сутки назад сайт WikiLeaks опубликовал очередную порцию утечек о закладках в американском ПО.
В этот раз утечка коснулась т.н. Проекта “Пандемия”. Были опубликованы 5 документов, касающиеся трёх версий этой закладки – Pandemic 1.0, Pandemic 1.1-RC1 и Pandemic 1.1. Во всех дальнейших рассуждениях и анализе мы будем опираться на последнюю доступную версию – Pandemic 1.1.
Project Pandemic
Задача данной закладки – незаметно для пользователя, обращающегося к файловому хранилищу, работающему на базе протоколов семейства SMB 2.x и старше, заменять тот файл, к которому идёт обращение.
Типовой сценарий использование – работа на файл-сервере или, допустим, контроллере домена Active Directory (туда регулярно за групповыми политиками будут приходить все рабочие станции в организации, и обращаться будут к папке SYSVOL как раз по протоколу SMB). Сам оригинальный файл при этом не модифицируется – задачей является подмена ответа на запрос по сети, а не локального обращения.
Схема внедрения Project Pandemic
Pandemic работает через штатные функции Windows – регистрируется в системе как минифильтр через появившийся в ядре NT 6.0 (Vista / Server 2008) функционал Filter Manager (FltMgr). Это позволяет ему перехватывать любые обращения к файловым ресурсам раньше, чем драйверам файловых систем FAT/NTFS/ReFS и отдавать результат до срабатывания системы кэширования (т.е. при включённом механизме кэширования на SMB-папках туда может закэшироваться “подменённый” ответ сервера).
Для того, чтобы полностью походить на “штатную, встроенную, очень важную и низкоуровневую функцию ОС Windows”, Pandemic, как “нормальный сервис”, использует для хранения своих параметров ключ реестра по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Null
:
(кликните для увеличения до 963 px на 495 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Данный раздел используется весьма специфичным драйвером с тем же названием – null.sys
:
(кликните для увеличения до 377 px на 516 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Pandemic использует этот раздел и при работе хранит там данные, создавая подключи (два, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Null\Instances
и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Null\Instances\Null
) и некие значения (помимо штатных, минимальных для NT-сервиса).
На приведённом скриншоте (система – Windows 8.1 Ent x64) видно, что никаких подключей и “дополнительных” параметров нет, что, судя по документации, должно говорить о том, что данный зловред на этой системе не запускался.
Хотелось бы отметить, что за время существования платформы Microsoft Windows было несколько зловредных приложений, которые также назывались null.sys
, но все они располагались в других каталогах, т.к. не могли перезаписать данный файл – поэтому надо не путать, в текущей ситуации закладка именно в той части Windows, под которую злоумышленники ранее лишь могли “мимикрировать”.
Резюмируя – Pandemic использует такие элементы ОС Windows, которые не получится отключить или модифицировать, поэтому, безусловно, это показательная “закладка”, сделанная на уровне проектирования компонентов операционной системы.
Признак работы Pandemic – утечка памяти
В документации описывается, что при каждом запуске экземпляра Pandemic – то есть, например, при каждом событии “админ перетаскивает drag-and-drop’ом в окно виртуалки файл через псевдоshare” – происходит утечка порядка 1 килобайта из NonPagedPool. Имеет смысл посмотреть на странный рост расхода NonPagedPool при массовых операциях со многими небольшими файлами – инфицированная система будет на каждую SMB-операцию по запросу файла инициировать экземпляр Pandemic, который будет по заданным параметрам (имя файла для замены, например) пытаться угадать “подменять ответ клиенту или не в этот раз”.
Что можно отключать
FltMgr отключить не получится – этот сервис, относящийся к группе FSFilter Infrastructure
, и расположенный физически по адресу %WinDir%\system32\drivers\fltmgr.sys
, считается критичным для системы. Вы получите BSoD, если системе не получится его подгрузить. Соответственно, “точка прописывания” у Pandemic будет вне контроля пользователя.
Null-драйвер отключить тоже не получится, он является компонентом ядра ОС.
Что делать
По сути – ничего. Различные механизмы сетевого уровня (подписывание SMB-трафика, включение IPsec) будут защищать уже подменённые файлы. В схеме “запросил по SMB одно – прислали другое” невозможно поставить преграду на уровне протокола.
Возможный вариант защиты в случае сценария “запускаю исполняемые файлы с сети” – запускать только подписанные файлы, притом подписанные доверенным внутренним CA. В этом сценарии подмена не пройдёт, т.к. несмотря на то, что с сервера будет загружен другой исполняемый файл, нежели запрашиваемый, локальная система не сможет его выполнить из-за политик SRP / AppLocker.
Хорошей профилактической мерой будет отключение Технология BranchCache для Windows 10. Этот механизм нужен для “коллективного” скачивания обновления ОС Windows по схеме “один в локальной сети скачал с удалённого сервера – другие могут запросить удалённый сервер о том, из каких блоков состоит целевой файл и, как в торрентах, поискать на соседних по LAN системах эти блоки и быстро скачать их”. Ранее он предназначался исключительно для корпоративных сетей и был встроен в Enterprise-версии клиентских ОС, но начиная с Windows 10 он присутствует и в домашних сетях. Соответственно, чтобы подстраховаться от ситуации “в сети есть заражённый узел, пришло время качать патчи, узел предоставил информацию о файле, я поискал по соседям по LAN и нашёл, скачаю с них и запущу на себе” имеет смысл отключить данный функционал:
(кликните для увеличения до 1021 px на 795 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
На сетевом уровне он общается по WS-Discovery, это UDP 3702 – если данный механизм не используется, есть смысл отключить его и заблокировать данный трафик.
На данный момент информация о том, как именно работает Project Pandemic, пополняется – поэтому, возможно, мы добавим сюда что-то новое.