Covenant应用剖析 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Covenant应用剖析

申博_安全预警 申博 43次浏览 未收录 0个评论

Sunbet官网

欢迎光临Sunbet官网,Sunbet官网客户端下载。Sunbet官网一直坚持公平、公正、公开三大原则的服务理念,24小时为您提供会员开户、代理加盟等相关业务办理.

,

0x00 媒介

Covenant是一个.NET开辟的C2(command and control)框架,运用.NET Core的开辟环境,不仅支撑Linux,MacOS和Windows,还支撑docker容器。

最迥殊的处所是支撑动态编译,能够将输入的C#代码上传至C2 Server,取得编译后的文件并运用Assembly.Load()从内存举行加载。

本文仅在技术研究的角度,引见Covenant的细节,剖析特性。

0x01 简介

本文将要引见以下内容:

· Covenant的启动要领

· Covenant的功用引见

· Covenant的长处

· Covenant的检测

0x02 Covenant的启动要领

1.Windows体系

须要装对应版本的.NET Core、ASP.NET Core和SDK。

经测试,Covenant须要.NET Core 2.2.0、ASP.NET Core 2.2.0和SDK 2.2.101,其他版本会报错。

下载地点:

https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.101-windows-x64-installer

https://dotnet.microsoft.com/download/thank-you/dotnet-runtime-2.2.0-windows-x64-installer

https://dotnet.microsoft.com/download/thank-you/dotnet-runtime-2.2.0-windows-x64-asp.net-core-runtime-installer

装置Git for Windows

https://github.com/git-for-windows/git/releases/download/v2.23.0.windows.1/Git-2.23.0-64-bit.exe

下载并启动:

git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
dotnet build
dotnet run

接见https://localhost:7443进入掌握面板,第一次运用时须要注册用户。

这里能够注册多个用户,完成团队合作。

注:

Elite是与Covenant服务器举行交互的敕令行顺序,现在已暂时弃用,地点:

https://github.com/cobbr/Elite

0x03 Covenant的功用引见

Covenant支撑的功用可参考:

https://github.com/cobbr/Covenant/wiki

这里只引见个人认为比较主要的部份。

1.Listeners

只支撑HTTP协定,能够指定url和通讯音讯的花样。

挑选Listeners->Profiles,默许包含两个设置模板,如下图:

Covenant应用剖析

设置模板中能够设置多个HttpUrls,Grunt在回连的时刻会从HttpUrls中随机挑选。

注:

Grunt用作布置到目的,作为被掌握端

HttpRequest和HttpResponse的内容都能够指定。

设置模板对应源码文件的位置: .\Covenant\Covenant\Data\Profiles

2.Launchers

用于启动Grunt,包含以下9种启动体式格局:

(1)Binary

.NET顺序集,花样为exe文件

(2)PowerShell

敕令行下经由过程Powershell启动Grunt

将.NET顺序集保留在数组,经由过程Assembly.Load()在内存举行加载

代码示例:

[Reflection.Assembly]::Load(Data).EntryPoint.Invoke(0,$a.ToArray())

(3)MSBuild

敕令行下经由过程msbuild启动Grunt。

启动敕令示例:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe GruntStager.xml

将.NET顺序集保留在数组,经由过程Assembly.Load()在内存举行加载。

代码示例:

System.Reflection.Assembly.Load(oms.ToArray()).EntryPoint.Invoke(0, new object[] { new string[]{ } });

关于msbuild的用法可参考之前的文章《Use MSBuild To Do More》。

(4)InstallUtil

敕令行下经由过程InstallUtil启动Grunt。

注:

我在测试的时刻这里发生了bug,生成的文件名称为GruntStager.xml,内里保留了base64加密的.NET顺序集。

根据我明白的InstallUtil的用法,这里应当生成一个.cs文件。

检察Covenant的源码,生成模板的源码位置:.\Covenant\Covenant\Models\Launchers\InstallUtilLauncher.cs

对应的链接:

https://github.com/cobbr/Covenant/blob/master/Covenant/Models/Launchers/InstallUtilLauncher.cs

模板中包含.cs文件的内容,如下图:

Covenant应用剖析

这里能够将CodeTemplate的内容另存为.cs文件,并把个中的”{{GRUNT_IL_BYTE_STRING}}”替换成base64加密的.NET顺序集,终究保留成test.cs。

启动敕令示例:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out::file.dll test.cs
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U file.dll

(5)Wmic

启动敕令示例:

wmic os get /format:"file.xsl"

注:

Covenant在此处提醒这个要领或许没法在Windows 10和Windows Server 2016下运用。

将.NET顺序集保留在数组,经由过程DotNetToJScript的要领在内存举行加载。

代码示例:

var o = delegate.DynamicInvoke(array.ToArray()).CreateInstance('Grunt.GruntStager');

关于Wmic的用法可参考之前的文章《应用wmic挪用xsl文件的剖析与应用》。

(6)Regsvr32

启动敕令示例:

regsvr32 /u /s /i:file.sct scrobj.dll

