1 个不稳定版本
0.2.0 | 2024年3月16日 |
---|
#412 在 操作系统
25KB
581 行
pox
Pox 是一个进程感染框架,具有操作远程地址空间的工具。
Pox 使用 PTRACE 系统调用构建,因此仅限于 Linux/BSD 系统。
用法
Pox 自身是一个 crate,提供执行远程系统调用、注入远程字符串、监控远程执行和查找内存映射等功能。在将此 crate 包含到项目中时,大多数功能可以单独选择:[locator, monitor, rc]
。
此外,使用 bin
功能,将生成一个示例感染二进制文件:vector
。
Vector
Vector 可以感染正在运行的过程,远程调用 dlopen()
并加载共享对象。它只能在链接了 glibc 的二进制文件上工作(目前不支持 musl)。它可以攻击正在运行的过程(可能需要 root 权限)或启动一个子进程并感染它。
Vector 将
- 查找系统调用指令并使用它执行远程操作
- 远程调用 mmap 来分配一个字符串
- 将共享对象路径写入分配的字符串
- 从系统 glibc 和 procmaps 计算dlopen地址
- 强制设置寄存器并使用之前注入的路径执行dlopen
- 恢复进程
状态
Pox 仍在开发中。我构建这个项目是为了探索 Linux OS、进程和内存。
作者说明
由于它可以帮助将额外的库引入运行中的进程,因此这可能被用于制作恶意软件。然而,我认为开源它是可以的
- 注入方法是相当古老的,于2002年在 Phrack 上描述。
- 此方法仅适用于 Linux/BSD
- 在大多数现代系统中,如果不是以 root 运行,PTRACE 无法附加到其他进程
- 还有其他可用的项目在做同样的事情
依赖关系
~0.3–9MB
~72K SLoC