Python 进程注入实战解析与安全边界说明

云丽小哥_8887

云丽小哥_8887

2026-09-26

737人浏览

原创

Python 进程注入实战解析与安全边界说明

本文详解使用 pymem 实现 python 进程注入的技术原理、常见失效原因(如 rundll32 调用静默失败)、shellcode 执行限制,并强调在合法授权红队/渗透测试场景下应遵循的安全规范与检测规避基本逻辑。

本文详解使用 pymem 实现 python 进程注入的技术原理、常见失效原因(如 rundll32 调用静默失败)、shellcode 执行限制,并强调在合法授权红队/渗透测试场景下应遵循的安全规范与检测规避基本逻辑。

在红队评估或安全研究中,进程注入(Process Injection)是验证防御体系有效性的重要技术手段。Python 生态中,pymem 是一个功能强大的内存操作库,支持对 Windows 进程进行读写、模块注入、Python 解释器嵌入及 ShellCode 执行等高级操作。但正如提问者所遇——注入后 os.system('rundll32.exe ...') 未触发 EDR 告警也未生效,而文件写入却成功——这并非代码语法错误,而是由执行上下文、权限层级与 EDR 检测机制共同导致的典型现象。

? 为什么 rundll32 在注入上下文中“静默失效”?

  1. 执行环境隔离:pm.inject_python_shellcode() 注入的是纯 Python 字节码(通过 exec() 动态执行),其运行于目标进程(notepad.exe)的 Python 解释器沙箱内,不继承父进程的完整 shell 环境变量、当前工作目录或特权令牌。os.system() 启动的子进程默认以 CREATE_SUSPENDED 或低完整性级别运行,可能被 EDR 的进程创建监控(Process Creation Hooking) 拦截并静默终止,而不抛出异常或日志。

  2. 路径转义与字符串解析错误:原始脚本中:

    f = open("C:TestRuleprocess_injection.txt", "w+")

    T 和 p 是非法转义序列(如 表示制表符),实际路径被解释为 C: estRule rocess_injection.txt,导致文件写入失败(但因 Windows 路径容错机制,可能意外写入到 C: 根目录)。虽提问者观察到文件成功创建,实则依赖了系统路径模糊匹配,属于不可靠行为。✅ 正确写法应使用原始字符串或双反斜杠:

    f = open(r"C:TestRuleprocess_injection.txt", "w+")
    # 或
    f = open("C:\TestRule\process_injection.txt", "w+")
  3. rundll32.exe 调用被深度标记:EDR(如 CrowdStrike、Microsoft Defender for Endpoint、SentinelOne)普遍将 rundll32.exe + comsvcs.dll, MiniDump 组合列为高置信度恶意行为指纹(T1055.002 - Process Hollowing 变种)。即使注入成功,该命令在目标进程中调用时,EDR 的用户模式钩子(User-Mode Hook) 会立即拦截 CreateProcessW 或 NtCreateUserProcess 系统调用,并直接拒绝执行——无弹窗、无报错、无日志输出,表现为“命令被忽略”。

✅ 可验证的改进方案(仅限授权测试)

若需验证注入是否真正生效,建议改用低检出、高兼容性的替代操作:

Python Testing
Python Testing

Python 测试速查:运行 pytest、使用 mock/patch、参数化、fixtures、异步、覆盖率测试。

下载
import os
import sys

# ✅ 安全验证:写入带时间戳的唯一文件(避免路径转义)
import time
timestamp = int(time.time())
with open(rf"C:TestRuleinject_{timestamp}.txt", "w") as f:
    f.write(f"Injected at {timestamp} via pymem
Python version: {sys.version}")

# ✅ 替代 rundll32:使用 subprocess.run() + 隐藏窗口(仍可能被检测,但更可控)
try:
    import subprocess
    # 注意:subprocess 默认不继承注入上下文的环境,需显式指定
    result = subprocess.run(
        ['cmd.exe', '/c', 'echo Injected > C:\TestRule\cmd_echo.txt'],
        capture_output=True,
        timeout=3,
        creationflags=subprocess.CREATE_NO_WINDOW  # 关键:隐藏控制台窗口
    )
    print("CMD echo result:", result.returncode)
except Exception as e:
    print("Subprocess failed:", str(e))

⚠️ 重要提醒:subprocess 在注入环境中仍受限于目标进程权限(notepad.exe 通常为 Medium Integrity),无法直接执行需 High Integrity 的操作(如 MiniDump)。真正的内存转储需使用 pymem 自带的 dump_full() 方法(调用 MiniDumpWriteDump API),它绕过 rundll32,检出率显著更低:

pm.dump_full(r"C:dump.dmp")  # 直接调用 Windows API,无需外部进程

?️ 关于 EDR 规避的负责任说明

本文绝不提供绕过安全防护的通用技巧。EDR 的核心能力在于行为建模(Behavioral Analytics)、调用链分析(Call Stack Inspection)和信誉库(Reputation DB)联动。任何试图“欺骗”检测引擎的行为,若脱离真实攻防对抗场景(如授权红队演习、产品安全评估),均违反《网络安全法》第27条及 ISO/IEC 27001 合规要求。

合法实践应聚焦于:

  • ✅ 在客户书面授权范围内开展测试;
  • ✅ 使用 pymem.dump_full() 等 API 级操作替代高危命令行;
  • ✅ 结合白名单进程(如 msedge.exe, chrome.exe)进行注入,降低初始告警概率;
  • ✅ 优先采用 Process Hollowing 或 Early Bird APC Injection 等更隐蔽的原生技术,而非依赖 Python 解释器注入。

? 总结

  • pymem.inject_python_shellcode() 是有效的注入载体,但其执行环境受限,不能等同于交互式 shell;
  • os.system() 和 subprocess 在注入上下文中易受 EDR 静默拦截,应优先使用 pymem 原生 API(如 dump_full, write_bytes)完成关键操作;
  • 所有注入操作必须严格限定于授权范围,技术探索应服务于提升防御水位,而非突破法律与伦理边界。

? 延伸学习(合规安全研究向):

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

python

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1591

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3804

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1589

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

21957

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2707

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2747

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1103

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2123

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程