命令控制之Octopus

文章前言

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可执行代理

  • 创建自定义配置文件

  • 从端点自动收集信息(端点态势感知)功能

工具安装

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

git clone https://github.com/mhaskar/Octopus.gitsudo pip3 install -r requirements.txt

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

apt install mono-devel

之后启用即可:

命令控制之Octopus

工具使用

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:此标头将在每个响应中显示

例如:

#!/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.phpfile_reciever_url = \\\"/messages\\\"

# handling the report generation# Ex : /anything# Ex : /anything.phpreport_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.phpcommand_receiver_url = \\\"/bills\\\"

# handling the first connection from the agent# Ex : /anything# Ex : /anything.phpfirst_ping_url = \\\"/login\\\"
# will return in every response as Server headerserver_response_header = \\\"nginx\\\"
# will return white page that includes HTA scriptmshta_url=\\\"/hta\\\"

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

监听器

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

HTTP监听器

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

  • BindIP:侦听器将使用的IP地址

  • BindPort:要监听的端口

  • 主机名:您将用于与之通信的主机名

  • 时间间隔:代理在检查命令之前将等待的秒数

  • URL:承载有效负载的页面的名称(例如:index.php)

  • Listener_name:要使用的侦听器名称

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

命令控制之Octopus

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

listen_http 0.0.0.0 8080 192.168.174.131 5 index.php operation1

之后将返回以下结果:

命令控制之Octopus

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

命令控制之Octopus

HTTPS监听器

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

命令控制之Octopus

由于这里没有证书文件,所以我也就不做演示了,具体操作可参考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生成代理,我们可以使用以下命令:

generate_powershell operation1

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

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

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

  • OS的构建是什么?

  • 他们正在使用哪种AV/EDR?

  • 他们启用了Sysmon吗?

  • 他们正在使用哪个SIEM收集器?

  • 以及其他一些信息

命令控制之Octopus

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

命令控制之Octopus

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

命令控制之Octopus

HTA oneliner

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

generate_hta operation1

我们将得到以下结果:

命令控制之Octopus

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

EXE代理

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

generate_exe operation1 /home/HackTools/RedTeam/Octopus/file.exe

命令控制之Octopus

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

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

文末小结

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

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34119.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月3日 上午8:42
下一篇 2024年4月3日 上午8:44

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注