Mastodon Mastodon Mastodon Mastodon

Перехват DLL

Обновлено: · CyberSecureFox Editorial Team

Перехват DLL (DLL hijacking) — техника, при которой атакующий заставляет программу Windows загрузить вредоносную DLL вместо легитимной библиотеки, и его код выполняется внутри доверенного процесса.

Как работает перехват DLL

Программы Windows загружают динамические библиотеки (DLL) по имени. Если полный путь не указан, Windows перебирает последовательность мест: каталог приложения, системные папки, текущий каталог и папки из переменной PATH. Атакующий, который может записывать в каталог, проверяемый раньше, чем каталог с легитимной библиотекой, подкладывает туда DLL с тем же именем. Разновидности:

  • Перехват порядка поиска — DLL размещается в каталоге, который проверяется раньше настоящего.
  • Фантомная DLL — подкладывается библиотека, которую программа пытается загрузить, но которой в системе нет.
  • Подмена DLL — перезапись легитимной библиотеки в папке, доступной для записи.

Близкая техника — DLL sideloading, при которой атакующие приносят собственный легитимный подписанный исполняемый файл вместе с вредоносной DLL. В MITRE ATT&CK эти методы объединены в Hijack Execution Flow (T1574), а исходная слабость описана как CWE-427 (Uncontrolled Search Path Element).

Почему перехват DLL опасен

Вредоносный код работает внутри легитимной, часто подписанной цифровой подписью программы, что помогает обходить средства защиты. Атакующие используют перехват DLL для закрепления в системе, скрытности и повышения привилегий, когда служба, работающая от имени SYSTEM, загружает библиотеку из папки, куда могут писать обычные пользователи. Проблема давняя: в 2010 году Microsoft выпустила бюллетень Security Advisory 2269637 о небезопасной загрузке библиотек после того, как исследователи показали, что многие популярные приложения можно заставить загружать DLL с сетевых папок.

Как защититься от перехвата DLL

  • Разработчикам — загружать библиотеки по полному пути и ограничивать порядок поиска с помощью API вроде SetDefaultDllDirectories.
  • Не отключать безопасный режим поиска DLL (Safe DLL Search Mode) и запретить пользователям без прав администратора запись в папки программ и PATH.
  • Использовать контроль приложений (WDAC, AppLocker) с правилами для DLL.
  • Отслеживать загрузку неподписанных DLL подписанными процессами или из необычных путей.
Синонимы:
DLL hijacking, подмена DLL, перехват порядка поиска DLL