进程注入概述(一)
字数 1306 2025-08-26 22:11:45

进程注入技术详解(一)

0x00 前言

进程注入是一种重要的渗透测试技术,本文由Hulk于2019年9月6日发布,已获得16724次浏览。文章将详细介绍进程注入的核心概念、实现原理和实际演示。

0x01 什么是进程注入?

进程注入(Process Injection)是一种在独立运行的实时进程地址空间中执行任意代码的方法。通过在一个合法进程的上下文中运行特定代码,攻击者可以:

  • 访问该进程的内存
  • 获取系统或网络资源
  • 提升权限
  • 绕过AV检测(因为代码借用了合法进程)

0x02 为什么要使用进程注入?

恶意软件通常利用进程注入技术实现以下目的:

  1. 访问系统资源
  2. 建立持久化后门
  3. 修改系统环境
  4. 通过命名管道或进程间通信(IPC)建立通信渠道
  5. 规避检测(使用分段模块和多个进程注入)

0x03 核心API函数

实现进程注入主要依赖以下4个Windows API:

  1. OpenProcess - 获取已有进程对象的句柄
  2. VirtualAllocEx - 在目标进程中分配内存并设置访问权限
  3. WriteProcessMemory - 将数据写入目标进程的内存区域
  4. CreateRemoteThread - 在目标进程的虚拟地址空间中创建新线程

0x04 演示案例

4.1 使用MSFVenom生成shellcode

MSFVenom是Metasploit框架中的有效负载生成工具。

4.1.1 Base64格式shellcode

生成命令:

msfvenom -p windows/x64/exec CMD=calc exitfunc=thread -b "\x00" | base64

注入命令:

ProcessInjection.exe /pid:6344 /path:"C:\Users\User\Desktop\base64.txt" /f:base64

4.1.2 Hex格式shellcode

生成命令:

msfvenom -p windows/x64/exec CMD=calc exitfunc=thread -b "\x00" -f hex

注入命令:

ProcessInjection.exe /pid:6344 /path:"C:\Users\User\Desktop\hex.txt" /f:hex

4.1.3 C格式shellcode

生成命令:

msfvenom -p windows/x64/exec CMD=calc exitfunc=thread -b "\x00" -f c

注入命令:

ProcessInjection.exe /pid:6344 /path:"C:\Users\User\Desktop\c.txt" /f:c

4.2 使用Donut生成shellcode

Donut是一个先进的shellcode生成工具,可以从.NET程序集创建位置无关(position-independent)的shellcode。

特点:

  • 支持任意.NET程序集
  • 可指定参数和入口点(如Program.Main)
  • 支持从URL加载或直接嵌入shellcode
  • 支持三种格式:Base64、Hex、C

4.2.1 结合Covenant C2框架

Covenant是一个专注于.NET框架攻击面的命令控制框架,可用于生成.NET有效负载。

生成命令:

.\donut.exe -f .\GruntStager.exe

注入命令:

.\ProcessInjection.exe /pid:6344 /path:"C:\Users\User\Desktop\covenant.txt" /f:base64

0x05 检测与监控

使用Process Explorer工具可以:

  • 监控Windows API调用(如CreateRemoteThread、WriteProcessMemory)
  • 检测进程内存修改行为
  • 监视网络连接情况

0x06 参考资源

  1. Demystifying Code Injection Techniques Part 1 - Shellcode Injection
  2. Introducing Donut
  3. Process Injection Techniques - Gotta Catch Them All
  4. MITRE ATT&CK - Process Injection (T1055)
  5. Donut Test Examples

0x07 工具获取

作者开发的进程注入工具可在GitHub仓库获取。

进程注入技术详解(一) 0x00 前言 进程注入是一种重要的渗透测试技术,本文由Hulk于2019年9月6日发布,已获得16724次浏览。文章将详细介绍进程注入的核心概念、实现原理和实际演示。 0x01 什么是进程注入? 进程注入(Process Injection)是一种在独立运行的实时进程地址空间中执行任意代码的方法。通过在一个合法进程的上下文中运行特定代码,攻击者可以: 访问该进程的内存 获取系统或网络资源 提升权限 绕过AV检测(因为代码借用了合法进程) 0x02 为什么要使用进程注入? 恶意软件通常利用进程注入技术实现以下目的: 访问系统资源 建立持久化后门 修改系统环境 通过命名管道或进程间通信(IPC)建立通信渠道 规避检测(使用分段模块和多个进程注入) 0x03 核心API函数 实现进程注入主要依赖以下4个Windows API: OpenProcess - 获取已有进程对象的句柄 VirtualAllocEx - 在目标进程中分配内存并设置访问权限 WriteProcessMemory - 将数据写入目标进程的内存区域 CreateRemoteThread - 在目标进程的虚拟地址空间中创建新线程 0x04 演示案例 4.1 使用MSFVenom生成shellcode MSFVenom是Metasploit框架中的有效负载生成工具。 4.1.1 Base64格式shellcode 生成命令: 注入命令: 4.1.2 Hex格式shellcode 生成命令: 注入命令: 4.1.3 C格式shellcode 生成命令: 注入命令: 4.2 使用Donut生成shellcode Donut是一个先进的shellcode生成工具,可以从.NET程序集创建位置无关(position-independent)的shellcode。 特点: 支持任意.NET程序集 可指定参数和入口点(如Program.Main) 支持从URL加载或直接嵌入shellcode 支持三种格式:Base64、Hex、C 4.2.1 结合Covenant C2框架 Covenant是一个专注于.NET框架攻击面的命令控制框架,可用于生成.NET有效负载。 生成命令: 注入命令: 0x05 检测与监控 使用Process Explorer工具可以: 监控Windows API调用(如CreateRemoteThread、WriteProcessMemory) 检测进程内存修改行为 监视网络连接情况 0x06 参考资源 Demystifying Code Injection Techniques Part 1 - Shellcode Injection Introducing Donut Process Injection Techniques - Gotta Catch Them All MITRE ATT&CK - Process Injection (T1055) Donut Test Examples 0x07 工具获取 作者开发的进程注入工具可在GitHub仓库获取。