Перехват 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 подписанными процессами или из необычных путей.





