DLL Hijacking: как работает подмена библиотек и как от неё защититься

1400
DLL Hijacking: как работает подмена библиотек и как от неё защититься

DLL Hijacking: как работает подмена библиотек и как от неё защититься

Программы Windows часто состоят из исполняемого файла и динамических библиотек DLL. В библиотеках хранятся функции, к которым приложение обращается во время работы. Если программа ищет DLL небезопасно, злоумышленник может подложить файл с тем же именем и заставить доверенное приложение выполнить вредоносный код.

Технику называют DLL Hijacking, то есть подменой DLL. Причиной часто становится ошибка разработчика, слабая защита папки или запуск программы из доступного для записи каталога. Вредоносная библиотека работает внутри легитимного процесса, получает его права и маскируется под штатный компонент.

Как устроена атака DLL Hijacking

Когда приложение запрашивает библиотеку только по имени, загрузчик Windows ищет файл в нескольких местах: среди загруженных модулей, в системных каталогах, в папке программы и по другим разрешённым путям. Порядок зависит от настроек процесса и способа вызова DLL.

Атакующий определяет имя библиотеки, создаёт вредоносную DLL и помещает её в каталог с более высоким приоритетом. При запуске приложение подключает подложенный файл, а код получает права запустившего программу пользователя или службы.

При DLL Search Order Hijacking злоумышленник использует порядок поиска библиотек. При DLL Sideloading рядом с вредоносной DLL размещают легитимный, иногда подписанный EXE-файл, который штатно загружает библиотеку с подходящим именем. Для сохранения работоспособности поддельная DLL может передавать вызовы настоящей библиотеке, пока вредоносный код крадёт данные, запускает команды или закрепляется в системе.

Чем опасна подмена DLL

DLL Hijacking скрывает активность за доверенным процессом. Автозапуск уязвимой программы обеспечивает повторный старт кода после входа пользователя или перезагрузки. Запуск через службу с повышенными правами расширяет возможности атакующего, хотя сама подмена не повышает привилегии автоматически.

Для размещения DLL нужен доступ к подходящей папке. Атакующий получает доступ после первичного заражения или из-за ошибочных разрешений, а вредоносная DLL может попасть в систему через архив или установочный пакет. Особенно рискованны переносимые приложения и временные каталоги.

Как распознать DLL Hijacking

Главный сигнал — библиотека загружается из неожиданного места. Системная DLL не должна без причины лежать в папке загрузок, временном каталоге или профиле пользователя. Подозрение вызывают новые файлы возле подписанного приложения, отсутствие подписи и несовпадение хеша с эталоном.

Администраторы отслеживают модули через Sysmon и EDR. Process Monitor показывает, какие DLL программа ищет и откуда загружает, а Sigcheck проверяет подписи. Специалисты сопоставляют путь, время появления файла, родительский процесс и сетевую активность.

  • подписанная программа загружает неподписанную DLL из пользовательской папки;
  • рядом с EXE появляется файл с именем системной библиотеки;
  • процесс запускает командную оболочку или подключается к неизвестному узлу;
  • защитное средство удаляет DLL, но файл возвращается после запуска приложения.

Как защититься от DLL Hijacking

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

В корпоративной сети пользователи не должны записывать файлы в каталоги приложений и служб. Windows Defender Application Control или AppLocker ограничивают запуск неизвестных компонентов. EDR стоит настроить на выявление загрузки неподписанных DLL доверенными процессами.

Разработчикам следует указывать полный путь к DLL или ограничивать поиск безопасными папками. Для этого применяют SetDefaultDllDirectories, безопасные флаги LoadLibraryEx и строгие разрешения. Критичные библиотеки проверяют по подписи и хешу.

Заключение

DLL Hijacking использует доверие между приложением и библиотеками. Атака часто остаётся незаметной: программа выполняет привычные функции, а вредоносный код действует внутри её процесса.

Надёжная защита сочетает безопасную разработку, жёсткие права доступа и контроль загрузки модулей. Разработчики задают точные пути, администраторы закрывают каталоги от записи и анализируют телеметрию, пользователи избегают сомнительных программ. Такой подход снижает риск подмены DLL, скрытого запуска кода и закрепления в Windows.

DLL Hijacking: как работает подмена библиотек и как от неё защититься

FAQ: часто задаваемые вопросы

Что такое DLL Hijacking простыми словами?

DLL Hijacking — подмена библиотеки, которую программа загружает при запуске или во время работы. Вместо штатного файла приложение подключает вредоносную DLL.

Чем DLL Hijacking отличается от DLL Side-Loading?

DLL Hijacking обозначает общий класс атак. DLL Side-Loading использует легитимный EXE-файл, запущенный рядом с подложенной библиотекой.

Может ли антивирус обнаружить подмену DLL?

Антивирус может распознать известный файл или подозрительное поведение, но новая DLL внутри доверенного процесса иногда требует анализа средствами EDR.

Какие файлы DLL считаются подозрительными?

Подозрение вызывают библиотеки без подписи, файлы из временных папок и копии системных компонентов в необычных каталогах.

Как разработчику предотвратить DLL Hijacking?

Следует загружать DLL по полному пути, ограничивать поиск DLL безопасными каталогами с помощью API и защищать папку приложения строгими разрешениями.

DLL Hijacking подмена DLL перехват DLL атака
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
10 000 человек уже думают как хакеры
Ты — пока нет. Реальные атаки, реальные стенды, реальная разница между «знаю» и «умею».
Присоединиться →
WHITE HAT // verified
РЕКЛАМА

Дэни Хайперосов

Блог об OSINT, электронике, играх и различных хакерских инструментах