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

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

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

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

工具目录

分类

查看所有分类
Loading categories
pwncat — 后渗透利用平台,通过反向/绑定shell自动化枚举、权限提升、持久化和C2操作,支持Linux和Windows跨平台。 | Kitploit
工具/GitHubGitHub/calebstewart/pwncat
权限提升持久化机制后渗透利用渗透测试命令与控制红队
GitHubcalebstewart/pwncat

pwncat

后渗透利用平台,通过反向/绑定shell自动化枚举、权限提升、持久化和C2操作,支持Linux和Windows跨平台。

查看仓库
2.9k2924年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

pwncat

asciicast

pwncat 是一个后期利用平台 原本针对 Linux 目标。它最初是基本绑定和反弹 shell 的包装器,并从此发展壮大。它简化了常见的红队操作,同时从攻击者机器(而非目标)部署代码。

pwncat 以前只支持 Linux,但最近做了大量工作以支持多个平台。目前,对 Windows 目标提供 alpha 支持。有关如何在 Windows 目标上使用 pwncat 的详细信息,请参阅最新的[文档]。

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

收到连接后,pwncat 将设置一些用于与远程 shell 工作的公共配置。

  • 禁用远程 shell 中的历史记录
  • 标准化 shell 提示符
  • 定位有用二进制文件(使用 which)
  • 尝试生成伪终端(pty)以获得完整交互式会话

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

pwncat 还会将远程 pty 设置(例如行数、列数、TERM 环境变量)与本地设置同步,以确保 shell 在与交互式应用程序(如 vim 或 nano)配合使用时行为正确。

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

pwncat 的[文档]正在 Read the Docs 上构建。请前往那里获取最新的使用和开发文档!

pwncat 要求 Linux 上安装 Python 3.9+

安装

pwncat 仅依赖于一个运行在 Linux 上的工作 Python 开发环境。为了通过 pip 安装某些所需包,您可能需要您发行版的“Python 开发”包。在基于 Debian 的系统上,这是 python-dev。对于 Arch,开发文件随主 Python 仓库一起提供。对于 Enterprise Linux,包名为 python-devel。

pwncat 已以 pwncat-cs 名称推送到 PyPI,并可通过 pip 安装,如下所示:

root@kitploit:~
pip install pwncat-cs

但建议从虚拟环境中安装 pwncat。

root@kitploit:~
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs

对于开发环境,pwncat 使用 Python Poetry。您可以克隆本地仓库并使用 poetry 设置开发环境。

root@kitploit:~
# 在 poetry 管理的虚拟环境中设置 pwncat
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install

# 进入虚拟环境
poetry shell

命名变更

由于与 Cytopia 的 pwncat 存在命名冲突,我决定将包重命名为 pwncat-cs。这包括重命名入口点,以便与 Cytopia 的项目没有直接冲突。如果您从 v0.4.* 升级,命令名称现已更改,pcat 和 pc 变体已被移除。有关详细信息,请参见最新的发布说明。

这一举措的额外好处是,该项目现在已推送到 PyPI,便于将来安装/更新。

Windows 支持

pwncat 从 v0.4.0a1 开始支持来自 Windows 目标的连接。Windows 平台利用一个自动加载的基于 .Net 的 C2 库。Windows 目标应使用 cmd.exe 或 powershell.exe shell 连接,pwncat 将处理其余事项。

实现 C2 的库位于 pwncat-windows-c2。C2 的 DLL 将自动从目标发行版中为您下载。如果您在目标机器上没有互联网连接,可以告诉 pwncat 使用 --download-plugins 参数预先放置 DLL。如果您运行的是 pwncat 的发行版,也可以从发行页面下载包含所有内置插件的 tarball。

插件默认存储在 ~/.local/share/pwncat,但可以通过 plugin_path 配置进行设置。如果您从发行页面下载了打包的插件集,应将其解压到 plugin_path 指向的路径。

除了主要的 C2 DLL,其他插件也可能可用。目前,唯一提供的默认插件是 C2 和 BadPotato 的实现。pwncat 可以反射加载 .Net 二进制文件作为 C2 的插件。有关 Windows C2 插件的更多信息,请参见[文档]。

模块

最近,pwncat 框架的架构被重新设计,融入了通用的“模块”结构。所有功能现在都作为模块实现。这包括枚举、持久化和权限提升。与模块的交互与其他大多数后利用平台类似。您可以使用熟悉的 run、search 和 info 命令,并使用 use 命令进入模块上下文。请参考文档了解更多信息。

