我想知道 DLL 劫持是否适用于所有类型的链接或仅适用于运行时链接。我听说恶意软件使用它并想知道它是如何工作的
DLL 劫持是否适用于加载时链接?
信息安全
恶意软件
编程
2021-08-26 07:42:29
1个回答
有两种类型的链接:静态链接和动态链接。 DLL 劫持是指恶意程序利用动态链接。要使动态链接起作用,需要有一个路径列表来查找正在链接的共享库。 在 Windows中,有多种方式可以影响搜索路径。但是搜索的执行方式通常有一个顺序,并且大多数应用程序没有为C:\WINDOWS\system32\kernel32.dll
它们计划加载的共享对象提供完全限定的路径(例如 )。
发生的情况是,攻击者会将同名的 DLL 放置在合法 DLL 位置之前搜索的位置。例如,假设尝试加载时的搜索路径kernel32.dll
是 firstC:\Program Files\MaliciousDir\
然后C:\WINDOWS\system32\
。应用程序只需调用LoadLibraryW(L"kernel32.dll");
.
只要攻击者有他们的kernel32.dll
in版本MaliciousDir
,他们的版本就会被加载而不是合法版本。这可以通过为您正在加载的库提供完全限定的路径来缓解。
静态链接意味着整个库都内置在应用程序中。应用程序保留完整的副本,并且该库的所有函数地址都在编译时解析。这意味着没有搜索库,攻击者无法替换库本身。这样做的缺点是应用程序会因库的大小而变大,更新库本身意味着需要更新整个应用程序。
在这种情况下,DLL 劫持不起作用。
其它你可能感兴趣的问题