动态链接库(dll)可以作为执行任意代码的接口,并帮助恶意行为者实现其目标。dll是microsoft共享库的实现方式,通常以dll为文件扩展名,并且它们也是pe文件,与exe文件结构相同。
DLL可以包含PE文件支持的任何类型的内容,这些内容可能包括代码、资源或数据的任意组合。DLL的主要用途是在系统上的应用程序和进程之间共享这些内容,为Windows应用程序开发者提供高度的灵活性。
DLL在调用进程的内存中以相同的访问权限执行。这意味着,如果DLL包含任何异常,调用EXE不会得到任何保护。恶意攻击者可以通过DLL劫持或DLL代理等方法利用这一特性来执行恶意代码。
在日常工作中,我们会加载大量进程到系统中。使用Windows操作系统时,进程加载算法的一个关键步骤是将动态链接库(DLL)加载到内存中,以利用其功能并满足进程与DLL之间的依赖关系。每当启动进程时,都会发生此操作。
Windows操作系统可能包含同一DLL的多个版本。由于一个系统可能承载许多需要同一个DLL的进程,因此需要一种系统来确保从正确的路径加载所需的DLL,并确保加载的是最相关的版本。
应用程序开发者通过使用LoadLibraryExA或LoadLibraryA函数来加载特定库。这些函数接收一个路径参数,该参数指向所请求的DLL,并向调用进程返回模块的句柄。
DLL包含要由加载进程执行的代码,这可能会导致利用缺失的DLL或不安全实现的DLL来诱导系统执行恶意负载的情况,利用本机DLL搜索顺序。恶意行为者可能使用此技术来加载自己的DLL,该DLL可能包含任何类型的代码。
确定某个进程按特定搜索顺序搜索DLL,并且缺少DLL或错误实现的DLL之后,才能够进行下一步攻击。
第一步:确定DLL
首先,我们使用Sysinternals的ProcMon来筛选未找到以DLL结尾的路径的任何操作:
ProcMon下载:https://www.php.cn/link/b5146481a245e50255f5b24319c2711a
可以看到“Bginfo64.exe”找不到的对应DLL。

第二步:查找DLL和利用
在查找这些DLL时,我们得出Riched32.DLL是非本地DLL,因此,注册表中没有该DLL的默认搜索路径。但是如果我们正确配置它,系统最终也会加载它。
现在所需要做的就是在请求的路径中创建该DLL:

我们在请求路径中创建该DLL(Riched32.dll),为了方便演示,我们的DLL执行后,会弹出“hello HBT黑白天”的消息框来证明我们的DLL可以执行命令。
#define WIN32_LEAN_AND_MEAN
#include
extern "C" __declspec(dllexport) DWORD WINAPI MessageBOXThread(LPVOID lpParam) {
MessageBox(NULL, "hello hbt 黑白天", "hello hbt 黑白天", NULL);
return 0;
}
extern "C" __declspec(dllexport) BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
CreateThread(NULL, NULL, MessageBOXThread, NULL, NULL, NULL);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}我们将这个DLL命名为Riched32.dll并放入Bginfo64.exe的DLL文件夹中。
然后重新打开进程“Bginfo64.exe”。

出现该消息框,并且我们可以观察到该进程加载了DLL:

如果我们的DLL中包含恶意代码,是不是可以继承Bginfo64.exe执行命令?
最后一步:拿一个shell
确定了进程和易受攻击的路径之后,所缺少的就是创建我们希望执行的DLL有效负载。
我们可以使用“DLLicious”工具(https://www.php.cn/link/e3423656a3520cb9a9825048b5cb59aa。
用法
用法非常简单,只需使用Python3或“.\DLLicous.py”运行脚本。
我们可以:

通过使用PowerShell和DLL代码中包含的NetCat的反向Shell,并尝试与kali上的侦听器联系,然后使用PowerShell打开shell。
我们可以看到执行劫持的进程后,将加载DLL并打开shell:

https://www.php.cn/link/1721075016476163d0405fdfe93667c1
https://www.php.cn/link/6ef43ab936ea0c3ff156b0e099c783ba
https://www.php.cn/link/b5146481a245e50255f5b24319c2711a
渗透测试、红队攻防、免杀、权限维持等技术,以及及时分享最新漏洞复现及EXP,国内外最新技术分享!
进来一起学习吧。
以上就是DLL攻击漫谈的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号