BlackArch 打包

Packaging status

在 BlackArch 上安装非常简单:

root@kitploit:~
pacman -Syu pwncat-caleb

连接到受害者

pwncat 的命令行参数力求灵活,接受多种常见连接语法。具体来说,它会尽量接受常见的 netcat 和 ssh 类型的语法。以下都是有效的:

root@kitploit:~
# 连接到绑定 shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# 监听反弹 shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# 通过 SSH 连接
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH 使用非标准端口
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# 利用安装的持久化重新连接
#   如果重新连接失败且未指定协议,则回退使用 SSH。
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10

默认情况下,pwncat 假定目标平台是 Linux。要连接到 Windows 反弹或绑定 shell,您必须传递 --platform/-m 参数:

root@kitploit:~
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444

有关语法和参数处理的更多信息,请参阅 pwncat-cs --help 的帮助信息或访问[文档]。

Docker 镜像

推荐的安装方法是 Python 虚拟环境。这提供了最简单的日常使用 pwncat 方式。不过,也有兴趣通过 docker 镜像使用 pwncat,因此我提供了一个 Dockerfile,其中包含可工作的 pwncat 安装。要构建镜像,请使用:

root@kitploit:~
docker build -t pwncat .

这将构建带有标签 "pwncat" 的 pwncat docker 镜像。容器内的工作目录是 /work。容器的入口点是 pwncat 二进制文件。可以像这样使用它:

root@kitploit:~
# 连接到 10.0.0.1:4444 的绑定 shell
docker run -v "/some/directory":/work -t pwncat 10.0.0.1 4444

在此示例中,只有 /some/directory 中的文件暴露给容器。显然,对于上传/下载,容器只能看到通过任何挂载目录暴露的文件。

功能特性

pwncat 提供两个主要特性。其核心目标是自动设置远程伪终端(pty),从而允许与远程主机进行类似完整 SSH 会话的交互。在 pty 中操作时,您可以使用远程 shell 的常见功能,如历史记录、行编辑和图形终端应用程序。

pwncat 的另一半是一个框架,利用远程 shell 执行自动枚举、持久化和权限提升任务。本地 pwncat 提示符提供了许多用于标准渗透测试的有用功能,包括:

  • 文件上传和下载
  • 自动权限提升枚举
  • 自动权限提升执行
  • 自动持久化安装/移除
  • 自动跟踪修改/创建的文件
    • pwncat 还提供自动还原这些远程“篡改”的能力

与远程主机交互的底层框架旨在尽可能抽象底层 shell 和连接方法,使命令和插件能够与远程主机无缝交互。

您可以了解更多关于与 pwncat 交互以及底层框架的信息,请参阅[文档]。如果您有新的权限提升方法或持久化方法的想法,请特别查看 API 文档。欢迎拉取请求!

计划功能

pwncat 希望成为红队的瑞士军刀。希望很快能添加更多功能。

  • 更多权限提升方法(sudo -u#-1 CVE、LXD 容器等)
  • 持久化方法(绑定 shell、cron 任务、SSH 访问、PAM 滥用等)
  • 攻击方法(向终端发送随机内容、刷新防火墙等)
  • 趣味方法(终端鹦鹉、cowsay、wall 等)
  • 网络方法(端口转发、通过主机访问互联网等)

已知问题

由于 pwncat 试图以抽象方式与任何 shell 交互,且尽量减少对远程系统依赖的要求,我们发现了一些边缘情况。在发现这些情况时,我们会尽力处理并将它们对用户隐藏。然而,有些情况仍然被遗漏了,并在实际使用中被观察到。当这种情况发生时,pwncat 会尽一切可能保护您的终端,但您可能会遇到一些奇怪的输出或命令失败。

BSD 支持

虽然 BSD 是一个基于 Unix 的内核,但它的用户态工具与 Linux 相比明显不同。因此,许多 pwncat 的自动功能在针对 BSD 目标运行时可能会失效或完全失败。我尝试捕捉所有错误或边缘情况,但仍可能存在一些尚未在 BSD 上完全测试的障碍。无论如何,稳定的 shell 应该能在 BSD 环境中运行,但我不提供任何保证。

如果以后有时间,我可能会尝试在 BSD 上稳定 pwncat,但目前我的重点是基于 Linux 的发行版。如果您想帮助改进 pwncat 在 BSD 上的表现,非常欢迎您联系我或直接复刻仓库。一如既往,欢迎拉取请求!

下载工具