- PVSM.RU - https://www.pvsm.ru -

Microsoft предоставит антивирусам возможность контроля за активностью подсистемы Linux на Windows 10

В предыдущих постах нашего корпоративного блога мы несколько раз касались [1] темы поддержки подсистемы Linux на Windows 10 (WSL), а также описывали [2] особенности ее технической реализации. Бета-версия этой подсистемы была доставлена пользователям в выключенном виде в рамках обновления Windows 10 Redstone 1 (Anniversary Update) в августе этого года.

Microsoft предоставит антивирусам возможность контроля за активностью подсистемы Linux на Windows 10 - 1

Недавно Microsoft начала анонсировать [3] изменения в ядре Windows, которые помогут AV-драйверам правильным образом работать с процессами подсистемы Linux, в контексте которых запускаются исполняемые ELF-файлы.

Известно, что до появления механизмов функций обратного вызова для контроля за различными операциями в режиме ядра, авторы драйверов брандмауэров и антивирусов использовали перехваты API-вызовов в системной таблице вызовов KiServiceTable, которую можно было обнаружить с использованием экспортируемой ядром переменной KeServiceDescriptorTable. С появлением новых уже документированных API-вызовов для регистрации callback-функций, разработчики перешли на их использование. К тому же 64-разрядные версии Windows не позволяли просто так перехватывать сервисы KiServiceTable изначально.

Microsoft предоставит антивирусам возможность контроля за активностью подсистемы Linux на Windows 10 - 2
Рис. Архитектура файловой системы WSL. Видно, что LXCore.sys эмулирует различные объекты Linux с использованием функций ядра Windows.

Одной из основных операций, которая контролируется антивирусами или HIPS является создание процессов и потоков. Драйвер может зарегистрировать функцию обратного вызова с помощью PsSetCreateProcessNotifyRoutineEx, а также PsSetCreateThreadNotifyRoutine. После этого при создании процессов или потоков в процессе, драйвер будет получать уведомление об этой операции. Microsoft модернизировала эти функции, добавив API PsSetCreateProcessNotifyRoutineEx2 и PsSetCreateThreadNotifyRoutineEx. Эти API-функции ядра помогут драйверам отслеживать активность внутри процессов подсистемы Linux.

Type = PsCreateProcessNotifySubsystems; //новый тип уведомлений
Status = PsSetCreateProcessNotifyRoutineEx2(Type, Callback,TRUE); //новая API

void Callback (_In_ HANDLE ParentId, _In_ HANDLE ProcessId, _Inout_opt_ PPS_CREATE_NOTIFY_INFO CreateInfo) {
if (CreateInfo->Flags.IsSubsystemProcess == 0) {
/* Код оригинального обработчика callback */
} else {
Type = ProcessSubsystemInformation;
Status = NtQueryInformationProcess(ProcessHandle, Type, &Subsystem, sizeof(Subsystem), NULL);
if (Subsystem == SubsystemInformationTypeWSL) {
/* Новый код для обработки создания процессов WSL */
}
}
}

Type = PsCreateThreadNotifySubsystems; //новый тип уведомлений
Status = PsSetCreateThreadNotifyRoutineEx(Type, Callback); //новая API

void Callback (_In_ HANDLE ProcssId, _In_ HANDLE ThreadId, _In_ BOOLEAN Create) {
Type = ThreadSubsystemInformation;
Status = NtQueryInformationThread(ThreadHandle, Type, &Subsystem, sizeof(Subsystem), NULL);
if (Subsystem == SubsystemInformationTypeWin32) {
/* Код оригинального обработчика callback */
} else if (Subsystem == SubsystemInformationTypeWSL) {
/* Новый код для обработки создания процессов WSL */
}
}

Microsoft опубликовала информацию о реализации VFS в подсистеме Linux на Windows 10
habrahabr.ru/company/eset/blog/303438 [4]

Microsoft раскрыла технические аспекты реализации подсистемы Linux в Windows 10
habrahabr.ru/company/eset/blog/302976 [2]

Microsoft подтвердила слухи об интеграции подсистемы Linux в Windows 10
habrahabr.ru/company/eset/blog/280584 [1]

Включение подсистемы Linux в Windows 10
habrahabr.ru/company/eset/blog/281418 [5]

Автор: ESET NOD32

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/windows/206894

Ссылки в тексте:

[1] касались: https://habrahabr.ru/company/eset/blog/280584/

[2] описывали: https://habrahabr.ru/company/eset/blog/302976/

[3] анонсировать: https://blogs.msdn.microsoft.com/wsl/2016/11/01/wsl-antivirus-and-firewall-compatibility/

[4] habrahabr.ru/company/eset/blog/303438: https://habrahabr.ru/company/eset/blog/303438/

[5] habrahabr.ru/company/eset/blog/281418: https://habrahabr.ru/company/eset/blog/281418/

[6] Источник: https://habrahabr.ru/post/314476/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best