Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Pyramid — 一款用于在EDR盲区中操作的工具 | Kitploit
工具/GitHubGitHub/naksyn/pyramid
后渗透利用渗透测试红队
GitHubnaksyn/pyramid

Pyramid

一款用于在EDR盲区中操作的工具

查看仓库
7759042年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Supported Python versions Twitter

Pyramid

immagine

这是什么

Pyramid 由以下几部分组成:

  1. 一个 Python HTTP/S 服务器,可以传输加密文件(chacha、xor)
  2. Python 模块,能够内存加载诸如 Bloodhound-py、secretsdump、LaZagne、Pythonnet、DonPAPI、pythonmemorymodule、paramiko、pproxy 等进攻性工具的内存依赖。
  3. 固定的 Python 依赖(zip 文件),可在内存中导入
  4. Python 下载器,可以下载、解密并在内存中执行 Pyramid 模块

为何有用

Pyramid 可用于以规避检测的方式执行后渗透任务,通过从签名的二进制文件(如 python.exe)中导入依赖,在内存中运行进攻性工具。 这之所以可行,是因为:

  1. Python 可嵌入包 提供了一个签名的 Python 解释器,具有良好的声誉;
  2. Python 有许多合法应用,因此 python.exe 二进制文件会生成大量不同的遥测数据,因为解释器本身会原生运行 API。这可以被滥用,通过操作在 Python.exe 进程内部,尝试混入 python.exe 二进制文件的庞大“遥测指纹”中。
  3. Python 代码执行缺乏审计——PEP-578 试图解决这个问题,但默认情况下 stock python.exe 二进制文件并未启用审计能力。
  4. 可以直接在 python.exe 内部使用 Python 语言原生执行操作,例如动态导入 Python 模块以运行进攻性工具,并直接在 python.exe 内部执行 Beacon 对象文件(需对 BOF 进行一些修改)。

更多信息请查看 DEFCON30 - Adversary village 演讲 "Python vs Modern Defenses" 幻灯片 以及我博客上的这篇文章。

免责声明

此工具旨在演示一种基于某些盲点假设的 EDR 绕过策略。它是对已有技术和工具的一种(据我所知)新颖组合,可以帮助逃避防御。该工具的唯一目的是帮助社区提高对此类用法的认识,并加速问题的解决。这不是零日漏洞,也不是功能齐全的炫酷 C2,Pyramid 利用了可能是 EDR 盲点的领域,该工具公开是为了揭示这些问题。 文中包含了一个防御段落,希望经验丰富的蓝队成员能够帮助贡献,并为 Pyramid 旨在强调的问题提供更好的解决方案。所有信息仅供教育目的。请自行承担使用风险。作者及其雇主不对任何直接或间接的损害或损失负责,无论是由个人还是组织造成的。

致谢

Pyramid 的内存加载功能最初受 xorrior 的 Empyre - Finder Class 启发并在此基础上扩展。

贡献者

snovvcrash 构建了以下模块:mod-DonPAPI.py、mod-LaZagne.py、mod-clr.py

当前功能

Pyramid 模块的能力可以直接从 Python 解释器中执行,目前包括:

  1. 下载、解密并在内存中加载 Python 依赖。
  2. 动态加载并执行 BloodHound Python、impacket secretsdump、DonPAPI、LaZagne。
  3. 通过 PythonMemoryModule 在内存中加载远程获取的 dll 或 exe。
  4. 通过 SSH 反向端口转发隧道进行 SOCKS5 代理。
  5. 通过 Pythonnet 在内存中加载 .NET 程序集。

Pyramid HTTP 服务器的主要功能:

  1. 对要传递的文件进行即时加密(chacha、xor)
  2. 基于 pyramid 命令行自动生成服务器配置
  3. 解码和解密 HTTP 参数(URL)
  4. 基本 HTTP 认证

下载器的主要功能:

  1. 下载、解密并在内存中执行 Pyramid 模块。
  2. 仅依赖 Python 标准库。

描述

Pyramid 可以与目标机器上已有的 Python 解释器一起使用,或者解压官方的可嵌入 Python 包,然后运行 python.exe 执行 Python 下载器。这是一种避免创建不常见进程树模式并看起来像正常 Python 应用程序用法的简单方法。

在 Pyramid 中,下载器用于通过 HTTP/S 连接 Pyramid 服务器以获取模块和依赖。

