
PoshC2 是一个支持代理的 C2 框架,用于帮助渗透测试人员进行红队行动、后渗透和横向移动。
PoshC2 主要使用 Python3 编写,采用模块化格式,允许用户添加自己的模块和工具,实现可扩展且灵活的 C2 框架。开箱即用的 PoshC2 提供了 PowerShell/C# 和 Python2/Python3 的植入程序,有效载荷包括 PowerShell v2 和 v4、C++ 和 C# 源代码、各种可执行文件、DLL 和原始 shellcode,以及 Python2/Python3 有效载荷。这些为广泛的设备和操作系统(包括 Windows、*nix 和 OSX)提供了 C2 功能。
PoshC2 的其他显著功能包括:
我们在 https://poshc2.readthedocs.io/en/latest/ 维护 PoshC2 文档。
在 #Slack 上找到我们 - poshc2.slack.com(如需邀请,请发送电子邮件至 [email protected])
您可以直接安装 PoshC2 或使用 Docker 镜像,两种方式的说明如下。
提供了一个用于安装 PoshC2 的安装脚本:
*** PoshC2 安装脚本 ***
用法:
./Install.sh -b <git 分支> -p <克隆 PoshC2 的目录>
默认分支为 master,默认目录为 /opt/PoshC2
需要提升权限,因为安装脚本会执行 apt 更新和安装。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
或者,克隆仓库后手动运行安装脚本。
sudo ./Install.sh
您可以通过将参数 -p 传递给 Install.sh 脚本来手动设置 PoshC2 安装目录。默认为 /opt/PoshC2:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash -s -- -p /root/PoshC2
我们希望保持 master 分支的稳定,以确保用户在需要时能够依赖它。因此,更改通常可能功能完整但尚未出现在 master 上,因为它们尚未完全测试并签署。
如果您想查看 PoshC2 即将推出的功能,可以查看 dev 分支,或任何从 dev 分支出的独立功能分支。
由于功能在合并到 dev 之前会进行测试,因此该分支应仍然相当稳定,操作员可以选择使用此分支或特定功能分支进行任务。
但这会以牺牲稳定性换取新功能,请自行斟酌。
要使用 dev 或功能分支,请将分支名称作为 -b 参数传递给 Install.sh 脚本:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
注意 URL 中也包含分支名称(此处为 dev 而非 master)。
您也可以使用 Docker 运行 PoshC2,这样运行更稳定,并且使 PoshC2 能够轻松地在其他操作系统上运行。
Docker 安装不会克隆 PoshC2,而是使用 Docker Hub 上的 PoshC2 镜像,因此仅执行一些依赖项和脚本的最小安装。
首先,在主机上安装 Docker,然后根据您的操作系统,将 PoshC2 项目目录添加为 Docker 的共享目录。默认情况下,*nix 上为 /var/poshc2,Mac 上为 /private/var/poshc2。
安装脚本:
*** PoshC2 的 Docker 安装脚本 ***
用法:
./Install-for-Docker.sh -b <git 分支>
默认分支为 master
需要提升权限,因为安装脚本会执行脚本安装。
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install-for-Docker.sh | sudo bash
要在 Docker 中使用 dev 或功能分支,请从相应分支下载 Install-for-Docker.sh,并将分支名称作为参数传递:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
在 Windows 上,导入 PoshC2.psm1 PowerShell 模块。
Import-Module -DisableNameChecking C:\PoshC2\resources\scripts\PoshC2.psm1
posh-project -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" -Arg1 "-n" -Arg2 "newproject"
posh-config -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh-server -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" username
创建一个新项目:
posh-project -n <项目名称>
可以使用此脚本切换或列出项目:
[*] 用法:posh-project -n <新项目名称>
[*] 用法:posh-project -s <要切换到的项目>
[*] 用法:posh-project -l (列出项目)
[*] 用法:posh-project -d <要删除的项目>
[*] 用法:posh-project -c (显示当前项目)
编辑项目的配置:
posh-config
启动 PoshC2 服务器:
posh-server
或者作为服务启动:
posh-service
另外,运行 ImplantHandler 以与植入程序交互:
posh -u <用户名>
请参阅 https://poshc2.readthedocs.io/en/latest/ 以获取 PoshC2 的完整文档。
如果您使用 Docker,可以使用 -t 选项为 posh-server 和 posh 指定要运行的 Docker 镜像标签。
例如:
posh-server -t latest
不建议在任务期间更新 PoshC2。传入的更改可能与现有项目不兼容,并可能导致异常行为。
当使用 git 克隆版本的 PoshC2 时,您可以使用以下命令更新您的 PoshC2 安装:
*** PoshC2 更新脚本 ***
用法:
posh-update -b <git 分支>
默认分支为 master
您可以通过引用相应的标签来使用旧版本的 PoshC2。请注意,这仅在您已克隆仓库的情况下有效。 您可以通过以下命令列出仓库的标签:
git tag --list
如果您有 PoshC2 的本地克隆,可以在离线时通过检出要使用的版本来更改使用的版本:
git reset --hard <标签名称>
例如:
git reset --hard v4.8
但请注意,这将覆盖对文件的任何本地更改,例如对配置文件的更改,并且您可能需要重新运行该版本的安装脚本或相应地重新设置环境。
本软件仅应用于授权的测试活动,不得用于恶意用途。
下载本软件即表示您接受使用条款和许可协议。