Последовательность номер 9 не найдена в dll d2d1 dll
Обновлено: 21.11.2024
Перехват DLL – это популярный метод выполнения вредоносных полезных нагрузок. В этом посте перечислены около 300 исполняемых файлов, уязвимых для перехвата DLL относительного пути в Windows 10 (1909), и показано, как с помощью нескольких строк VBScript некоторые перехваты DLL могут быть выполнены с повышенными привилегиями в обход UAC.
Захват DLL
Прежде всего, давайте разберемся с определением. Перехват DLL — это, в самом широком смысле, обман легитимного/доверенного приложения для загрузки произвольной DLL. Такие термины, как Перехват порядка поиска DLL, Перехват порядка загрузки DLL, Подмена DLL, Внедрение DLL и Неопубликованная загрузка DLL часто ошибочно используется для того, чтобы сказать то же самое. В лучшем случае такие термины описывают конкретные случаи перехвата DLL, но часто используются взаимозаменяемо и, следовательно, неправильно. В качестве общего термина перехват DLL является более точным, так как перехват DLL всегда включает в себя DLL, замещающую законную DLL.
Было замечено, что злоумышленники используют перехват DLL разными способами и по разным причинам. Мотивы включают в себя выполнение (выполнение вредоносного кода через доверенный исполняемый файл с меньшей вероятностью вызовет тревожный сигнал, а в некоторых случаях даже обходит функции белого списка приложений, такие как AppLocker [1]), получение постоянства (если целевое приложение предварительно установлено и выполняется регулярно, как и вредоносный код) и повышение привилегий (если целевое приложение работает с повышенными разрешениями, то же самое будет и с вредоносным кодом).
Существует множество подходов, успех которых зависит от того, как приложение сконфигурировано для загрузки необходимых библиотек DLL. Возможные подходы включают:
- Замена DLL: замените подлинную DLL вредоносной DLL. Это можно комбинировать с DLL Proxying [2], что гарантирует сохранение всех функций исходной DLL.
- Перехват порядка поиска DLL: библиотеки DLL, указанные приложением без пути, ищутся в фиксированных местах в определенном порядке [3]. Перехват порядка поиска происходит путем размещения вредоносной DLL в местоположении, в котором выполняется поиск, до фактической DLL. Иногда это включает рабочий каталог целевого приложения.
- Похищение фантомной библиотеки DLL: установка вредоносной библиотеки вместо отсутствующей/несуществующей библиотеки DLL, которую пытается загрузить законное приложение [4].
- Перенаправление DLL: изменение местоположения, в котором выполняется поиск DLL, например. отредактировав переменную окружения %PATH% или файлы .exe.manifest / .exe.local, чтобы включить папку, содержащую вредоносную DLL [5, 6].
- Замена WinSxS DLL: замените подлинную DLL вредоносной DLL в соответствующей папке WinSxS целевой DLL. Часто называется боковой загрузкой DLL [7].
- Перехват DLL с относительным путем: скопируйте (и при необходимости переименуйте) законное приложение в доступную для записи папку вместе с вредоносной библиотекой DLL. В том, как это используется, оно имеет сходство с (подписанным) двоичным прокси-исполнением [8]. Вариантом этого является (несколько оксюморонически названный) «принеси свой собственный LOLbin» [9], в котором легитимное приложение переносится с вредоносной DLL (а не копируется из законного места на машине жертвы). .
Поиск уязвимых исполняемых файлов
Самая большая проблема — найти уязвимый исполняемый файл, который можно использовать с разрешениями пользователя по умолчанию. При нацеливании на предварительно установленные системные исполняемые файлы в Windows первый вариант обычно исключается, в то время как любые папки, соответствующие параметрам 2 и 3, должны быть доступны для записи пользователем, как и файлы и папки в параметрах 4 и 5. Обычно это не дело.
Поэтому у нас остается шестой вариант, самый слабый вариант, которому будет посвящена оставшаяся часть этого поста. Хотя обычно это неприемлемо для обеспечения постоянства или повышения привилегий, его часто можно увидеть в дикой природе. Возьмем, к примеру, OceanLotus/APT32, которые в конце 2019 года были замечены в использовании легитимного rekeywiz.exe вместе с вредоносной duser.dll [10, 11]. В этом случае вредоносная программа внедрила законное программное обеспечение и сбросила его на диск, приняв подход «принеси свой собственный LOLbin» (другой способ добиться того же — скопировать законный исполняемый файл из папки \ system32\, если исполняемый файл еще не исправлен).
Чтобы предотвратить успех новых версий этой методики, стоит определить исполняемые файлы, уязвимые для такого вида перехвата DLL. Это предоставит красным командам новые средства для исполнения, но, что более важно, позволит охотникам за угрозами и защитникам принимать соответствующие меры для обнаружения и предотвращения.
Подход
Чтобы сосредоточиться, давайте ограничимся исполняемыми файлами, присутствующими по умолчанию в c:\windows\system32\ . В протестированном экземпляре Windows 10 версии 1909 в общей сложности было 616 исполняемых файлов или 613, если рассматривать только подписанные приложения.
Procmon перехватывает запросы DLL с помощью копии winsat.exe, расположенной в папке c:\users\wietze\downloads\ .
Это позволяет нам идентифицировать все библиотеки DLL, запрашиваемые каждым приложением, которые будут всеми потенциальными кандидатами на перехват DLL. Но из этого автоматически не следует, что все они также загружаются (и, следовательно, выполняются). Самый надежный способ узнать, какие библиотеки DLL загружены правильно, — это скомпилировать нашу собственную версию DLL и заставить ее записывать в уникальный файл после успешной загрузки. Если затем мы повторим описанный выше подход для всех целевых исполняемых файлов и библиотек DLL, это приведет к набору файлов, который сообщает нам, какие библиотеки DLL подтверждены уязвимы для захвата DLL.
Компиляция пользовательских версий существующих библиотек DLL является более сложной задачей, чем может показаться, поскольку многие исполняемые файлы не будут загружать такие библиотеки DLL, если отсутствуют процедуры или точки входа. Такие инструменты, как средство просмотра экспорта DLL [13], могут использоваться для перечисления всех имен внешних функций и порядковых номеров законных библиотек DLL. Обеспечение того, чтобы наша скомпилированная DLL соответствовала тому же формату, увеличит шансы на ее успешную загрузку.
Пример кода C для нашей собственной версии dxgi.dll, который появился в записи Procmon для winsat.exe.
Подводя итог, можно сказать, что используется следующий подход:
Полный код с более подробным техническим объяснением можно найти на GitHub [14].
Подтвержденные кандидаты на перехват DLL
В следующей таблице перечислены все исполняемые файлы в каталоге c:\windows\system32 в Windows 10 версии 1909, которые уязвимы для перехвата DLL по относительному пути. Рядом с каждым исполняемым файлом находится одна или несколько библиотек DLL, которые можно захватить, вместе с вызываемыми процедурами этой библиотеки DLL. Как объяснялось в предыдущем разделе, это не просто теоретические мишени, они проверены и работают. Список включает 287 исполняемых файлов и 263 уникальных DLL.
- Тест выполнялся путем простого запуска каждого исполняемого файла без указания каких-либо параметров и без дальнейшего взаимодействия с пользователем. Это объясняет, почему в этом списке нет хорошо задокументированного перехвата DLL xwizard.exe [15], потому что для его работы требуются два (произвольных) аргумента.
- Некоторые приложения поставляются с графическим интерфейсом или каким-либо другим визуальным элементом, который выдает исполняемый файл. Это также включает сообщения об ошибках: необходимые библиотеки DLL могут отсутствовать, а украденная DLL явно не имеет исходной функциональности. Злоумышленники с меньшей вероятностью будут использовать такие приложения для захвата DLL.
- DLL, исходная версия которых была написана на C++, не учитывались.
Версию полного списка в формате CSV можно найти на GitHub [14].
В сочетании с обходом UAC
Нахождение всех этих исполняемых файлов, самое большее, позволяет нам выполнять код через доверенные программы. Однако также можно получить повышенные права, если использовать их в сочетании с методами обхода UAC.
Контроль учетных записей пользователей (UAC) [16] был введен в Windows Vista как функция безопасности, которая запрашивает у пользователей подтверждение с помощью запроса, прежде чем процесс, работающий с обычными привилегиями, получит более высокие привилегии. После того, как пользователи пожаловались на то, что при выполнении произвольных задач их переполняют запросы UAC, Microsoft представила автоматическое повышение прав в Windows 7, которое автоматически повышает права определенных процессов, если они расположены в доверенных каталогах (например, c:\windows\system32). ).
Имея это в виду, вы можете попробовать запустить произвольный код с повышенными привилегиями, используя исполняемый файл, помеченный для автоматического повышения прав, который также уязвим для перехвата DLL. Как видно из предыдущего раздела, таких исполняемых файлов около 35. Проблема, которую необходимо преодолеть, связана с доверенным каталогом: и исполняемый файл с автоматическим повышением прав, и пользовательская DLL должны находиться в доверенном каталоге, но ни один из них не может быть записан пользователем.
Есть отличные исследования по обходу UAC. Один из моих любимых методов — имитация доверенных каталогов с использованием завершающих пробелов [17]. Я бы порекомендовал прочитать полный пост в блоге, но он сводится к тому, что пользователи могут создавать c:\windows\system32\ (обратите внимание на пробел после первой папки), а исполняемые файлы с автоматическим повышением прав, размещенные в этой папке, считают это надежным расположением. .
Спорный вопрос, является ли это надлежащей уязвимостью системы безопасности — Microsoft утверждает, что это не так [18], но это, по крайней мере, недостаток, учитывая, что большинство (не корпоративных) компьютеров Windows используют «учетные записи администратора» по умолчанию.
В любом случае, это дает нам превосходное средство, с помощью которого перехват DLL может стать намного более мощным. Обратите внимание, что папки с пробелами в конце не могут быть созданы традиционными способами в Windows. Для этого можно скомпилировать несколько строк C, как это сделал первоначальный исследователь, но оказывается, что VBScript может сделать это и для нас. Следующее доказательство концепции показывает, что с помощью всего нескольких строк кода вы можете заставить это работать:
Получили ли вы сообщение об ошибке «Порядковый номер не найден»? Вы также видите ссылку на отсутствующую DLL? Тогда это означает, что программа пытается найти связанный файл, а он отсутствует. Математически порядковый номер относится к порядку числа, например, 1-й, 2-й и так далее. В этом сообщении об ошибке он указывает на n-й файл с именами, скажем, ABC.DLL, который отсутствует. Отсюда и сообщение об ошибке.
Порядковый номер не найден
Если вы получаете сообщение об ошибке «Порядковый номер ABC не может быть расположен в библиотеке динамической компоновки C:\Program Files (x86)\Microsoft VS Code Insiders\code – Insiders.exe», то это означает, что на вашем компьютере отсутствует распространяемый компонент Microsoft Visual C++.
ABC – это число, которое, в свою очередь, является порядковым номером. Другое распространенное сообщение об ошибке: «Порядковый номер 12404 не может быть расположен в библиотеке динамической компоновки mfc90u.dl»
Сообщение может указывать на любую DLL в сообщении. Все эти DLL являются частью пакета, и когда Visual Studio ищет эту DLL, сообщение об ошибке немного меняется.
Установите распространяемый компонент Microsoft Visual C++
Это сообщение об ошибке появляется, когда на вашем компьютере отсутствует распространяемый пакет Microsoft Visual C++. Нажмите здесь для 32-битной версии или здесь для 64-битной версии. Если вы используете более раннюю версию Visual Studio, вы можете перейти сюда и загрузить соответствующую версию.
После установки распространяемого пакета Microsoft Visual C++ Feature Pack это сообщение об ошибке больше не должно появляться.
Установите OpenSSL
Если вы получаете такое же сообщение об ошибке, но в нем говорится, что LIBEAY32.DLL отсутствует, вам необходимо установить OpenSSL. Полное сообщение об ошибке выглядит следующим образом:
Порядковый номер не найден. Не удалось найти порядковый номер [ABC] в библиотеке динамической компоновки Libeay32.dll.
При установке OpenSSL обязательно устанавливайте его в системный каталог Windows. Libeay32.dll связана с безопасностью.
Проверьте с помощью Центра обновления Windows
Майкрософт часто развертывает платформу и связанные с ней обновления через Windows. Возможно, обновление, связанное с . Перейдите в «Настройки» > «Обновление и безопасность». Проверьте, ожидается ли обновление, и если да, обновите его и при необходимости перезагрузите компьютер.
Поскольку возможность появления сообщения об ошибке "Порядковый номер не найден" может быть очень большой, для получения точного результата лучше всего выполнять поиск по определенному номеру.
Дата: 23 января 2019 г. Теги: ошибки
Похожие записи
Исправить ошибку 0x80010105 в Windows 11/10
Исправить Недостаточно системных ресурсов для устранения ошибки API в Windows 11/10
Произошла системная ошибка 5, доступ запрещен в Windows 11/10
сообщить об этом объявлении
[электронная почта защищена]
Ашиш — опытный пользователь Windows и Xbox, который отлично пишет советы, приемы и функции, чтобы улучшить вашу повседневную работу с вашими устройствами.
Обсудите и поддержите Word и Excel не открываются и проблемы с файлом D2d1.dll при сбоях и отладке Windows 10 BSOD для решения проблемы; У меня были две проблемы с моим ноутбуком в течение нескольких дней. Во-первых, каждый раз, когда я запускаю свой ноутбук, я получаю сообщение об ошибке, в котором говорится: «Код. Обсуждение в разделе «Сбои и отладка Windows 10 BSOD», начатое avaelaine1, 13 января 2019 г.
Word и Excel не открываются и проблемы с файлом D2d1.dll
Word и Excel не открываются и проблемы с файлом D2d1.dll — похожие темы — Word Excel открывается
не удается открыть файлы Word или Excel
Word и Excel не открываются
Не удается открыть Excel или Word
Надежен ли файл d2d1.dll?
Безопасен ли файл d2d1.dll?: Моя Windows 10 обновлена до версии 1809, сборок KB4480966 и KB4480979. Однако после обновления мой Hitman Pro обнаружил троян, идентифицированный как c:\\windows\sysWOW64\d2dl.dll. Согласно информации, издателем является корпорация Microsoft, и она была защищена.
Проблема с макросом Excel для открытия файлов Word
Проблема с макросом Excel для открытия файлов Word: у меня возникла проблема с макросом Excel, который открывает файлы Word. Макрос открывает файлы нормально, но иногда файл не виден; вместо этого он скрыт в окне за книгой Excel, а значок Word на панели задач мигает, показывая, что файл открыт. Я хочу.
Проблема с макросом Excel для открытия файлов Word
Проблема с макросом Excel для открытия файлов Word: у меня возникла проблема с макросом Excel, который открывает файлы Word. Макрос открывает файлы нормально, но иногда файл не виден; вместо этого он скрыт в окне за книгой Excel, а значок Word на панели задач мигает, показывая, что файл открыт. Я хочу.
Word, Excel Outlook не открывается
Word, Excel Outlook не открывается: когда я пытаюсь открыть любое из следующих Microsoft Word, Excel, PowerPoint Outlook, ничего не происходит. Экран постоянно вращается, и он не работает, и сообщение об ошибке не выдается.
Поврежден файл d2d1.dll
Поврежден файл d2d1.dll: Hitman Pro сообщает, что мой файл d2d1.dll поврежден. Как я могу сказать и как я могу это исправить? Он находится в C:/Windows/SysWOW64. Дата на файле выглядит подозрительно. Дата — 01.01.2019, а все остальные файлы относятся к 2018 году. Сканирование на вирусы OfficeScan не помечает его как вирус. Если.
d2d1.dll не работает
d2d1.dll не работает: Здравствуйте, у меня возникли проблемы с запуском программ из-за ошибки с d2d1.dll. Программы аварийно завершают работу при запуске с ошибкой «d2d1.dll либо не предназначена для работы в Windows, либо содержит ошибку». Я попробовал SFC /scannow, и он говорит, что файлы повреждены.
Читайте также: