Covenant是一个.NET命令和控制框架,旨在突出.NET的攻击面,在Covenant的帮助下,研究人员可以更加轻松地去利用.NET的攻击面,而且它还可以作为红队研究人员的协作命令和控制平台。 Covenant是一个ASP.NET核心,并且是一款跨平台的应用程序,其中包含了一个基于Web的用户界面,并支持多用户协同工作。 0x01Covenant安装 项目主页: - https://github.com/cobbr/Covenant
复制代码我们直接从github上克隆下来(由于我的网速克隆github上的项目太慢了,所以我用proxychains代理了一下)
- git clone --recurse-submodules https://github.com/cobbr/Covenant
复制代码 我们还需要下载一个编译环境,确保安装dotnet核心版本2.2 SDK!Covenant尚不支持dotnet core 3.0,SDK是构建项目所必需的(不仅仅是运行时)。 下载地址: - https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-2.2.207-linux-x64-binaries
复制代码我们需要先把包下载下来: - wget https://download.visualstudio.microsoft.com/download/pr/022d9abf-35f0-4fd5-8d1c-86056df76e89/477f1ebb70f314054129a9f51e9ec8ec/dotnet-sdk-2.2.207-linux-x64.tar.gz
复制代码
使用官网上给出的三条安装配置命令发现就可以直接把编译环境部署成功
- mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-2.2.207-linux-x64.tar.gz -C $HOME/dotnet
- export DOTNET_ROOT=$HOME/dotnet
- export PATH=$PATH:$HOME/dotnet
复制代码
下面我们就可以开始使用dotnet编译Covenant了 还是两条命令:
使用dotnet run之后会直接运行Covenant,会给出一个web链接
0x02配置使用Covenant
我们打开给出的链接,会直接让我们注册一个用户,这个大家就随意设置了,这个注册就是管理员账户了。
接下来就为大家介绍各个模块的使用方法:
- Dashboard #主视图和你登陆时看到的第一个东西。你可以很快地看到你得到的活跃的Grunts,当前活跃的监听器,以及一些最近分配给Grunts的任务。
- Listeners #提供用于管理监听器和监听器配置文件的界面。
- Launchers #提供用于创建,托管和下载启动器的界面,以用于启动新的Grunts。
- Grunts #显示一个表格,以查看所有活动和不活动的Grunts,以及与Grunts进行交互并为其分配新任务。
- Templates #植入模板 可自定义很多payload模板
- Tasks #任务内置Mimikatz等很多模块执行多种任务,也可自行定制
- Taskings #显示一个表格,以查看分配给Grunts的所有任务。
- Graph #提供图形视图以可视化监听器,Grunts和对等图形。
- Data #提供有关在操作过程中从Grunts 收集的数据的视图,例如凭据,指示器和下载的文件。
- Users #提供用于用户管理和创建的界面。
复制代码Dashboard:仪表盘
Listeners:监听器 这里还有一个选项为Profiles这个里面为监听器的配置文件,大家可以自行修改调试 单击Create新建一个监听器
创建的监听器分为两类,一类为HTTP监听器,另一类为TCP监听,我们先从HTTP来看。
HTTP监听器配置:
- Name #将在整个接口中使用的监听器的名称。选择一些可识别的东西!
- BindAddress #BindAddress是监听器将绑定到的本地ip地址。通常,这个值是0.0.0.0。
- BindPort #监听器需要绑定的端口
- ConnectPort #ConnectPort是Grunts将直接连接到的回调端口
- ConnectAddress #ConnectAddress是Grunts将直接连接到的回调地址
- UseSSL #是否启动SSL证书
- HttpProfile #HttpProfile决定了Grunt和Listener通信的行为,大家可以自行修改
复制代码
这里我就全部默认配置,直接新建一个
如果需要停止或者删除大家点击名称即可进去控制,(右边还有个Hosted Files标签这个里面可以托管一些下载文件,这个大家就根据自己需求使用)
TCP监听器配置: 这个的配置方法和HTTP的都一样
我这里也是添加一个默认的。
Launchers:启动器 启动器用于启动Grunt,Covenant支持9种启动方式,大家在web页面上能看见名称和介绍
具体的各种启动方法,大家可以参照systemino大佬的文章: - https://blog.csdn.net/systemino/article/details/102901790
复制代码
下面我们只演示前一、二种启动方式,生成可执行文件和powershell代码
Binary启动方式: 我们单击Binary名称进入配置页面,首先先选择我们之前建立的监听器,这个大家可以自行调整。
下一个是需要选择通信模板,官方提供了三个,如果监听器选择的是走http的,那么模板也选择HTTP的,如果是TCP的那么就选GruntBridge的,模板选择不同下面选项的配置也有所不同,但是也就是多了个SSL证书的选项是否打开,一般来说看个人需求,没啥需求默认就好了。
- Listener #为监听器
- Template #为通讯模板
- Delay #为延迟
- JitterPercent #为抖动时间
- ConnectAttempts #为尝试连接时间
- KillDate #为杀死进程时间
- DotNetFrameworkVersion #为.net的版本
复制代码
这里我就选择默认的配置,监听器选择http的,模板也选http,.net版本为4.0,单击Generate即可成功生成
点击Download即可下载可执行文件
我们可以去靶机里测试一下上线,也方面后面的几个模块有数据好看一些,我们把常用的杀软开启试一下免杀效果。
已成功上线。
Powershell:启动方式 我们将各项配置好之后,点击Generate即可生成PowerShell代码(千万注意,.net版本一定要选目标主机所存在的版本)
在下方会有两条PowerShell语句,一条是未编码过的,一条是经过编码后的代码(编码采用的是Base64)
而后需要去Host标签页里填上路径和文件名并点击Host确定
会自动跳转到生成页面,现在我们的url和路径就会自动加载了
我们复制一条PowerShell语句去另一台靶机上执行一下
已经成功上线了
如果还有其他的几种启动方式不懂的话可以参考一下systemino大佬的博客: - https://blog.csdn.net/systemino/article/details/102901790
复制代码
Grunts: Grunts里会显示所有的受控主机,并可以像受控主机发送命令及分配任务。
我们点击相应的名称即可进入对应主机的控制页面。 Info:info标签页会显示受控主机的所有信息,在底部的Edit按钮可对其进行修改。
Interact:Interact标签内可与主机进行交互,例如执行系统命令:shellcmd ipconfig Covenant内置了多种命令和工具都可以在此处与主机进行交互(详情见Tasks)
使用help和查看所有命令的介绍
Task:Task标签主要用来对目标该目标下发任务 我们可以选取自己所需要的的脚本来执行
我这里选择一个扫端口的来演示一下,扫描的目标和端口都可以自定义
点击Task执行,扫描的结果会在弹出的任务页里显示
同时也会在Interact里显示详情
Taskings:Taskings标签主要用来查看该主机任务分配的情况
点击各个任务的名称会显示任务详情
Templates: 在Templates里会显示现已有的Grunt通讯模板,当然如果有需要的话也可以自己添加和修改。
Tasks: 在Tasks里会显示已有的任务,例如绕过UAC、MImikatz等,可以在Grunts里与目标主机直接进行交互发送任务。同时在各个任务名称的右侧会描述出各个任务的作用。
如果有自己需要的插件可以点击Create进行添加
Taskings: 在Taskings里会显示所有Grunt里目标主机的任务分配情况,单击名称即可查看任务详情。
Graph: 在Graph里用图形化界面展示Grunts目标主机和Listeners监听器的连接关系。
Data:
在Data里会显示,凭证、指标、下载、截图
Credentials为已经在目标主机里获取到的账号密码、Hash、票据信息
Indicators为目标指标、网络指标、文件指标
Downloads为已从目标主机上下载的文件
Screenshost为已截取的目标主机桌面图
User: 在User里可以添加和管理Covenant账户
0x03后言
目前为大家带来的是基础,后续会陆续更新利用Covenant进行实战的文章,希望大家多多支持Seraph安全加油站,多多转发!!!
|