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

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

Что такое файлы(Files) DLL или библиотеки динамической компоновки(Dynamic Link Libraries)

Перехват DLL

(DLL)Файлы DLL представляют собой динамически подключаемые библиотеки(Dynamic Link Libraries) и, как видно из названия, являются расширениями различных приложений. Любое используемое нами приложение может использовать или не использовать определенные коды. Такие коды хранятся в разных файлах и вызываются или загружаются в оперативную память(RAM) только тогда, когда требуется соответствующий код. Таким образом, это предотвращает слишком большой размер файла приложения и предотвращает перегрузку ресурсов приложением.

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

Что такое угон DLL

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы хотите что-то добавить к статье, пожалуйста, прокомментируйте ниже.(If you would like to add anything to the article, please comment below.)



About the author

Я инженер-программист с более чем 10-летним опытом работы с продуктами Windows, Office и Google. Я эксперт в Word, Excel и PowerPoint и написал несколько книг на эту тему. В свободное время я люблю играть в видеоигры, читать книги и смотреть фильмы.



Related posts