Суть атаки:
Network Provider DLL — это динамическая библиотека в Windows, которая позволяет ОС взаимодействовать с конкретными сетевыми протоколами. Она реализует набор функций (Network Provider API), которые использует Multiple Provider Router (MPR) для связи с разными сетями.
Компоненты данного типа автоматически загружаются при входе пользователя в систему и участвуют в процессах сетевой аутентификации, восстановления сетевых ресурсов и обработки учетных данных, что делает механизм привлекательным для persistence.
Злоумышленники могут зарегистрировать вредоносный Network Provider DLL, модифицировав ключ реестра:
HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
Параметр
ProviderOrder не хранит путь к DLL и не содержит информацию о модуле — он представляет собой только список имён провайдеров, которые Windows должна инициализировать через механизм MPR. Например:ProviderOrder = LanmanWorkstation,RDPNP,webclient,EvilProvider
В этом случае Windows будет воспринимать
EvilProvider как нового провайдера и попытается найти его описание:HKLM\SYSTEM\CurrentControlSet\Services\EvilProvider\NetworkProvider
Из данного раздела система получает путь к библиотеке через параметр
ProviderPath. Например:ProviderPath = C:\ProgramData\evilprov.dll
После регистрации Windows начинает обращаться к этой DLL как к обычному провайдеру и автоматически загружает эту библиотеку при входе пользователя. При этом Windows не проверяет, является ли провайдер системным: механизм загружает все компоненты, перечисленные в
ProviderOrder.Как ловить атаку:
Детектируем изменения в
ProviderOrder или создание ProviderPath для любого Network Provider, кроме штатных (LanmanWorkstation, RDPNP, webclient). Пример правила детектирования:logsource:
product: windows
category: registry_event
detection:
Selection_order:
TargetObject|contains:
- '\Control\NetworkProvider\Order\ProviderOrder'
selection_provider:
TargetObject|contains:
- '\Services\'
- '\NetworkProvider'
- '\ProviderPath'
filter_main_system:
Details|contains:
- 'LanmanWorkstation'
- 'RDPNP'
- 'webclient'
condition: (selection_order or selection_provider) and not filter_main_system