Техника перехвата вызовов функций прокси-DLL (DLL Proxying)

Вирус иконка

В статье рассмотрим технику DLL Proxying (проксирование DLL), которая используется для перехвата вызовов функций динамически подключаемых библиотек (DLL). Она позволяет заменить легитимную DLL на вредоносную, обеспечивая экспорт тех же функций, что и оригинальная библиотека. Когда удаленный процесс загружает вредоносную библиотеку для выполнения функции, он незаметно выполняет вредоносный код.

Еще по теме: Инъекция в сторонние процессы для обхода EDR

Что такое DLL Proxying

Вкратце, суть этой техники заключается в следующем:

  1. Вредоносная программа создает поддельную версию целевой DLL, которая содержит те же экспортируемые функции, что и оригинальная библиотека. Обычно она копирует список экспортируемых функций из оригинальной DLL.
  2. Поддельная DLL размещается в системе таким образом, чтобы приложение вместо оригинальной DLL использовало поддельную. Это может быть достигнуто, например, заменой оригинальной DLL в системном каталоге или путем изменения путей поиска библиотек в приложении.
  3. Поддельная DLL перехватывает вызовы функций и может выполнять вредоносные действия до или после передачи вызова оригинальной DLL. Вредоносная программа может также изменять параметры вызова или результат выполнения функции.
  4. После выполнения вредоносных действий поддельная DLL может передать вызов оригинальной DLL, чтобы сохранить функциональность приложения и скрыть свою активность.

Статья в образовательных целях, для обучения этичных хакеров. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.

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

Шаги выполнения прокси-DLL

  1. Выберите DLL для захвата. Предположим, она находится в c:\temp\legit.dll. Переместите её в c:\temp\legit1.dll.
  2. Получите список всех экспортируемых функций из c:\temp\legit1.dll.
  3. Создайте вредоносную DLL malicious.dll, которая, будучи загруженной целевым процессом, выполняет ваш полезный код.
  4. Внутри malicious.dll перенаправьте все экспортируемые функции legit.dll (это DLL, которую мы захватываем) на legit1.dll (это та же самая DLL, но с новым именем).
  5. Скопируйте malicious.dll в c:\temp\legit.dll.

На этом этапе любая программа, вызывающая любую экспортируемую функцию в legit.dll, будет выполнять наш вредоносный код, а затем передавать выполнение той же экспортируемой функции в c:\temp\legit1.dll.

Пример перехвата вызовов функций DLL

Важная часть кода — перенаправление функций:

Эти строки инструктируют компоновщик перенаправлять вызовы к legitFunction1, legitFunction2 и legitFunction3 к соответствующим функциям в LegitDLL или LegitDLLsss. Таким образом при вызове этих функций в malicious.dll, они будут перенаправлены к их аналогам в legit1.dll.

Итак, имеем обе DLL в C:\Temp:

Техника прокси-DLL DLL Proxying

Переименуйте LegitDLL.dll в legit1.dll и MaliciousDLL.dll в LegitDLL.dll:

Теперь вызовем legitFunction1:

Прокси-DLL DLL Proxying

Мы рассмотрели технику прокси-DLL, метод, используемый для обмана исполняемого файла (EXE) или процесса путем замены легитимной DLL на вредоносную. Данная техника может использоваться как в легитимных, так и в вредоносных целях. Понимание этого метода критично для разработчиков и специалистов ИБ для защиты приложений и обнаружения потенциальных угроз.

ПОЛЕЗНЫЕ ССЫЛКИ:

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий