Захват Dll что это такое

Обновлено: 30.06.2024


Перехват DLL – это атака, использующая алгоритм поиска и загрузки Windows, что позволяет злоумышленнику внедрить код в приложение посредством манипулирования диском. Другими словами, простое размещение DLL-файла в нужном месте приводит к тому, что уязвимое приложение загружает эту вредоносную DLL. Этот метод атаки использовался с момента появления Windows 2000 и до сих пор жив и здоров.

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

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

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

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

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

Обзор DLLSpy

Давайте опишем три движка, которыми обладает DLLSpy.

Динамический. Сначала DLLSpy сканирует загруженные модули, повторяя список загруженных модулей процесса. Затем он проверяет, может ли какой-либо из этих модулей быть захваченным, пытаясь записать в их местоположение файла на диске, а затем проверяя, могут ли они быть перезаписаны. Это происходит после дублирования токена доступа для explorer.exe, который является слабым токеном. Мы делаем это для того, чтобы проверить, есть ли у нас разрешение запись на местоположение DLL и на саму DLL как у обычного пользователя.

Статический — DLLSpy Находит все строки, содержащие имя DLL или путь к DLL, в двоичных файлах запущенных процессов.

Рекурсивный — DLLSpy статически сканирует все библиотеки DLL ранее проверенных процессов. Цель состоит в том, чтобы найти больше библиотек DLL, загруженных первым набором библиотек DLL, и посмотреть, уязвимы ли они для взлома.

Первоначальное тестирование — динамическое сканирование

  • Explorer.exe
  • OneDrive.exe
  • Комплект Microsoft Office
  • Teams.exe
  • SnippingTool.exe

Большинство программ уязвимы из-за одной конкретной библиотеки DLL FileSyncShell.dll и ее 64-разрядной версии FileSyncShell64.dll. Этот файл DLL находится в папке C:\Users\user\AppData\Local\Microsoft\OneDrive\номер_версии\, что является странным местом, особенно для библиотек DLL, используемых глобально. По сути, любой злоумышленник может внедрить код в набор программ, взломав файл FileSyncShell.dll.

На данный момент мы только убедились, что эта уязвимость работает в Windows 10 (все версии) при новой установке. Нам удалось взломать эту конкретную DLL, поскольку OneDrive установлен по умолчанию.

Например, FileSyncShell.dll всегда загружается сразу после запуска с помощью Explorer.exe (рис. 1). Злоумышленник, который успешно захватывает эту DLL, получает внедрение кода и устойчивость. Нет необходимости выполнять более сложную технику шумной инъекции, которая имеет более высокую вероятность обнаружения, только для захвата DLL, которая даже не критична для приложений, которые ее используют.

Краткий список нескольких других сторонних приложений, загружающих FileSyncShell.dll:

  • Google Chrome
  • Ида Про
  • Блокнот++
  • Черепаха SVN

Кроме того, кажется, что почти все основные программные продукты уязвимы для перехвата DLL, в том числе:

  • Мозилла
  • Google Chrome
  • Опера
  • Клиент Spotify
  • Slack-клиент
  • Клиент WhatsApp

В частности, кажется, что почти все библиотеки DLL, используемые OneDrive.exe (рис. 2) и Teams.exe, уязвимы для захвата. Windows не проверяет, есть ли у них цифровая подпись, даже если она есть.

Статическая проверка

После относительного успеха первого двигателя мы подумали: "Все эти возможности угона хороши, но можем ли мы получить больше? Мы хотим иметь возможность повысить наши привилегии». Здесь в игру вступает статический движок, обеспечивающий следующий уровень обнаружения.

Сбой в работе

Итак, мы получили следующее:

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

Подождите. Почему я говорю о WerFault.exe? Это совершенно нормально, что он появляется из-за моей плохо созданной DLL. Мы задались вопросом: должны ли мы провести еще один тест со статическим сканированием DLLSpy, чтобы увидеть, уязвим ли WerFault.exe для перехвата DLL? Итак, мы сделали. Мы обнаружили, что WerFault.exe пытается загрузить DLL с именем ext.dll, которой, если вы понимаете, о чем этот пост, не существует. Может быть, мы могли бы использовать его с пользой (рис. 4).

Итак, что такого особенного в WerFault.exe? Перехват его DLL приводит к обходу UAC. Процесс сообщения об ошибках иногда выполняется как привилегированный процесс. В основном это происходит, когда происходит сбой привилегированного приложения — установщиков, служб, критических процессов. Теперь всякий раз, когда WerFault.exe запускается с правами администратора и в контексте привилегированной учетной записи, WerFault пытается загрузить несколько библиотек DLL с именами: ext.dll, uext.dll и exts.dll.

Это новый способ обхода контроля учетных записей, который дополняет постоянно растущее число способов обхода технологии, защищающей администратора от автоматического повышения прав своих приложений. Хотя Microsoft не считает UAC границей, это все же препятствие, которое часто приходится преодолевать злоумышленникам. Мы видим, что процесс WerFault.exe имеет повышенные права (рис. 5), что позволяет нам выполнять код внутри процесса WerFault.exe в контексте привилегированного приложения.

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

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

Рекурсивное сканирование

Рекурсивный механизм расширяет поиск перехвата DLL, просматривая модули, загруженные по модулями. Другими словами, процесс A' загружает DLL с именем X. Модуль X загружает DLL с именем Y. Это продолжается до тех пор, пока не будет достигнут заданный уровень рекурсии. Другими словами, пользователь может указать глубину рекурсии.

Получение ценности

