前言
Octopus是基于python3的开源项目,可进行操作的C2服务器,可以通过HTTP / S控制Octopus powershell代理。
创建Octopus的主要目的是要在任何红队作战之前使用,而无需开始与您的整个作战武库和基础设施接触,您可以先使用八达通来攻击目标并收集信息,然后再开始实际的红队作战而无需使您的实际基础架构面临风险!
Octopus旨在与C2进行通信时隐秘而隐秘,因为它在Powershell代理和C2服务器之间的加密通道默认使用AES-256。您还可以通过为您的域提供有效的证书并配置Octopus C2服务器以使用它来选择使用SSL / TLS。
Octopus中的一项很酷的功能称为ESA,它表示“端点态势感知”,它将收集有关目标的一些重要信息,这些信息将帮助您更好地了解您在操作过程中将面对的目标网络端点。您可以根据此信息自定义您的实际操作。
0x01安装
使用以下命令就可直接把代码从github上下载到本地,我这里网络问题,我直接传了一份到kali上了(需要代码可github下载或后台回复006)
代码语言:javascript复制git clone https://github.com/mhaskar/Octopus.git
下面我们需要使用pip来安装几个python3的库,我这里网络有问题,所以源使用的是阿里云的源。
代码语言:javascript复制python3 -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
系统上还需要安装mono,以确保可以编译C#源代码而不会出现问题,我这里是已经安装过了。
代码语言:javascript复制apt install mono-devel
启动
代码语言:javascript复制Python3 octopus.py
0x02操作方法
使用help可查询出所有的命令及解释
如果英文不好可以直接用谷歌翻译直接翻译一下,其实命令很少也很简单。
下面我们一个命令一个命令来看。
List:列出所有已经连接的机器。
当有数据的时候是这样的
Delete:删除一个会话
删除一个会话:
代码语言:javascript复制delete 1
Listeners:列出所有的监听器
列出所有的监听器命令:listeners
有数据的情况下是这样的
Delete_listener:删除一个监听器
删除一个监听器:
代码语言:javascript复制dalete_listener test
Listen_http:http监听器配置
查看命令所需的参数及解释:listen_http
代码语言:javascript复制listen_http BindIP BindPort hostname interval URL listener_name
监听器ip 监听器端口 主机名 间隔时间 页面url 监听器名称
启动一个http监听器:
代码语言:javascript复制listen_http BindIP BindPort hostname interval URL listener_name
官方给的两个案例,一个为有域名,一个为没有域名
代码语言:javascript复制Example (with domain) : listen_http 0.0.0.0 8080 myc2.live 5 comments.php op1_listener
Example (without domain) : listen_http 0.0.0.0 8080 172.0.1.3 5 profile.php op1_listener
我们先看以域名来启动监听器:
代码语言:javascript复制listen_http 0.0.0.0 8022 seraph.xxx 5 page test1
由于我是内网环境,所以我改了hosts文件,我们已经能够成功打开
以IP来启动的方法和上面一样,只需要将seraph.xxx域名替换为IP即可
代码语言:javascript复制listen_http 0.0.0.0 8033 192.168.0.194 5 page2.php test2
Listen_https:https监听器配置
https监听器的配置和http差不多只不过多了个证书和私钥
我由于是本地操作所以生成了一个自签名的证书
启动https监听器:
代码语言:javascript复制listen_https 0.0.0.0 443 seraph.xxx 5 page.php test1 /root/ssl/ca.crt /root/ssl/server.pem
启动成功
我们可以使用以下方法生成载荷:
Powershell one-liner
HTA one-liner (reused from APT34)
Windows executable (exe file)
Generate_powershell:生成一个powershell载荷(前提是需要一个监听器)
powershell单行代码将使您能够生成powershell命令,该命令可直接从C2下载并执行有效负载。
您可以使用命令“ generate_powershell”生成powershell代码,如下所示:
代码语言:javascript复制generate_powershell test
里面有三条命令,大家可以随便测试,我这运行里面添加我们的命令,点击确定会直接执行powershell命令。
Octopus里面会发现已经上线了
我们可以查看一下进程,powershell确实在后台运行。
Generate_hta:生成一个HTA载荷(必须有一个监听器)方法大致和powershell生成方法一样。
由于使用了@ahmedkhlief,他可以重用APT34威胁组中的代码,该威胁组从C2下载HTA文件内容并使用mshta.exe受信任的Windows二进制文件运行,以获取最终的Powershell代理已执行。
您可以使用以下命令“ generate_hta”生成HTA:
代码语言:javascript复制generate_hta test
具体怎么操作使用就看各位大佬自行发挥。
Generate_exe:生成windows可执行文件
Octopus可以使用mono-project将C#代理编译为可执行文件,从而为您构建一个随时可用的Windows可执行文件(exe文件)。
Octopus使用一种称为“非托管Powershell”的技术来执行powershell脚本,而无需接触powershell.exe二进制文件,这可以帮助您避免对powershell.exe的任何限制。
Octopus将使用“ System.Management.Automation.dll”文件编译C#代码,然后使用“ PowerShell”对象启动Powershell代码执行。
二进制文件本身非常干净且未被发现,当然它仍在开发中,因此,请等待此功能的更多更新,然后再考虑在野外使用它!
您可以使用命令“ generate_exe”生成exe文件,如下所示:
代码语言:javascript复制generate_exe test /root/test.exe
会生成一个可执行文件
我们下载到windows上测试一下(这里有个坑,需要.net4.0才能运行)
运行之后窗口也是一闪而过,然后就有个session回来了,我本地的火绒也没拦它..........
Interact:选择一个会话进行交互
选择会话交互:interact 2
如果要执行系统命令可以直接输入
自动收集信息:report
另外Octopus提供了多种交互的操作,各位大佬可以自行测试
0x03模拟实战
开启杀软,运行载荷,并没拦截!!!