Вредоносное ПО

Атаки, предотвращение и обнаружение уязвимостей перехвата DLL

Атаки, предотвращение и обнаружение уязвимостей перехвата DLL

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

Что такое файлы DLL или библиотеки динамической компоновки

Файлы DLL представляют собой библиотеки динамической компоновки и, как видно из названия, являются расширениями различных приложений. Любое используемое нами приложение может использовать или не использовать определенные коды. Такие коды хранятся в разных файлах и вызываются или загружаются в ОЗУ только тогда, когда требуется соответствующий код. Таким образом, он сохраняет файл приложения от слишком большого размера и предотвращает перегрузку ресурсов приложением.

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

Что такое перехват DLL

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

Как упоминалось ранее, существуют приоритеты относительно того, где операционная система ищет файлы DLL. Сначала он просматривает ту же папку, что и папка приложения, а затем выполняет поиск на основе приоритетов, установленных переменными среды операционной системы. Таким образом, если хороший.dll находится в папке SysWOW64, и кто-то поместил плохой.dll в папке с более высоким приоритетом по сравнению с папкой SysWOW64, операционная система будет использовать неверный.dll, так как он имеет то же имя, что и DLL, запрошенная приложением. Попав в оперативную память, он может выполнить вредоносный код, содержащийся в файле, и поставить под угрозу ваш компьютер или сети.

Как обнаружить перехват DLL

Самый простой способ обнаружить и предотвратить перехват DLL - использовать сторонние инструменты. На рынке есть несколько хороших бесплатных инструментов, которые помогают обнаружить попытку взлома DLL и предотвратить ее.

Одной из таких программ является DLL Hijack Auditor, но она поддерживает только 32-битные приложения. Вы можете установить его на свой компьютер и просканировать все свои приложения Windows, чтобы увидеть, какие приложения уязвимы для перехвата DLL. Интерфейс простой и понятный. Единственный недостаток этого приложения в том, что вы не можете сканировать 64-битные приложения.

Другая программа для обнаружения перехвата DLL, DLL_HIJACK_DETECT, доступна через GitHub. Эта программа проверяет приложения, чтобы определить, уязвимы ли какие-либо из них для перехвата DLL. Если это так, программа информирует пользователя. Приложение имеет две версии - x86 и x64, поэтому вы можете использовать каждую для сканирования как 32-битных, так и 64-битных приложений соответственно.

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

Как предотвратить перехват DLL

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

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

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

  1. Отключить загрузку DLL из удаленных сетевых ресурсов
  2. Отключить загрузку файлов DLL из WebDAV
  3. Полностью отключите службу WebClient или установите ее в ручной режим
  4. Заблокируйте TCP-порты 445 и 139, так как они чаще всего используются для компрометации компьютеров
  5. Установите последние обновления операционной системы и программного обеспечения безопасности.

Microsoft выпустила инструмент для блокировки атак с перехватом загрузки DLL. Этот инструмент снижает риск атак с перехватом DLL, предотвращая небезопасную загрузку кода из файлов DLL приложениями.

Если вы хотите что-то добавить к статье, оставьте комментарий ниже.

Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...
SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...
Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...