Давайте применим это на практике. Мы выполнили рекурсивное сканирование с номером уровня 3. Мы обнаружили процесс с именем PoaService.exe, который загружает библиотеку DLL с именем ati.dll. ati.dll пытается загрузить DLL с именем atiadlxx.dll. К сожалению, эта DLL не существует, что позволяет злоумышленнику повысить свои привилегии до локальной системы просто перезагрузив компьютер.

POAService.exe присутствует только в Dell, они исправили его в прошлом году. Cisco обнаружила эксплойт для повышения привилегий CVE-2017-2802. Хотя мы не обнаружили эту конкретную CVE, она показывает, насколько эффективна DLLSpy. Просто проведя несколько сканирований, нам удалось обнаружить повышение привилегий.

Насколько мне известно, на моем Dell Precision 5510 (прямо из коробки) нет никаких автоматических обновлений Dell для этой уязвимости. Это означает, что вам нужно перейти непосредственно на сайт Dell и установить обновление вручную, что совершенно не круто. Я настоятельно рекомендую всем владельцам Dell выполнить обновление вручную.

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

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

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

Вы можете найти репозиторий DLLSpy GitHub здесь.

Ответы Microsoft –

<р>1.Что касается уязвимости, которая позволяет обычному пользователю внедрить код в несколько приложений, включая продукты Microsoft и стороннее программное обеспечение, путем перехвата dll, Microsoft ответила: «Microsoft решила, что не будет исправлять эту уязвимость, и мы закрываем Это дело. “

Microsoft считает, что эта уязвимость не заслуживает исправления, хотя из-за плохой конструкции расширение оболочки FileSyncShell.dll, расположенное в незащищенной папке, может сделать программное обеспечение, хранящее конфиденциальную информацию, уязвимым для необнаруженного кода. инъекция.

  1. 27 ноября 2018 г.: Сообщено в Microsoft.
  2. 29 ноября 2018 г. Microsoft открыла дело.
  3. 3 декабря 2018 г. Microsoft решила закрыть дело.
  1. 2 декабря 2018 г.: отправлено сообщение в Microsoft.
  2. 6 декабря 2018 г. Microsoft открыла дело.
  3. 31 декабря 2018 г.: Microsoft признала наличие уязвимости, но решила закрыть дело.
<р>3. Что касается уязвимости в WerFault.exe, которая позволила нам повысить наши привилегии, Microsoft изначально заявила: Мы еще не определили дату выпуска исправления. Я дам вам знать, как только у меня будет эта информация».

Неделю спустя мы получили еще одно электронное письмо от Microsoft, в котором говорилось: Мы определили, что отчет, который вы нам прислали, относится к категории «не исправим». и мы заявили об этом публично».

Microsoft процитировала предложение из своего блога: «Каталоги , указанные в переменной окружения PATH, всегда находятся под управлением ACL администратора, и обычный пользователь не может изменять содержимое этих каталогов».< /эм>

  1. 12 декабря 2018 г.: Сообщено в Microsoft.
  2. 17 декабря 2018 г. Microsoft открыла дело.
  3. Декабрь 2018 г.: получено уведомление от Microsoft о том, что им удалось воспроизвести ошибку.

9 января 2019 г.: Microsoft закрыла дело. Все упомянутые выше приложения по-прежнему уязвимы для перехвата DLL в последней сборке Windows 10 — 17763.253

Предыдущая статья

Пони, спрятанный в твоем тайном саду

Дэвид Коэн из CyberArk представляет технический обзор Pony, самого распространенного типа вредоносного ПО.

Следующая статья

OpJerusalem FlashInstaller Ransomware

OpIsrael — это ежегодная скоординированная кибератака на израильское правительство и частные веб-сайты с помощью .

Gartner называет CyberArk лидером магического квадранта 2021 года для PAM

Рекомендуется для вас

Conti Group Leak!

Конфликт в Украине привлек значительное внимание со стороны сообщества кибербезопасности, в значительной степени из-за кибератак, проведенных против украинской инфраструктуры, включая доказательства.

Как Docker сделал меня более способным, а хост менее безопасным

TL;DR После того, как Docker выпустил исправление [1] для CVE-2021-21284 [2], он непреднамеренно создал новую уязвимость, которая позволяет пользователю с низким уровнем привилегий на хосте выполнять файлы из образов Docker.

Проверка уязвимых систем на наличие CVE-2021/

Что такое уязвимость PwnKit CVE-2021-4034? 25 января 2022 года была публично раскрыта критическая уязвимость в pkexec polkit (ссылка). Исследовательская группа Qualys назвала эту уязвимость.

Анализ вредоносного ПО с помощью хуков, Stomps и обратных адресов

Содержание Введение Первое обнаружение Обход модуля Stomp Обход модуля Stomp Detection Заключительные мысли Введение Это второй пост в моей серии, и этим постом мы начнем.

Атака на RDP изнутри: как мы использовали именованные каналы для захвата смарт-карт, несанкционированного доступа к файловой системе на клиентских машинах и многого другого

Атака на RDP изнутри: как мы использовали именованные каналы для захвата смарт-карт, несанкционированного доступа к файловой системе на клиентских компьютерах и т. д.

В этой записи блога мы собираемся обсудить подробности уязвимости в службах удаленных рабочих столов Windows, которую мы недавно обнаружили. Мы сообщили об уязвимости в Microsoft в.

Не доверяйте этому заголовку: злоупотребление эмуляторами терминала с помощью управляющих символов ANSI

Однажды, когда я работал над OpenShift, дистрибутивом Kubernetes от RedHat, ориентированным на удобство разработчиков и безопасность приложений, я заметил, что могу вставлять escape-символы ANSI.

Читайте также: