Виды библиотек DLL | Microsoft Learn
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 2 мин
В этой статье приводятся сведения, которые помогут определить нужный тип библиотеки DLL.
Различные типы библиотек DLL
С помощью Visual Studio можно создавать библиотеки DLL Win32 на языке C или C++, которые не используют библиотеку Microsoft Foundation Classes (MFC). Проект DLL, не использующий MFC, можно создать с помощью мастера приложений Win32.
Библиотека MFC доступна в библиотеках статической компоновки или в ряде библиотек DLL при использовании мастера DLL MFC. Если библиотека DLL использует MFC, Visual Studio поддерживает три различных сценария разработки:
создание обычной библиотеки DLL MFC, статически связанной с MFC;
создание обычной библиотеки DLL MFC, динамически связываемой с MFC;
создание библиотеки DLL расширения MFC, которая всегда связывается с MFC динамически.
Дополнительные сведения
Несовместимые с MFC библиотеки DLL: обзор
Обычные библиотеки DLL MFC, статически связанные с MFC
Обычные библиотеки DLL MFC, динамически связанные с MFC
Библиотеки DLL для расширения MFC: обзор
Выбор типа библиотеки DLL
Выбор требуемого типа библиотеки DLL
Если библиотека DLL не использует MFC, используйте Visual Studio для создания библиотеки DLL Win32, не связанной с MFC. Связывание библиотеки DLL с MFC (как статическое, так и динамическое) требует много места на диске и памяти. Связывание с MFC следует осуществлять, только если библиотека DLL действительно использует MFC.
Если библиотека DLL будет использовать MFC и использоваться приложениями, связанными или не связанными с MFC, необходимо создать обычную библиотеку DLL MFC, которая связывается с MFC динамически или статически. В большинстве случаев, скорее всего, будет лучше использовать обычную библиотеку DLL MFC, связываемую с MFC динамически, так как размер ее файла будет значительно меньше. Кроме того, экономия памяти при использования общей версии MFC может быть существенной. При статическом связывании с MFC размер файла библиотеки DLL будет больше, и библиотека может занимать дополнительную память, так как она загружает собственную копию кода библиотеки MFC.
Библиотека DLL, динамически связываемая с MFC, создается быстрее, чем связанная статически, так как нет необходимости связывать саму библиотеку MFC. Это особенно справедливо в случае с отладочными сборками, когда компоновщик должен сжимать отладочную информацию. Благодаря связыванию с библиотекой DLL, которая уже содержит отладочную информацию, будет требоваться сжимать меньше отладочной информации.
Одним из недостатков динамического связывания с MFC является необходимость в распространении общих библиотек DLL Mfcx0.dll и Msvcrxx.dll (или аналогичных файлов) вместе со своей библиотекой DLL. Библиотеки DLL MFC являются свободно распространяемыми, но их все равно необходимо устанавливать в процессе выполнения программы установки. Кроме того, необходимо включать в распространяемый пакет файл Msvcrxx.dll, содержащий библиотеку времени выполнения C, которая используется как вашей программой, так и самими библиотеками DLL MFC.
Если библиотека DLL будет использоваться только исполняемыми файлами MFC, можно создать обычную библиотеку DLL MFC или библиотеку DLL расширения MFC. Если библиотека DLL реализует многократно используемые классы, производные от существующих классов MFC, или необходимо передавать производные от MFC объекты между приложением и библиотекой DLL, следует создать библиотеку DLL расширения MFC.
Если библиотека DLL динамически связывается с MFC, вместе с ней должны распространяться библиотеки DLL MFC. Такая архитектура особенно полезна для совместного использования библиотеки классов несколькими исполняемыми файлами для экономии места на диске и памяти.
Дополнительные сведения
Несовместимые с MFC библиотеки DLL: обзор
Обычные библиотеки DLL MFC, статически связанные с MFC
Обычные библиотеки DLL MFC, динамически связанные с MFC
Библиотеки DLL для расширения MFC: обзор
См. также
Создание библиотек DLL C/C++ в Visual Studio
Библиотека dll. Как найти и зарегистрировать файлы
Опубликовано 28.09.2022
Содержание:
- 1 Библиотека DLL Windows
- 2 Как найти и установить библиотеку DLL
- 2.1 Регистрация dll-файла через командную строку
- 3 Как установить библиотеку DLL сторонними инструментами
- 3. 1 DLL Helper
- 3.2 Advanced PC Cleanup
- 3.3 CCleaner
- 3.4 Advanced System Optimizer
- 4 Точка входа не найдена в библиотеке dll
- 5 Заключение
Библиотека DLL Windows
Файлы библиотек DLL использует почти все программное обеспечение, установленное на компьютере. Пользователь не замечает наличие этих элементов, пока все работает нормально. Их отсутствие становится ярко заметно, когда система сообщает об ошибке DLL. Она возникает из-за того, что нужный компонент отсутствует, устарел или поврежден. Для полноценного функционирования программ в библиотеке должны быть все нужные файлы, причем подписанные цифровой подписью, актуальные и корректно работающие.
Решить проблему с отсутствием dll достаточно просто — необходимо скачать подходящую библиотеку, разместить ее в правильной папке и зарегистрировать в Windows. Рассмотрим алгоритм действий.
Как найти и установить библиотеку DLL
Инсталляция и регистрация библиотеки производится согласно единому алгоритму вне зависимости от версии операционной системы. Перед скачиванием файлов необходимо определить разрядность Windows. Кликаем в Проводнике на «Этот компьютер» и выбираем «Свойства». К примеру, на скриншоте 64-разрядная Windows 10 Pro.
Скачиваем подходящие файлы, а затем перемещаем их в корневую папку. Для 32-разрядной ОС (x32) это директория C:\Windows\System32, для 64-разрядной (x64) — C:\Windows\ SysWOW64. Теперь библиотеки необходимо зарегистрировать в ОС. Используем для этого win+r, и в открывшейся строке введем regsvr32 имяфайла.dll.
Команда regsvr32 зарегистрирует элемент библиотеки имяфайла.dll. Подтверждаем OK, перезагружаем компьютер и продолжаем работу. Ошибка должна исчезнуть.
Регистрация dll-файла через командную строку
Запускаем командную консоль с админскими правами. Вводим regsvr32.exe C:/Windows/System32/имяфайла.dll и кликаем «Энтер».
Обязательно делаем перезагрузку компьютера.
Если после этого система сообщает, что не удается загрузить модуль, проверьте, правильно ли прописан путь к файлу, и лежит ли он в упомянутой выше корневой папке. Также dll-элемент может быть уже ранее зарегистрирован. Скачанные файлы сохраняйте в отдельной папке, возможно, они еще пригодятся. Используйте только актуальные библиотеки.
Если вдруг приложение либо игра не видит элемент dll, необходимо скопировать последний и вставить в директорию, где находится основной исполняемый exe-файл. После этого заново запускаем программу.
Как установить библиотеку DLL сторонними инструментами
Установить и зарегистрировать системные DLL возможно с помощью различных приложений, о которых речь пойдет ниже. Они способны автоматически найти недостающие библиотеки, проанализировать состояние ОС, проверить целостность реестра и создать резервные копии. При этом компоненты, связанные с .NET Framework, Visual C++ и DirectX, нужно скачивать с официальных сайтов, а конкретные ошибки в отдельных программах лучше решать с разработчиками проблемного ПО.
DLL Helper
DLL Helper — платный софт на русском языке. Обладает простым понятным интерфейсом и внушительным онлайн-хранилищем DLL-библиотек. Легко устанавливается. Для поиска нужных элементов достаточно знать их официальные наименования, данные им производителем. Программа работает в двух режимах: «Простой» (предлагает только актуальные версии) и «Продвинутый» (предлагает все доступные версии). Существует возможность отката ранее установленных DLL.
Advanced PC Cleanup
Advanced PC Cleanup позволяет удалить временные элементы, зарегистрировать недостающие dll-файлы, исправить другие проблемы. Программа быстро обнаруживает отсутствующие библиотеки и предлагает исправить записи в реестре, отображая весь перечень проблемных файлов, откуда пользователь может сам выбрать компоненты для восстановления. ПО работает на английском языке, в бесплатном варианте и премиум-версии.
CCleaner
CCleaner проверяет наличие в системе элементов, способных снизить ее быстродействие. Обладает простым интерфейсом и позволяет во вкладках одного окна совершить множество действий по оптимизации работы компьютера. Программа сканирует реестр и среди других ошибок обнаруживает недостающие либо поврежденные записи о библиотеках. Поскольку CCleaner обладает обширным инструментарием, а не занимается исключительно dll-файлами, то проблемы с этими элементами не всегда удается успешно разрешить. Утилита работает на русском языке, обладает пробной и премиум-версией.
Advanced System Optimizer
Advanced System Optimizer выполняет те же функции, что и CCleaner. Запустив проверку реестра, пользователь получает перечень поврежденных файлов, среди которых есть и недостающие либо незарегистрированные dll-библиотеки. Можно сразу провести восстановление и избавиться от возникших проблем. Работает на русском языке и в бесплатном функционале позволяет выполнить поиск и исправление dll.
Есть и такие программы, как SpeedyPC Pro, SS Registry Fixer и т. д. Работают на русском и английском языках, являются бесплатными и условно-бесплатными, специализированными и общими утилитами. В последних главное — наличие функции исправления ошибок реестра, которая поможет найти и восстановить dll-библиотеки.
Точка входа не найдена в библиотеке dll
Иногда во время запуска программы либо игры компьютер выдает ошибку «Точка входа в процедуру не найдена в библиотеке DLL». Это означает, что нужный dll-файл не найден, поврежден или содержит ошибку в синтаксисе. Windows способна автоматически заменить отсутствующие или поврежденные системные элементы. Во всех остальных случаях решить проблему помогут нижеприведенные рекомендации.
- Скачайте и установите актуальную версию Visual C++ с официального сайта Microsoft. Запустите на своем компьютере обе вариации — и для 32-, и для 64-битной ОС.
- В командной строке с админскими правами используйте sfc /scannow. После ввода команды нажмите «Энтер». По окончании проверки системных файлов утилита сообщит о файлах, которые удалось либо не удалось восстановить.
- Возможно, ситуацию исправит переустановка проблемного софта.
- Перерегистрируйте dll-файл, открыв командную строку с админскими правами и используя команды «regsvr32/u a имяфайла.dll» и «regsvr32 a имя файла.dll» (без кавычек). После каждой команды щелкните «Энтер».
- Откатите операционную систему назад с помощью win+r и команды rstrui. exe. Кликните OK, выберите нужную точку восстановления и запустите процесс. После перезагрузки система будет работать по состоянию на указанную дату.
Продвинутым пользователям, самостоятельно устанавливающим Windows, можно рекомендовать инструмент Media Creation Tool. Он решит ошибку, когда система сообщит, что точка процедуры не найдена в библиотеке dll. С помощью этой утилиты необходимо создать загрузочный образ «Виндовс» на сайте Microsoft и произвести инсталляцию ОС с установочной флешки. Этот способ поможет извлечь и применить недостающие dll-файлы.
Заключение
Если, несмотря на предложенные инструкции, вам не удалось найти и зарегистрировать недостающие или поврежденные dll-библиотеки, обратитесь к сотрудникам «АйТиСпектр». Специалисты наладят работу операционной системы, а заодно помогут решить проблемы с работой других компонентов компьютера.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 0 / 5. Количество оценок: 0
Оценок пока нет. Поставьте оценку первым.
Информация о файле DLL Windows 10
Информация о DLL-файле Windows 10 |
Добро пожаловать на информационный сайт DLL для Windows 10.
Этот сайт был создан путем сканирования всех файлов DLL, расположенных в каталоге system32 Windows 10 и
создание (с помощью автоматического скрипта) веб-страницы для каждой DLL со всей найденной информацией.
Каждая информационная страница DLL включает:
- Информация о версии — название продукта, компания, описание файла и т. д.
- Популярность DLL — показывает, сколько DLL статически связаны с этим файлом.
- Список файлов, которые статически связаны с указанным файлом. Отображается, только если количество файлов в списке не превышает 10.
- Информация о разделах — показывает разделы кода и данных в библиотеке DLL.
- Информация о ресурсах — отображает сводку ресурсов, хранящихся в DLL (значки, растровые изображения, курсоры, диалоговые окна и т. д.)
- Миниатюра значков — Миниатюра со всеми значками, хранящимися в DLL.
- Миниатюра курсоров — Миниатюра со всеми курсорами, хранящимися в DLL.
- Информация о строках — отображает список строк, хранящихся в этой DLL (в настоящее время список ограничен 1000 строками)
- Информация о диалоговых окнах — отображает список заголовков диалоговых окон в этой библиотеке DLL.
- Статическое связывание — отображает список DLL-файлов, которые статически связаны с DLL. Когда DLL загружается, DLL в этом списке статической компоновки также загружается вместе с ней.
- Список экспорта/импорта — список всех импортированных и экспортированных функций.
Просмотр веб-страницы конкретной DLL может помочь узнать, что это за DLL и как она связана с другими файлами DLL в операционной системе Windows 10.
Чтобы перейти на нужную страницу DLL, выберите первую букву файла DLL, после чего вы получите список всех dll начинается с этой буквы:
Вы также можете найти DLL в соответствии со следующей статистикой «TOP DLL»:
Топ-10 файлов DLL с наибольшим количеством значков
imageres. dll | Ресурс образа Windows | 402 |
shell32.dll | Общая библиотека Windows Shell | 326 |
wmploc.DLL | Ресурсы проигрывателя Windows Media | 193 |
netshell.dll | Оболочка сетевых подключений | 165 |
DDOres.dll | Информация и ресурсы категории устройства | 134 |
mmcndmgr.dll | DLL диспетчера узлов MMC | 129 |
twinui.dll | Двойной интерфейс | 122 |
moricons.dll | Библиотека ресурсов значков установки Windows NT | 113 |
compstui.dll | Общая DLL пользовательского интерфейса листа свойств | 101 |
ieframe.dll | Интернет-браузер | 101 |
Топ-10 файлов DLL с наибольшим количеством курсоров
user32. dll | Многопользовательская клиентская библиотека Windows USER API | 32 |
edgehtml.dll | Средство просмотра Microsoft (R) HTML | 23 |
mshtml.dll | Средство просмотра Microsoft (R) HTML | 22 |
msftedit.dll | Управление редактированием форматированного текста, v7.5 | 18 |
comctl32.dll | Библиотека общих элементов управления | 18 |
Riched20.dll | Управление редактированием форматированного текста, v3.1 | 17 |
WFSR.dll | Ресурсы факсов и сканирования Windows | 15 |
FXSRESM.dll | Библиотека ресурсов Microsoft Fax | 14 |
mfc40u.dll | Общая библиотека MFCDLL — розничная версия | 12 |
mfc40.dll | Общая библиотека MFCDLL — розничная версия | 12 |
Топ-10 файлов DLL с наибольшим количеством растровых изображений
ExplorerFrame. dll | ExplorerFrame | 396 |
wmploc.DLL | Ресурсы проигрывателя Windows Media | 261 |
ieframe.dll | Интернет-браузер | 229 |
UIRibbonRes.dll | Ресурсы Windows Ribbon Framework | 147 |
twinui.dll | Двойной интерфейс | 108 |
Редактор дескрипторов безопасности | 67 | |
wdc.dll | Монитор производительности | 55 |
UIRibbon.dll | Ленточная платформа Windows | 43 |
shell32.dll | Общая библиотека Windows Shell | 37 |
shellstyle.dll | Библиотека ресурсов стиля оболочки Windows | 35 |
Топ-10 файлов DLL с наибольшим количеством диалоговых окон
wmploc. DLL | Ресурсы проигрывателя Windows Media | 117 |
ieframe.dll | Интернет-браузер | 109 |
comres.dll | Ресурсы COM+ | 109 |
shell32.dll | Общая библиотека Windows Shell | 100 |
rasdlg.dll | API общего диалога удаленного доступа | 96 |
wsecedit.dll | Модуль пользовательского интерфейса конфигурации безопасности | 66 |
инеткпл.кпл | Панель управления Интернетом | 62 |
FXSRESM.dll | Библиотека ресурсов Microsoft Fax | 60 |
cmdial32.dll | Диспетчер подключений Майкрософт | 56 |
ACCTRES.dll | Ресурсы Microsoft Internet Account Manager | 50 |
Топ-10 файлов DLL с наибольшим количеством строковых ресурсов
getuname. dll | Unicode-имя Dll для UCE | 15 979 |
Winlangdb.dll | Языковая база данных Windows Bcp47 | 10 824 |
shell32.dll | Общая библиотека Windows Shell | 3 511 |
wmploc.DLL | Ресурсы проигрывателя Windows Media | 2 924 |
ieframe.dll | Интернет-браузер | 2 259 |
propsys.dll | Система собственности Microsoft | 1 943 |
хранилищеwmi.dll | Поставщик WMI для управления хранилищем | 1 912 |
nlsbres.dll | Библиотека ресурсов NLSBuild | 1 494 |
winnlsres.dll | Библиотека ресурсов NLSBuild | 1 494 |
msjint40.dll | Международная библиотека DLL Microsoft Jet Database Engine | 1 424 |
Топ-10 файлов DLL с самой большой библиотекой типов
MSVidCtl. dll | Элемент управления ActiveX для потокового видео | 256 КБ |
wmp.dll | Проигрыватель Windows Media | 208 КБ |
srm.dll | Общая библиотека Microsoft File Server Resource Manager | 172 КБ |
CertEnroll.dll | Клиент регистрации служб сертификации Microsoft Active Directory | 167 КБ |
msvbvm60.dll | Виртуальная машина Visual Basic | 145 КБ |
SRHInproc.dll | Вспомогательная библиотека DLL для чтения с экрана | 120 КБ |
tapi3.dll | Microsoft TAPI3 | 113 КБ |
comsvcs.dll | Услуги COM+ | 106 КБ |
InkEd.dll | Microsoft Tablet PC InkEdit Control | 99 КБ |
InkObjCore.dll | Microsoft Tablet PC Ink Platform Компонент | 97 КБ |
25 самых популярных файлов DLL в каталоге System32
В следующей таблице вы можете найти файлы DLL, которые обычно используются другими файлами DLL. Столбец «Количество DLL» представляет количество файлов DLL, которые используют указанную библиотеку DLL. Например: первый DLL-файл в этой таблице — msvcrt.dll загружается другими 2211 DLL-файлами в каталог system32. Эта статистика основана на статической связи (таблицах импорта) между файлами DLL.
msvcrt.dll | Библиотека CRT для Windows NT | 2 211 |
API-ms-win-core-profile-l1-1-0.dll | DLL-заглушка ApiSet | 1 649 |
API-ms-win-core-processthreads-l1-1-2.dll | DLL-заглушка ApiSet | 1 646 |
API-ms-win-core-errorhandling-l1-1-1.dll | DLL-заглушка ApiSet | 1 637 |
API-ms-win-core-synch-l1-2-0.dll | DLL-заглушка ApiSet | 1 635 |
API-ms-win-core-sysinfo-l1-2-1.dll | DLL-заглушка ApiSet | 1 632 |
ntdll. dll | DLL уровня NT | 1 378 |
API-ms-win-core-handle-l1-1-0.dll | DLL-заглушка ApiSet | 1 282 |
API-ms-win-core-registry-l1-1-0.dll | DLL-заглушка ApiSet | 1 186 |
ядро32.dll | Клиентская DLL-библиотека Windows NT BASE API | 986 |
API-ms-win-core-string-l1-1-0.dll | DLL-заглушка ApiSet | 971 |
rpcrt4.dll | Время выполнения удаленного вызова процедуры | 828 |
API-MS-Win-Eventing-Provider-L1-1-0.dll | DLL-заглушка ApiSet | 812 |
олеаут32.dll | 808 | |
API-ms-win-core-file-l1-2-1.dll | DLL-заглушка ApiSet | 793 |
api-ms-win-core-localization-l1-2-1.dll | DLL-заглушка ApiSet | 790 |
API-ms-win-core-debug-l1-1-1. dll | DLL-заглушка ApiSet | 783 |
user32.dll | Многопользовательская клиентская библиотека Windows USER API | 739 |
advapi32.dll | Расширенный базовый API Windows 32 | 585 |
API-ms-win-core-util-l1-1-0.dll | DLL-заглушка ApiSet | 490 |
API-ms-win-core-processenvironment-l1-2-0.dll | DLL-заглушка ApiSet | 466 |
API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll | DLL-заглушка ApiSet | 432 |
API-ms-win-core-threadpool-l1-2-0.dll | DLL-заглушка ApiSet | 432 |
api-ms-win-core-memory-l1-1-2.dll | DLL-заглушка ApiSet | 389 |
оле32.dll | Microsoft OLE для Windows | 385 |
4 способа злоумышленников перехватить библиотеки DLL
Защитники часто пишут о перехвате библиотеки динамической компоновки (DLL) из-за того, что она используется для уклонения от автоматического обнаружения. Этот метод еще чаще используется злоумышленниками при интерактивных вторжениях. Несмотря на обилие доступной литературы для повышения осведомленности защитников о захвате DLL, CrowdStrike ® Falcon OverWatch™ Охотники за угрозами видят, что злоумышленники снова и снова тяготеют к этому мастерству для загрузки вредоносного кода. Проще говоря, злоумышленники делают это, потому что это работает.
DLL — это файл, содержащий код, который может быть загружен приложением. Использование файлов DLL обычно наблюдается в операционной системе Microsoft Windows, наряду с другими. По словам Microsoft, цель DLL-файлов — «способствовать модульности кода, повторному использованию кода, эффективному использованию памяти и уменьшению дискового пространства».
Что такое перехват DLL?
Перехват DLL — это метод, используемый для загрузки вредоносного кода в целях уклонения от защиты, сохранения и повышения привилегий. Вместо того чтобы выполнять вредоносный код напрямую через исполняемый файл, злоумышленники будут использовать легитимное приложение для загрузки вредоносного DLL-файла. Этот метод может позволить вредоносному коду обходить список разрешенных приложений или другие автоматизированные элементы управления; кроме того, случайная проверка запущенного процесса показывает только законное работающее приложение.
Одной из причин, по которой перехват DLL по-прежнему трудно смягчить с помощью одних только автоматизированных средств защиты, является то, что этот метод предлагает злоумышленникам большую гибкость и вариативность в своей реализации. Итак, игра в кошки-мышки между защитником и противником продолжается.
В этом блоге рассматриваются четыре реализации перехвата DLL, а также то, как охотники за угрозами Falcon OverWatch видят их использование в дикой природе, точно настраивают свою охоту и соответствующим образом расширяют возможности автоматического обнаружения CrowdStrike.
Посмотрите это короткое видео, чтобы узнать, как Falcon OverWatch активно выявляет угрозы в вашей среде.
4 способа захвата DLL злоумышленниками
Для захвата DLL злоумышленнику обычно нужны три вещи: вредоносная DLL, легитимное приложение для захвата (в идеале приложение, настроенное для работы с повышенными привилегиями) и практические знания Microsoft Windows, в том числе как он определяет, какие DLL-файлы должно загрузить приложение и какие действия следует предпринять, если расположение DLL неоднозначно.
Известно, что злоумышленники используют следующие четыре метода захвата DLL, все они более подробно описаны ниже:
- Перехват порядка поиска
- Перехват DLL относительного пути
- Перехват фантомной DLL
- Перенаправление DLL
1. Перехват порядка поиска: использование предсказуемого поведения ОС обмануть» его, запустив вредоносный код в законном процессе.
Представьте, что разработчик приложения создает исполняемый файл, записанный в c:\app\app.exe
, который загружает DLL code.dll
только по имени и полагается на Windows, чтобы определить правильное местоположение. Разработчик предполагает, что DLL будет находиться по адресу C:\shared\code.dll
и что каталог C:\shared
добавляется в переменную среды PATH при установке приложения. Однако знающий злоумышленник знает, что операционная система Windows ищет DLL в предопределенном списке местоположений, когда местоположение DLL неоднозначно и не определено явно. Эти места различаются в зависимости от того, как настроена операционная система, но часто выглядят примерно так:
- Каталог, из которого загружено приложение
- Системный каталог
- 16-битный системный каталог
- Каталог Windows
- Текущий каталог
- Каталоги, перечисленные в переменной среды PATH
Если злоумышленник может записать вредоносный файл code.dll
в любое из других расположений, перечисленных перед переменной среды PATH, то вредоносный файл будет загружен первым. Далее, если app.exe
выполняется с повышенными привилегиями, то вредоносный код злоумышленника будет загружаться и выполняться с такими же привилегиями, тем самым облегчая несанкционированное повышение привилегий.
Злоумышленникам нравится перехват порядка поиска, потому что для этого требуется всего лишь поместить одну DLL в нужное место. Этот метод обычно включает использование уже существующей установки и часто используется для повышения привилегий. Однако охотники за угрозами Falcon OverWatch редко встречают эту технику, вероятно, из-за того, что злоумышленнику требуется много усилий для выявления уязвимых установленных приложений.
2. Перехват DLL с относительным путем: злоупотребление порядком поиска путем перемещения исполняемого файла
Одной из наиболее распространенных техник перехвата DLL, которую видит Falcon OverWatch, является вариант перехвата порядка поиска, известный как перехват DLL с относительным путем. Это когда злоумышленник записывает (и обычно переименовывает) законный исполняемый файл вместе со своей вредоносной DLL в папку, в которую у него есть соответствующие разрешения для записи.
Для этого метода требуется законный исполняемый файл, в котором не указан абсолютный путь для файлов DLL. Если абсолютный путь не указан, операционные системы Windows будут искать файл DLL в заранее заданном порядке поиска. Как отмечалось выше, этот порядок поиска может варьироваться в зависимости от операционной системы и настроенных параметров, но одним из местоположений, которое часто находится в начале порядка поиска, является каталог, из которого загружено приложение, известный как относительный путь (т. е. 9).0797./). Ряд исполняемых файлов, в том числе опубликованные Microsoft, ведут себя таким образом.
В одном из расследований Falcon OverWatch наблюдал, как злоумышленник записывает переименованную копию applaunch.exe
— исполняемого файла Microsoft — в каталог c:\users\public
. Файл был переименован, чтобы он гармонировал с нормальной работой хоста. Злоумышленник также записал свою вредоносную DLL с именем mscoree.dll
в тот же каталог. При запуске переименованный исполняемый файл загружал вредоносную DLL и выполнял код злоумышленника.
Чтобы смягчить попытки скрыть атаки в неожиданных каталогах, Falcon OverWatch активно ищет выполнение из необычных мест и поддерживает список исполняемых файлов, которые могут загрузить DLL из соответствующего файла. Эти усилия в сочетании с поиском редких файлов в телеметрии CrowdStrike позволяют охотникам за угрозами обнаруживать атаки, которые в противном случае могли бы остаться незамеченными.
3. Фантомный перехват DLL: использование отсутствующих DLL
Операционная система Windows ссылается на неожиданно большое количество несуществующих DLL-файлов. Перехват фантомной DLL — это когда злоумышленник записывает вредоносную DLL в местонахождение одного из этих отсутствующих файлов. Затем эта DLL загружается, когда операционная система запускает код, который ссылается на этот файл.
Перехват Phantom DLL лучше всего продемонстрирован на простом примере. Служба IKEEXT присутствует во многих версиях Windows, запускается при запуске и используется для аутентификации и обмена ключами в безопасности интернет-протокола. При запуске IKEEXT пытается загрузить файл C:\Windows\System32\wlbsctrl.dll
— однако эта DLL не существует. Если злоумышленник может записать вредоносный DLL-файл в это место (или в другое место, не описанное здесь), его вредоносный код может быть выполнен при (повторном) запуске службы IKEEXT.
Обратите внимание, что в приведенном выше примере злоумышленник должен уже иметь административные привилегии, чтобы иметь возможность записи в каталог System32. Этот пример представляет собой механизм сохраняемости, поскольку злоумышленник настроил службу IKEEXT для запуска при загрузке системы. Использование служб, которые должны запускаться при запуске, скорее всего, не будет обнаружено при беглом осмотре, что усилит потребность в упреждающем и всестороннем поиске.
Многие вредоносные версии этого записываемого файла будут обнаружены и заблокированы CrowdStrike Falcon 9.0759 ® — обычно потому, что они известны как вредоносные или имеют общие характеристики с ранее обнаруженными вредоносными файлами. Falcon OverWatch отслеживает активность, которую трудно обнаружить или предотвратить. Один из способов сделать это — искать записываемые файлы, которые являются редкими или уникальными в телеметрии CrowdStrike. Файлы с низкой распространенностью считаются подозрительными и требуют дальнейшего изучения. Если расследование сочтет файл вредоносным, Falcon OverWatch не только уведомит организацию-жертву, но и пометит файл как вредоносный, чтобы датчик Falcon мог автономно обнаруживать будущие попытки использования файла во всей базе установки Falcon. Это относится ко всем вредоносным файлам, идентифицированным Falcon OverWatch.
4. Перенаправление DLL: изменение порядка поиска в соответствии с потребностями злоумышленника
Перенаправление DLL — возможно, один из самых новых способов захвата DLL. Вместо того, чтобы использовать предопределенный порядок поиска, в атаках с перенаправлением DLL злоумышленник изменяет местоположение, в котором операционная система ищет файл DLL. Например, злоумышленник может внести изменения в реестр, чтобы изменить порядок поиска и заставить программу запускать другой файл DLL.
Служба MSDTC, которая используется для управления транзакциями между несколькими серверами, является еще одним примером службы Windows, которая пытается загрузить отсутствующую библиотеку DLL и уязвима для описанного выше метода перехвата фантомной библиотеки DLL. Злоумышленник может записать вредоносную DLL в расположение по умолчанию C:\windows\system32\oci.dll
и (пере)запустите службу MSDTC для загрузки своего вредоносного кода. Однако Falcon OverWatch быстро обнаружит это, так как охотники ищут редкие файлы, записываемые в это место. Поэтому некоторые злоумышленники попытаются использовать более уклончивый метод изменения местоположения, которое Windows проверяет при загрузке этой библиотеки DLL. Изменив следующий раздел реестра, злоумышленник может изменить имя файла, которое Windows будет использовать при запуске службы:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI\OracleOciLib
По умолчанию этот ключ содержит значение oci.dll
, но злоумышленник может изменить это значение на любое имя файла — evil.dll
, например . Затем злоумышленник просто запишет свой файл в C:\Windows\System32\evil.dll
и перезапустит службу MSDTC, и его вредоносный код будет выполнен. Это позволит обойти метод обнаружения, использованный выше. Falcon OverWatch также ищет подобные изменения в ключах реестра, чтобы их можно было обнаружить и изучить.
Какой метод захвата DLL предпочитают злоумышленники?
Наиболее распространенной формой перехвата DLL, наблюдаемой Falcon OverWatch, является перехват DLL относительного пути. Вероятно, это связано с минимальными усилиями, которые для этого требуются:
- Противнику не нужно много знать о своей системе-мишени, поэтому объем требуемой разведки снижается, а, следовательно, снижается и воспринимаемая вероятность быть обнаруженным.
- Им не нужно вмешиваться в какие-либо другие части системы, такие как реестр, что, по их мнению, снижает их шансы на обнаружение.
- Они могут работать практически из любого каталога, что увеличивает пространство поиска для защитников, что опять же снижает предполагаемую вероятность обнаружения.
Хотя перенаправление DLL и перехват фантомных DLL менее распространены — вероятно, из-за накладных расходов, необходимых для определения подходящих путей атаки — Falcon OverWatch с относительной частотой наблюдал их использование изощренными злоумышленниками, связанными с состоянием, и поэтому их не следует упускать из виду.
Как Falcon OverWatch выявляет и предотвращает перехват DLL
Злоумышленники регулярно захватывают библиотеки DLL, пытаясь обойти автоматические средства контроля безопасности. Используя набор данных глобального масштаба, охотники за угрозами Falcon OverWatch могут быстро и точно идентифицировать эти попытки захвата DLL.
Мощь модели поиска угроз Falcon OverWatch заключается в объеме данных, которые охотники могут использовать, чтобы быстро определить, является ли конкретная DLL вредоносной, на основе ее распространенности в глобальном наборе данных в реальном времени. Falcon OverWatch постоянно ищет глобально редкие DLL-файлы, файлы, записанные в подозрительные места, и программы, запускаемые из необычных мест. Эти методы поиска основаны на исходных данных, полученных из обширных данных в реальном времени, что не может быть воспроизведено какой-либо отдельной организацией в отдельности. Falcon OverWatch может дополнить даже самые зрелые программы безопасности возможностями глобальных данных.