【问题标题】:What is dll hijacking?什么是dll劫持?
【发布时间】:2010-09-02 02:37:18
【问题描述】:

简单问题:什么是dll劫持?

我阅读了很多关于哪些应用程序易受攻击的信息,但没有深入了解为什么

答案表示赞赏。

【问题讨论】:

    标签: windows dll


    【解决方案1】:

    基础很简单。 Windows 有一个 DLL 的搜索路径,就像它有一个用于查找可执行文件的 $PATH 一样。如果您可以在没有绝对路径的情况下确定应用程序请求的 DLL(触发此搜索过程),那么您可以将恶意 DLL 放置在搜索路径更高的位置,以便在实际版本出现之前找到它,并且 Windows 会很高兴将您的攻击代码提供给应用程序。

    所以,让我们假设您系统的 DLL 搜索路径如下所示:

    a) .     <--current working directory of the application, highest priority, first check
    b) \windows
    c) \windows\system32
    d) \windows\syswow64   <-- lowest priority, last check
    

    一些应用程序 Foo.exe 请求“bar.dll”,它恰好位于 syswow64 (d) 子目录中。这使您有机会将恶意版本放入 a)、b) 或 c) 中,每当应用程序请求 bar.dll 时,它就会自动加载到应用程序中。现在你的 foo 已经好了,而且确实被禁止了。

    如前所述,如果您可以将 DLL 替换为您自己的版本,即使是绝对完整路径也无法避免这种情况。

    当然,这也不仅限于 Windows。理论上,任何允许动态链接外部库的操作系统都容易受到此攻击。

    【讨论】:

      【解决方案2】:

      DLL 劫持其实是一个简单的概念。

      应用程序通过 DLL(动态链接库)加载外部代码。 DLL 劫持是通过与应用程序使用的 DLL 同名的恶意 DLL 将恶意代码注入应用程序的过程。

      根据应用程序引用其 DLL 的方式,应用程序容易受到 DLL 劫持。一个示例是使用相对路径而不是 DLL 的绝对路径。另一种是使用可能未正确设置的环境变量加载 DLL,在这种情况下,目录默认为正在执行的应用程序的相对路径。

      【讨论】:

        猜你喜欢
        • 2017-01-25
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多