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

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

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

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

工具目录

分类

查看所有分类
Loading categories
asminject — Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc.. | Kitploit
工具/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

关于

Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc..

分享

asminject.py

asminject.py 是 David Buchanan 的 dlinject 项目 的一个大幅修改版分支。它通过访问 /proc/<pid>/mem 而不是通过 ptrace 附加,将任意汇编(或预编译二进制)有效载荷直接注入 x86-64、x86 和 ARM32 Linux 进程。可用于篡改受信任的进程、某些后渗透场景、从进程内存中恢复内容,以及绕过某些安全控制。只要你在主机上拥有 root 权限,就可以从容器外部注入容器化进程。

你也可以在 Bishop Fox 工具页面上阅读更多关于 asminject.py 及其起源的信息,包括 一篇详细阐述启发该工具的写作。

本文档包含:

  • 电梯演讲或 TLDR
  • 起源
  • 示例
  • 那 Yama 的 ptrace_scope 限制呢?
  • 未来目标

独立的更详细文档:

  • asminject.py 的工作原理 - 更高层面的架构讨论,并深入探讨一些技术细节,尤其是针对从未使用过内存注入工具的读者
  • 快速入门
  • 与 dlinject.py 的区别
  • 专用选项
  • 故障排除
  • 版本历史

电梯演讲或 TLDR

  • "asminject.py 类似于 dlinject,但不同之处在于,它不只是加载库,而是可以注入你想要的任何有效载荷,并且适用于多种架构。"
  • "asminject.py 有点像 Frida,但不同之处在于它不通过 ptrace 接口附加,因此进程无法通过对自身进行 ptrace 来阻止它。"

起源

asminject.py 的编写主要针对 Linux 环境中渗透测试的两种场景:

  • 从具有主机 root 访问权限的攻击者视角,攻击进程级和容器级安全控制
  • 在成功利用另一个问题后避免被检测

例如,假设在一次渗透测试中,测试人员获得了托管许多容器的服务器的 root 访问权限。其中一个容器处理银行转账,并且内部安装了非常强大的端点安全产品。当渗透测试人员尝试在容器内修改银行转账数据时,端点安全软件会检测并阻止该尝试。asminject.py 允许渗透测试人员从容器外部直接将任意代码注入银行软件进程的内存,甚至注入端点安全产品本身。就像笛卡尔的 "邪恶恶魔" 的受害者一样,容器内的安全软件无能为力,因为它所处的环境完全在攻击者的控制之下。

最初的 dlinject.py 专门设计用于将 Linux 共享库加载到现有进程中。asminject.py 实现了原工具的所有功能,并且功能更多。它可以执行任意汇编代码,并包含多种攻击的模板。它也被重新设计,以帮助规避那些以可疑活动(如库加载事件)作为检测依据的安全机制。

示例

本仓库的 practice 目录包含基本的循环代码,用于向控制台输出时间戳和循环迭代次数,以便你在受控环境中练习注入各种类型的代码。这些练习循环将在后续示例中被引用。

调用 asminject.py 的基本语法如下:

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

在大多数情况下,示例中使用的任何有效载荷都可以在任何受支持的架构上运行。

  • 基础示例 - 简单的有效载荷,例如让现有进程为你复制文件
  • Python 代码注入
  • PHP 代码注入
  • Ruby 代码注入
  • Shellcode/stager 注入
  • 共享库注入

那 Yama 的 ptrace_scope 限制呢?

大多数 Linux 发行版都包含一个名为 Yama 的内核安全模块,用于控制对使用 ptrace 能力来操作其他进程的访问。虽然 asminject.py 不附加到调试器接口,但它仍然需要权限才能使用 ptrace 能力。如果你收到有关此能力的错误,请检查 /proc/sys/kernel/yama/ptrace_scope 的内容。如果其值设置为 2,则以 root 身份运行以下命令:

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

值为 3 或更高时,如果不重启则无法取消设置。但是,如果你是某台 Linux 系统的授权管理员,而有人不小心将 /proc/sys/kernel/yama/ptrace_scope 设置为 3,或者你正在对设置了该值的环境进行授权渗透测试,请参阅 ptrace_scope_kernel_module 目录,了解一种无需重启的潜在解决方法。

未来目标

  • 添加对 ARM64 (Aarch64) 的支持。
  • 除了当前从文件读取的方法之外,允许通过 stdin 传递 shellcode。
  • 研究使用 Keystone 进行 shellcode 汇编,而不是调用操作系统级的 gcc 命令。
  • 对于 Python 及其他支持通过 API 传入编译字节码以执行的脚本解释器(而不是对可读脚本代码进行 eval 式执行),提供利用此能力实现更高隐蔽性的有效载荷。
  • 如果可行,通过 JNI 将 Java 代码注入 Java 进程。
  • 添加选项以挂钩特定方法(或地址等),作为当前从 dlinject.py 继承的 "挂钩下一个 syscall" 技术的替代方案。
  • 提供一种将工具用于准调试的方法,例如挂钩一个函数并在每次调用时输出传递给它的参数。
    • 找到一种使用 asminject.py 注入 Frida 的方法可能更有意义——需要更多研究。
  • 开发交互式有效载荷,例如,不向 Python 进程注入特定的 Python 脚本代码行,而是让 asminject.py 提示操作员输入要注入的一行代码,注入它,返回产生的输出,然后提示操作员输入另一行代码。
    • 如果 Frida 可以使用 asminject.py 注入到进程中,并且这种方式能避免 Frida 需要临时调用调试器接口的问题,那么使用 Frida 处理这种情况可能也更有意义。
  • 提供一种与目标进程交互的方法,该进程所在的处理器架构与 asminject.py 运行的架构不匹配。例如,使用 PCI leech 等硬件与远程设备交互,利用极端边界情况,例如通过 NFS 共享以 root 身份可访问 /proc/mem 的设备等。
  • 添加更复杂的混淆片段。
下载工具