
Pupy
Pupy 是一个开源的、跨平台(Windows、Linux、OSX、Android)的多功能 RAT(远程管理工具)和后期渗透工具,主要用 python 编写。它采用全内存执行方式,并且占用空间极小。Pupy 可以使用多种传输方式进行通信,迁移到进程中(反射注入),并从内存中加载远程 python 代码、python 包和 python C 扩展。
Pupy 模块可以使用 rpyc 透明地访问远程 python 对象,以执行各种交互式任务。
Pupy 可以生成多种格式的 payload,如 PE 可执行文件、反射 DLL、纯 python 文件、powershell、apk 等。
当你打包 payload 时,可以选择启动器(connect、bind 等)、传输方式(ssl、http、rsa、obfs3、scramblesuit 等)以及若干“scriptlet”。Scriptlet 是用于嵌入以在离线状态下(无需会话)执行各种任务的 python 脚本,例如启动后台脚本、添加持久化、启动键盘记录器、检测沙箱等。
安装
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
或参考 wiki
特性
- 多平台(已在 windows xp、7、8、10、kali linux、ubuntu、osx、android 上测试)
- 在 Windows 上,Pupy 的 payload 可以被编译为反射 DLL,整个 python 解释器从内存中加载。Pupy 不会触碰磁盘 :)
- pupy 也可以打包成单个 .py 文件,并在所有操作系统上无需除 python 标准库以外的任何依赖即可运行
- 当 pycrypto 不可用时,会使用纯 python 的 aes 和 rsa 实现替代
- Pupy 可以反射性地迁移到其他进程中
- Pupy 可以从内存中远程导入纯 python 包(.py、.pyc)和已编译的 python C 扩展(.pyd、.so)。导入的 python 模块不会触碰磁盘。
- Pupy 易于扩展,模块编写非常简单,并按操作系统和类别分类。
- 已经实现了大量很棒的模块!
- Pupy 使用 rpyc,模块可以直接访问远程客户端上的 python 对象
- 我们还可以从 pupy shell 以交互方式访问远程对象,甚至可以获得远程属性的自动补全!
- 通信传输是模块化、可叠加且非常棒的。你可以使用 HTTP over HTTP over AES over XOR 来窃取数据,或者使用任意可用传输方式的组合!
- Pupy 可以使用 obfsproxy 可插拔传输
- 所有非交互模块都可以通过一条命令分发到多个主机
- 在远程主机上运行的命令和脚本可以被中断
- 命令和参数自动补全
- 可以定义自定义配置:命令别名、连接时自动运行的模块等。
- 可以打开基于全内存远程 python 解释器的交互式 python shell,并带有自动补全
- 可以远程打开交互式 shell(cmd.exe、/bin/bash 等)。Unix 和 Windows 客户端上的远程 shell 拥有真正的 tty,所有键盘信号都正常工作,就像 ssh shell 一样
- Pupy 可以远程并从内存中执行 PE exe(参见 mimikatz 的示例)
- Pupy 可以生成多种格式的 payload:apk、lin_x86、lin_x64、so_x86、so_x64、exe_x86、exe_x64、dll_x86、dll_x64、py、pyinst、py_oneliner、ps1、ps1_oneliner、rubber_ducky
- Pupy 可以通过 pupygen.py 的 python 或 powershell 单行命令,从一条命令行部署到内存中。
- “scriptlets” 可以嵌入生成的 payload 中,以在无需网络连接的情况下“离线”执行某些任务(例如:启动键盘记录器、添加持久化、执行自定义 python 脚本、check_vm 等)
- 还有大量其他功能,请查看已实现的模块
已实现的传输方式
pupy 中的所有传输方式都是可叠加的。这意味着通过创建自定义传输配置(pupy/network/transport/<transport_name>/conf.py),你可以让 pupy 会话看起来像任何东西。例如,你可以将 HTTP over HTTP over base64 over HTTP over AES over obfs3 叠加起来 :o)
- rsa
- 使用 RSA 和 AES256 进行认证与加密的层,通常与其他层叠加
- aes
- ssl(默认项)
- ssl_rsa
- http
- 使流量看起来像 HTTP 流量的层。HTTP 叠加了 rsa 层
- obfs3
- scramblesuit
- udp
- 基于 UDP 的 rsa 层(可能有问题,尚未处理数据包丢失)
- other
- 其他层没有实际意义,仅作为代码示例提供:(dummy、base64、XOR 等)
已实现的启动器(未更新,参见 ./pupygen.py -h)
启动器允许 pupy 在开始反向连接之前运行自定义操作。
- connect
- bind
- auto_proxy
- 获取可能的 SOCKS/HTTP 代理列表并逐一尝试。代理获取方式包括:注册表、WPAD 请求、gnome 设置、HTTP_PROXY 环境变量
已实现的模块(未更新)
所有平台:
- 命令执行
- 下载
- 上传
- 带自动补全的交互式 python shell
- 交互式 shell(cmd.exe、powershell.exe、/bin/sh、/bin/bash 等)
- tty 分配在 windows 和 *nix 上都得到很好的支持,看起来就像一个 ssh shell
- shellcode 执行
- 持久化
- socks5 代理
- 本地和远程端口转发
- 屏幕截图
- 键盘记录器
- 从内存中运行超棒的凭据收集工具 LaZagne!
- 嗅探工具、netcreds
- 进程迁移(windows 和 linux,osx 尚不支持)
- ...
- 大量其他工具(upnp 客户端、使用 impacket 远程执行的各种侦察/跳板工具等)
Windows 专属:
- migrate
- 跨进程架构注入同样有效(x86->x64 和 x64->x86)
- 从内存中执行 x86 和 x64 的 PE exe!
- 网络摄像头快照
- 麦克风录音
- mouselogger:
- token 操作
- getsystem
- creddump
- 大量有用的 powershell 脚本
- ...
Android 专属
- Android 的文字转语音,用来大声说出内容
- 网络摄像头快照(前置摄像头和后置摄像头)
- GPS 跟踪器!
文档
参考 wiki
一些截图(未更新)
wiki 上的截图部分
常见问题
服务器能在 windows 上运行吗?
Pupy 服务器在 linux 上运行效果最好。Windows 上的服务器尚未经过充分测试,可能有许多 bug。我尽力以可移植的方式编写代码,但并不总能找到时间修复所有问题。如果你有勇气修补不可移植的代码,我将非常乐意接受 pull request!:)
我安装不了,这是怎么回事?
请查看 wiki 中的安装部分
启动 pupy.sh 时出现以下错误:ImportError: No module named creddump.win32.domcachedump
请按照 wiki 中的安装步骤操作,你遗漏了 git 子模块的初始化/更新
使用 pupygen 时出现以下错误:IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
请按照 wiki 中的安装步骤操作,你遗漏了 git 子模块的初始化/更新
安装时出现了另一个错误
请按照 wiki 中的安装步骤操作(是的,我知道)
嘿,我喜欢 pupy,我想知道能不能请你喝杯啤酒!
当然可以!谢谢!
通过 pledgie :
通过 BTC:12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
嘿,你能加个 DDOS 模块吗?
不行。
联系方式
通过邮件:[email protected]
在 Twitter 上:在 twitter 上关注我
如果你们中有人想参与 pupy 的开发,不要犹豫!非常感谢所有帮助,我会审查每一个 pull request。
这个项目是一个个人开发项目,请尊重它的理念,不要将其用于恶意目的!
特别感谢
特别感谢所有帮助我改进 pupy 并使其成为更好工具的贡献者!:)