傀儡进程

傀儡进程技术通过挂起进程、修改线程上下文,实现恶意ShellCode的注入。首先创建并挂起目标进程,接着在目标进程中分配内存并写入ShellCode。然后获取并修改线程上下文,使进程执行ShellCode地址。最后恢复线程,使得进程在执行正常程序的同时执行我们的代码。这种方法常用于隐蔽的恶意行为或安全研究。

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

背景

傀儡进程本质上是借用正常的软件进程或是系统进程的外壳来执行非正常的恶意操作。

函数介绍

1.GetThreadContext

获取指定线程的上下文

2.SetThreadContext

设置指定线程的上下文

3.ResumeThread

减少线程的暂停计数。当暂停计数递减到零时,恢复线程的执行

实现原理

(1)第一步

利用CreateProcess创建进程并且使用CREATE_SUSPENDED标志挂起主线程

bRet = ::CreateProcess(pszFilePath,NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi)

(2)第二步

使用VirtualAllocEx在目标进程中申请一块内存,这块内存主要用于存放ShellCode数据,写入ShellCode数据使用WriteProcessMemory函数

什么是ShellCode自行百度哈

(3)第三步

使用GetThreadContext函数获取目标进程的线程上下文,然后使用SetThreadContext修改原来进程PE结构的加载基址,将存放ShellCode的地址作为第一执行顺序。

(4)第四步

使用ResumeThread函数恢复挂起进程的线程,让进程按照修改后的EIP继续运行,这一步主要是和第一步挂起主线程对应

目标

该技术主要是为了实现在目标进程中“夹带私货”,运行正常进程的同时运行我们自己想要加载的线程。

其中需要注意的是,在使用GetThreadContext获取线程上下文的时候,一定要对上下文结构中的ContextFlags成员赋值,知名要检索线程上下文的哪些部分,若赋值为CONTEXT_FULL表示获取所有线程的上下文信息。

另外第一步和第四步是对应关系,我们需要先挂起进程,不让他继续运行,然后插入我们的Shellcode后再通过ResumeThead让进程继续运行。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值