PWNCAT是一个爆炸后平台对于Linux目标。它最初是在基本绑定和反向外壳周围的包装纸开始,并从那里生长。它简化了从攻击者机器而不是目标的代码时简化常见的红色团队操作。
PWNCAT曾经仅支持Linux,但是最近有很多工作来支持多个平台。当前,对Windows目标有Alpha支持。请参阅最新文档,以获取有关如何与Windows目标使用PWNCAT的详细信息。
PWNCAT用远程外壳拦截原始通信,并允许用户在远程主机上执行自动操作,包括枚举,植入安装甚至特权升级。
接收连接后,PWNCAT将设置一些常见的配置,以使用远程外壳。
which ) pwncat知道如何使用几种不同的方法产生PTY,并将将方法与先前列举的可执行文件交叉引用。产卵PTY后,它将以原始模式设置控制终端,因此您可以以与ssh相似的方式进行交互。
pwncat还将与您的本地设置同步远程PTY设置(例如行,列, TERM环境变量),以确保Shell与vim或nano等交互式应用程序正确行为。
约翰·哈蒙德(John Hammond)和我在格林康(Grimmcon)介绍了pwncat 。我们的演示文稿,可以在YouTube上找到。该视频展示了API和接口的早期版本。请参阅文档以获取最新的使用和API文档!
PWNCAT文档正在阅读文档上。前往那里获取最新的用法和开发文档!
pwncat在Linux上需要Python 3.9+
pwncat仅取决于在Linux上运行的Python开发环境。为了安装pip所需的一些软件包,您可能需要发行版的“ Python开发”软件包。在基于Debian的系统上,这是python-dev 。对于ARCH,开发文件是用主要的Python存储库来运送的。对于Enterprise Linux,该软件包被命名为python-devel 。
pwncat以pwncat-cs的名称将PWNCAT推向PYPI,并且可以与pip一起安装:
pip install pwncat-cs但是,建议从虚拟环境中安装PWNCAT。
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs对于开发环境, pwncat使用Python诗歌。您可以在本地克隆存储库,并使用诗歌来设置开发环境。
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell由于与Cytopia的pwncat发生了命名冲突,我决定将该包装命名为pwncat-cs 。这包括重命名入口点,因此与Cytopia的项目没有直接冲突。如果您正在从v0.4.*更新,则命令名称现在将更改,并且pcat和pc VARIANST已删除。有关更多详细信息,请参见最新发行说明。
此举的额外好处是,现在将项目推向PYPI,以便将来更轻松地安装/更新。
pwncat现在支持从v0.4.0a1开始的Windows目标的连接。 Windows平台使用了一个基于.NET的C2库,该库是自动加载的。 Windows目标应与cmd.exe或powershell.exe shell连接,并且PWNCAT将负责其余的。
实施C2的库是在Pwncat-Windows-C2上实现的。 C2的DLL将自动从目标版本中为您下载。如果您的目标计算机上没有Internet连接性,则可以告诉PWNCAT使用--download-plugins参数前阶段DLL。如果您正在运行PWNCAT版本版本,则还可以从“版本”页面下载所有内置插件的粉末。
该插件默认存储在~/.local/share/pwncat中,但是可以使用plugin_path配置配置。如果您从“发行版”页面下载包装的插件集,则应将其提取到plugin_path指向的路径。
除了主要的C2 DLL外,还可以提供其他插件。当前,唯一提供的默认插件是C2和BadPotato的实现。 PWNCAT可以反射加载.NET二进制文件用于C2的插件。有关Windows C2插件的更多信息,请参阅文档。
最近,重新设计了PWNCAT框架的体系结构,以结合通用的“模块”结构。现在,所有功能都作为模块实现。这包括枚举,持久性和特权升级。与模块的交互类似于大多数其他爆炸后平台。您可以利用熟悉的run , search和info命令,并使用use命令输入模块上下文。有关更多信息,请参阅文档。
Blackarch上的安装很简单:
pacman -Syu pwncat-calebPWNCAT的命令行参数试图灵活并接受各种共同的连接语法。具体而言,它将尝试接受常见的NetCat和SSH,例如语法。以下都是有效的:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
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参数:
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444有关语法和参数处理的更多信息,请参见pwncat-cs --help或访问文档。
推荐的安装方法是Python虚拟环境。这提供了最简单的日常使用pwncat 。但是,有兴趣使用Docker映像中的pwncat ,因此我提供了一个提供可用的pwncat安装的Dockerfile。构建图像使用:
docker build -t pwncat .这将使用标签“ pwncat”构建pwncat docker映像。容器中的工作目录是/work 。容器的入口点是pwncat二进制文件。它可以像这样使用:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v " /some/directory " :/work -t pwncat 10.0.0.1 4444在此示例中,只有/some/directory中的文件暴露于容器中。显然,为了上传/下载,容器只能看到通过任何已安装的目录暴露的文件。
pwncat提供了两个主要功能。它的核心目标是自动设置远程伪t(pty),该远程伪电位(PTY)允许与远程主机进行交互,就像完整的SSH会话一样。在PTY操作时,您可以使用远程外壳的常见功能,例如历史记录,线路编辑和图形终端应用程序。
pwncat的另一半是一个框架,它利用您的远程外壳执行自动枚举,持久性和特权升级任务。本地pwncat提示为标准渗透测试提供了许多有用的功能,包括:
pwncat还提供了自动恢复这些遥控“ ander”的能力与远程主机进行交互的基础框架旨在尽可能地抽象基础外壳和连接方法,从而允许命令和插件与远程主机无缝交互。
您可以了解有关与pwncat互动以及文档中的基础框架的更多信息。如果您有新的特权升级方法或持久方法的想法,请专门查看API文档。欢迎拉动请求!
PWNCAT希望成为一支红队瑞士军刀。希望很快,将添加更多功能。
由于pwncat试图与任何具有最小远程系统依赖性的外壳进行抽象的交互,因此我们发现了一些边缘情况。在找到它们的地方,我们可以竭尽所能来解释它们并将其隐藏在用户中。但是,有些已经滑过裂缝,并在野外观察到。发生这种情况时, pwncat将竭尽所能保留您的终端,但是您可能会受到一些特殊的输出或命令失败的欢迎。
虽然BSD是基于UNIX的内核,但实际上,它的Userland工具与Linux同行截然不同。因此, pwncat的许多自动化功能在反对基于BSD的目标时无法使用或完全失败。我试图捕获所有错误或边缘案例,但是可能有一些打ic,这些打ic尚未对BSD进行全面测试。无论如何,稳定的外壳应在BSD环境中起作用,但我不提供任何保证。
如果我稍后发现一些时间,我可能会尝试稳定BSD上的pwncat ,但现在我的重点是基于Linux的发行版。如果您想为使pwncat在BSD上表现得更好,那么您会更欢迎您伸出手或仅分配存储库。与往常一样,欢迎拉动请求!