DLL Side-Loading (Подмена DLL, Загрузка поддельной DLL) - это техника кибератаки, при которой злоумышленник размещает вредоносную динамически подключаемую библиотеку (DLL) в таком месте файловой системы, где легитимное приложение с более высоким уровнем привилегий будет загружать её вместо ожидаемой настоящей DLL. Это позволяет выполнить вредоносный код в контексте целевого приложения, обходя механизмы безопасности.
Ключевые аспекты
- Эксплуатация порядка поиска DLL: Windows ищет требуемые DLL в определенной последовательности (текущая директория приложения → системные директории → PATH). Атакующий помещает вредоносную DLL в директорию с более высоким приоритетом поиска (часто — туда, где лежит само приложение).
- Подмена легитимной DLL: Вредоносный файл имеет то же имя, что и DLL, которую законно пытается загрузить доверенное приложение (например, version.dll, comctl32.dll).
- Не требуется взлом приложения: Техника основана не на уязвимостях в коде приложения, а на особенностях работы механизма загрузки библиотек Windows. Приложение ожидает найти DLL и загружает её по правилам ОС.
- Повышение привилегий: Поскольку вредоносный код выполняется в памяти доверенного процесса (часто с высокими привилегиями, например, от имени администратора или SYSTEM), он наследует эти права. Это позволяет обойти UAC, файерволы, средства защиты от вредоносных программ.
- Маскировка: Легитимный процесс выполняет вредоносный код, что затрудняет обнаружение. Действия (доступ к сети, файлам) выглядят исходящими от доверенной программы.
Как это работает
- Приманка: Пользователю подсовывают (через email, USB-накопитель, скачивание) легитимное приложение (например, Winword.exe) вместе с вредоносной DLL (например, version.dll), помещенной в ту же папку.
- Запуск: Пользователь запускает Winword.exe.
- Загрузка DLL: При запуске Winword.exe пытается загрузить необходимые ему библиотеки, в том числе version.dll.
- Поиск DLL: Windows ищет version.dll:
- Сначала в папке, где лежит Winword.exe (текущая директория приложения).
- Находит вредоносную version.dll и загружает её.
- Не доходит до поиска в системных папках (C:\Windows\System32), где лежит настоящая version.dll.
- Выполнение вредоносного кода: Код внутри вредоносной version.dll выполняется в контексте процесса Winword.exe с его привилегиями.
- Маскировка и действие: Вредоносный код может:
- Выполнить свою полезную нагрузку (установка бэкдора, шифрование файлов, кража данных).
- Загрузить настоящую version.dll из системной папки и передать управление ей, чтобы приложение работало нормально, оставаясь незамеченным.
Цель DLL Side-Loading
- Обход контроля учетных записей (UAC).
- Обход защиты от вредоносных программ (AV/EDR), так как код выполняется в доверенном процессе.
- Устойчивость (persistence) - запуск вредоноса при каждом старте легитимного приложения.
- Кража данных или учетных данных из памяти процесса.
- Эскалация привилегий.
- Скрытное выполнение команд.
Основная уязвимость: Механизм поиска DLL в Windows, отдающий приоритет текущей директории приложения перед системными директориями по умолчанию.