1.ShellCode内存注入
主要围绕三个方面:
-
申请内存空间:VirtualAlloc(在调用进程的虚拟地址空间中保留、提交或更改页面区域的状态分配的内存初始化为零)、VirtualAlloc2(进程注入:在指定进程的虚拟地址空间内保留、提交或更改内存区域的状态。该函数将其分配的内存初始化为零)、VirtualAllocEx(进程注入:在指定进程的虚拟地址空间内保留、提交或更改内存区域的状态。该函数将其分配的内存初始化为零)
-
导入内存:RtlCopyMemory(将源内存块的内容复制到目标内存块(新版),RtlCopyByte和RtlMoveMemory将源内存块的内容复制到目标内存块(旧版)。
-
调用执行:创建线程的方式执行、用syscall调用执行(golang)、内嵌C代码执行
加载方式:基础加载,纤程加载,远程加载。
2.ShellCode加密解密
常见的加密解密方式:AES加密、hex加密、XOR+base64加密、Base85+XOR+RC4。