官网地址 —> GitHub - calebstewart/pwncat: Fancy reverse and bind shell handler

简介

pwncat 是一个后渗透平台 用于 Linux 目标. 它最初是作为基本绑定和反向 shell 的包装器,并从那里发展起来。它简化了常见的红队操作,同时从攻击者机器而不是目标上暂存代码。

pwncat 以前只支持Linux,但是最近做了很多工作来支持多平台。目前,有对 Windows 目标的 alpha 支持。有关如何在 Windows 目标上使用 pwncat 的详细信息,请参阅最新pwncat documentation

pwncat 拦截与远程 shell 的原始通信,并允许用户在远程主机上执行自动化操作,包括枚举、植入安装甚至权限提升。

收到连接后,pwncat 将设置一些常用配置以使用远程 shell。

  • 在远程 shell 中禁用历史记录
  • 规范化 shell 提示
  • 找到有用的二进制文件(使用which)
  • 尝试为完整的交互式会话生成伪终端 (pty)

pwncat知道如何使用几种不同的方法生成 pty,并将交叉引用与先前枚举的可执行文件的方法。生成 pty 后,它将以原始模式设置控制终端,因此您可以以类似于ssh.

pwncat还将远程 pty 设置(例如行、列、TERM环境变量)与您的本地设置同步, 以确保 shell 与交互式应用程序(例如vim或 )正确运行nano。

John Hammond 和我pwncat在 GRIMMCon 上发表了演讲。我们的演示文稿,可在此处在 YouTube 上找到。该视频演示了 API 和界面的早期版本。请参阅文档以获取最新用法和 API 文档!

pwncat 在 Linux 上需要 Python 3.9+

pwncat 是一个命令和控制框架,它将基本的反向或绑定 shell 变成一个功能齐全的开发平台。初始连接后,框架将探测远程系统以识别目标系统上本机可用的有用二进制文件。然后它将尝试在远程主机上启动一个伪终端并为您提供原始终端访问。

不过,pwncat 并不止于此。除了原始终端访问之外,pwncat 还可以在终端访问的同时以编程方式与远程主机交互。pwncat 为您提供了一个本地 shell 接口,它可以利用您的连接进行枚举、文件上传/下载、自动持久性安装甚至自动提权

使用原因

您可能熟悉使用反向 shell 获取原始终端访问权限的常用方法。它通常是这样的:

  1. # 连接到远程绑定shell
  2. nc 1.1.1.1 4444
  3. # 生成远程伪终端
  4. remote$ python -c "import pty; pty.spawn('/bin/bash')"
  5. # Background your raw shell
  6. remote$ C-z
  7. # Set local terminal to raw mode
  8. local$ stty raw -echo
  9. # Foreground your remote shell
  10. local$ fg
  11. # You now have a full terminal that doesn't exit on C-c and
  12. # supports keyboard shortcuts, history, graphical terminal
  13. # applications, etc.
  14. remote$

这很好用。然而,一段时间后,获得反向shell的附加步骤很费力。**此外,在获得原始访问权限之前不小心按“Ctrl c”而丢失远程 shell 的风险很高**。这是这个项目的最初灵感。

安装

这里推荐虚拟环境安装,Python3 虚拟环境安装见 —> Python 虚拟环境

  1. $ pip install pwncat-cs
  1. $ pwncat-cs --help
  2. usage: pwncat-cs [-h] [--version] [--download-plugins] [--config CONFIG] [--ssl] [--ssl-cert SSL_CERT]
  3. [--ssl-key SSL_KEY] [--identity IDENTITY] [--listen] [--platform PLATFORM] [--port PORT] [--list]
  4. [[protocol://][user[:password]@][host][:port]] [port]
  5. 启动交互式 pwncat 会话,并可选择通过已知平台和通道类型连接到现有受害者。 此入口点还可用于列出先前目标上的已知植入程序。
  6. positional arguments:
  7. [protocol://][user[:password]@][host][:port]
  8. Connection string describing victim
  9. port 支持 netcat 样式语法的备用端口号
  10. optional arguments:
  11. -h, --help show this help message and exit
  12. --version, -v Show version number and exit
  13. --download-plugins 预下载所有 Windows 内置插件并立即退出
  14. --config CONFIG, -c CONFIG
  15. 自定义配置文件(默认:./pwncatrc
  16. --ssl 使用 SSL 连接或收听
  17. --ssl-cert SSL_CERT SSL 加密侦听器 (PEM) 的证书
  18. --ssl-key SSL_KEY SSL 加密侦听器 (PEM) 的密钥
  19. --identity IDENTITY, -i IDENTITY
  20. 用于 SSH 身份验证的私钥
  21. --listen, -l 启用 `bind` 协议(支持 netcat 风格的语法)
  22. --platform PLATFORM, -m PLATFORM
  23. 要使用的平台名称(默认值:linux
  24. --port PORT, -p PORT 指定端口以支持 netcat 样式语法的替代方法
  25. --list 列出具有远程连接功能的已安装植入物