Red team之Octopus(章鱼)的使用

2021-04-15 13:11:45 浏览数 (1)

这款工具最早被演示于BlackHat London 2019中,Octopus是一个基于python3的开源,可操作的C2服务器,它可以通过HTTP/ S控制Octopus powershell代理。

Octopus在与C2通信时被设计为隐秘且隐蔽的,因为它在Powershell代理与C2服务器之间的加密通道默认使用AES-256。

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 requirement.txt

过以下命令安装`mono-devel`以在Octopus中使用C#编译功能:

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

工具使用:

您可以编辑文件profile.py 以开始构建自己的配置文件,其中包含以下主要URL:

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

您可以输入help命令来查看工具的部分帮助:

分别是一些监听器、混淆器什么的,我们来使用http(您可以通过SSL / TLS加密通道与代理进行通信,这将在与代理进行通信的同时为您提供更多功能)的方式来开启一个监听,

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

若是https则多出以下的选项:

  • certficate_path:有效ssl证书的路径(letesencrypt证书被称为fullchain.pem)
  • key_path:ssl证书的有效密钥的路径(letesencrypt证书称为key.pem)

您可以生成代理以通过您选择的特定侦听器与C2通信,代理可以为您执行多项任务,例如:

  • 执行系统命令。
  • 加载外部Powershell模块。
  • 从目标计算机下载文件。
  • 运行ESA模块以收集有关目标的一些非常有用的信息

我们可以使用以下方法生成并交付我们的代理:

  • Powershell单线
  • HTA单线(从APT34重复使用)
  • Windows可执行文件(exe文件)

我这里以powershell为例:

代码语言:javascript复制
generate_powershell listener_name

其他两种也一样:

代码语言:javascript复制
generate_hta listener_name
generate_exe listener_name output_path

注:用mono-project将C#代理编译为可执行文件,从而为您构建一个现成的Windows可执行文件(exe文件)。

目标机执行生成的powershell指令,上线:

与代理进行交互之后,您只需执行命令并等待结果,即可执行系统命令!

与代理进行交互之后,您只需执行命令并等待结果,即可执行系统命令!

您还可以将Powershell模块加载到Octopus中以在攻击过程中为您提供帮助,您只需要将要使用的模块复制到“模块”目录中,然后在与代理进行交互时执行“load module_name”以直接加载模块,您也可以使用“modules”命令显示所有可用模块。

ESA模块代表“端点态势感知”,它可以帮助攻击者获取有关端点和基础架构的一些额外信息,例如:

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

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

这里不再演示。

觉得不错,点个在看,谢谢大家。

0 人点赞