DLL Side-Loading (Подмена DLL, Загрузка поддельной DLL)

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, отдающий приоритет текущей директории приложения перед системными директориями по умолчанию.