模块针对你想要使用的功能而特定,包含:

  1. 自定义 Finder 类,用于在内存中导入所需的依赖(zip 文件)。
  2. 下载所需依赖的代码。
  3. 要执行的程序(bloodhound、secretsdump、paramiko 等)的主要逻辑。

Python 依赖已经过固定和修改,以便在内存中导入而不冲突。

目前有 8 个 Pyramid 模块可用:

  1. bh.py 将在内存中导入并执行 python-BloodHound。
  2. secretsdump.py 将在内存中导入并执行 Impacket secretsdump。
  3. shellcode.py 是一个简单的内存 shellcode 注入器。
  4. DonPAPI.py 脚本将在内存中导入并执行 DonPAPI。提取的结果和凭据将保存在磁盘上的 Python 可嵌入包目录中。
  5. LaZagne.py 脚本将在内存中导入并执行 LaZagne
  6. tunnel-socks5 脚本导入并执行 paramiko,在新的线程上创建 SSH 远程端口转发到 SSH 服务器,然后在目标上本地执行 socks5 代理服务器,并通过 SSH 隧道使其可远程访问。
  7. clr 脚本导入 Pythonnet,以在内存中加载并执行 .NET 程序集。
  8. pythonmemorymodule 脚本导入 PythonMemoryModule 以从内存中加载 dll。

使用

启动服务器

git clone https://github.com/naksyn/Pyramid

为 HTTP 服务器生成 SSL 证书:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

如果你希望使用自己的签名 SSL 证书,请确保:

  1. 使用 pem 格式
  2. 将文件重命名为 key.pem 和 cert.pem
  3. 将两个文件放入 Server 文件夹中。

配置模块

例如,如果你想将 pythonmemorymodule 与 Pyramid 一起使用,将你的载荷放入 Delivery_files 文件夹,然后打开 pythonmemorymodule.py 并在脚本顶部配置所需参数,比如载荷文件的名称以及加载 PE 后要调用的过程。

在目标上解压可嵌入包并执行下载器

一旦 Pyramid 服务器运行并且基础脚本准备就绪,你可以在 Agent/cradle.py 文件中设置变量 pyramid_module,然后在目标上执行它。 下载器设计为使用 Python 标准库运行。

示例

使用 SSL 证书运行 Pyramid HTTP 服务器的示例,提供基本身份验证、使用 ChaCha 加密传递文件、自动生成服务器配置到模块并打印出可粘贴的 pythonmemorymodule 下载器:

root@kitploit:~
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py

启动时,pyramid.py 会解析自己的文件夹结构以查找 key.pem、cert.pem,并从 Server 文件夹传递文件。

https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195

无可见提示符执行 Pyramid 的技巧

要执行 Pyramid 而不显示可见的 python.exe 提示符,你可以利用 pythonw.exe,它不会在运行时打开控制台窗口,并且包含在相同的 Windows 可嵌入包中。 下图展示了使用 pythonw.exe 在远程机器上执行 base-tunnel-socks5.py 而不打开 python.exe 控制台窗口的示例用法。

image

限制

动态加载 Python 模块本身不支持导入 *.pyd 文件,这些文件本质上是 dll。据我所知,唯一公开解决此问题的方案是 Scythe 的(内存执行),通过重新设计 CPython 解释器。为了不丢失数字签名,一种允许使用原生 Python 可嵌入包的解决方案是将所需的 pyd 文件或 wheel 文件释放到磁盘上。这在大多数情况下不应有重大的 OPSEC 影响,但请注意,以下包含 pyd 文件的 wheel 会被释放到磁盘上以完成动态加载: *. Cryptodome - 由 Bloodhound-Python、Impacket、DonPAPI 和 LaZagne 所需 *. bcrypt、cryptography、nacl、cffi - 由 paramiko 所需

如何防御此技术

Python.exe 是一个具有良好声誉的签名二进制文件,并且不提供对 Python 动态代码的可视性。Pyramid 利用这些规避特性,在同一个 python.exe 进程内执行进攻性任务。

因此,最有效的解决方案之一是从默认情况下阻止由 Python 基金会签名的二进制文件和 dll,仅为实际需要使用 python 二进制文件的用户创建例外。

也可以对可嵌入包的下载发出警报。

部署 PEP-578 也是可行的,尽管复杂,这是一个示例实现。然而,如果不阻止使用 stock python 二进制文件,部署 PEP-578 可能会使这种对策失效。

下载工具