Перейти к основному содержимому
  1. Блог/

Подмена Network Provider DLL позволяет красть учётные данные

·2 минут·

Техника подмены Network Provider DLL (T1556.008) используется злоумышленниками уже много лет, но до сих пор не потеряла актуальности. Совсем недавно, в мае этого года, команда Microsoft Incident Response опубликовала расследование инцидента, в котором атакующие применяли эту технику для кражи учётных данных; при этом использование легитимного ПО позволяло им долгое время оставаться незамеченными.

Суть атаки:

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

Related