注:

Covenant在此处提醒这个要领或许没法在Windows 10和Windows Server 2016下运用。

将.NET顺序集保留在数组,经由过程DotNetToJScript的要领在内存举行加载。

关于Regsvr32的用法可参考之前的文章《Use SCT to Bypass Application Whitelisting Protection》。

(7)Mshta

启动敕令示例:

mshta file.hta

注:

Covenant在此处提醒这个要领或许没法在Windows 10和Windows Server 2016下运用。

将.NET顺序集保留在数组,经由过程DotNetToJScript的要领在内存举行加载。

关于Mshta的用法可参考之前的文章《渗入技能——从github下载文件的多种要领》。

(8)Cscript

2019金帽子年度盛典 | 网络世界坚强之盾——SRC

圈内人知道,安全领域中有这么几个角色: · 脚本小子:以黑客自居的初学者,技术不过硬,只懂得皮毛,通常利用现有的恶意程序去攻击他人。 · 黑帽子:在网络世界中掌握攻击性的技术,并以此获取非法利益。 · 灰帽子:精通攻击与防御技术,不轻易造成破坏,具备信息安全体系的宏观意识。 · 白帽子:网络世界中正义的使者,善于挖掘计算机或网络系统中的安全漏洞,但不会利用其漏

启动敕令示例:

cscript file.js

这里借助了DotNetToJScript,其他内容同上。

(9)Wscript

启动敕令示例:

wscript file.js

这里借助了DotNetToJScript,其他内容同上。

以上9种启动体式格局都可挑选以下两个模板:

(1)GruntHTTP

运用HTTP协定同C2 server举行通讯。

实行后反弹衔接至C2 server。

可设置以下参数:

· ValidateCert

· UseCertPinning

· Delay

· JitterPercent

· ConnectAttempts

· KillDate

· DotNetFrameworkVersion

(2)GruntSMB

运用定名管道,不直接同C2 server举行通讯,而是在各个Grunts之间举行通讯。

实行后在本机建立定名管道,可经由过程其他的Grunt举行长途衔接。

这里多了一个设置参数:

SMBPipeName

运用示例:

GruntSMB为内网运用,可经由过程其他的Grunt举行激活,激活体式格局:

Grunt:<id>->Task->Connect

如下图:

Covenant应用剖析

3.Grunts

一切Grunts的列表,可向Grunt发送掌握敕令。

(1)Info

包含Grunt的基本信息。

(2)Interact

敕令行的掌握页面。

(3)Task

Grunt支撑的功用,内置了多个开源东西:

· Rubeus

· Seatbelt

· SharpDPAPI

· SharpDump

· SharpSploit

· SharpUp

· SharpWMI

(4)Taskings

纪录每条敕令的实行情况。

4.Templates

Grunt的模板文件,默许包含了GruntHTTP和GruntSMB。

这里能够修正模板文件或许增加新的模板文件。

5.Tasks

Task的模板文件,作为Grunt支撑的功用,内置了多个开源东西:

· Rubeus

· Seatbelt

· SharpDPAPI

· SharpDump

· SharpSploit

· SharpUp

· SharpWMI

这里能够修正模板文件或许增加新的模板文件。

6.Taskings

纪录一切Grunts的敕令实行情况。

7.Graph

图形化页面,展现Grunt和Listener的衔接关联。

8.Data

展现从Grunt取得的有价值信息。

9.Users

治理登录用户,用作团队合作。

0x04 Covenant的长处

1.C2 Server支撑多平台

C2 Server不仅支撑Linux,MacOS和Windows,还支撑docker容器。

2.扩大性高

可自定义通讯协定,自定义启动体式格局,自定义功用等。

3.扩大的功用可直接在内存实行

经由过程动态编译,C2 Server能够对代码举行动态编译后发送至目的并运用Assembly.Load()从内存举行加载。

4.支撑内网通讯,一致流量出口

在内网各个被掌握端之间经由过程定名管道举行通讯,一致流量出口,隐蔽通讯通道。

5.便于团队合作

支撑多用户,能够共享资源。

0x05 Covenant的检测

1.检测.NET顺序集的运转

由于须要运用Rosyln C#编译器,所以会援用Microsoft.CodeAnalysis顺序集。

这里能够尝试从指定历程中网络.NET事宜,参考剧本:

https://gist.github.com/cobbr/1bab9e175ebbc6ff93cc5875c69ecc50

2.检测定名管道的运用

检测敕令管道长途衔接的流量。

敕令管道长途衔接会发生Event ID 18的日记,参考地点:

https://github.com/hunters-forge/OSSEM/blob/master/data_dictionaries/windows/sysmon/event-18.md

3.HTTP通讯流量

默许的通讯模板存在特性,如下图:

Covenant应用剖析

0x06 小结

本文引见了Covenant的细节,剖析特性,Covenant的可扩大性很高,能够很轻易的做二次开辟。

原文地点: https://www.4hou.com/technology/21328.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Covenant应用剖析
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址