跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

契约利用分析


HACK7YD

推荐的帖子

0x00 前言

Covenant是由开发的C2(命令和控制)框架。NET的开发环境。网芯。它不仅支持Linux、MacOS和Windows,还支持docker容器。

最特别的是它支持动态编译,可以将输入的C#代码上传到C2服务器,获取编译后的文件,并使用汇编从内存中加载。加载()。

本文仅介绍《盟约》的细节,从技术研究的角度分析其特点。

0x01 简介

本文将介绍以下内容:

圣约的启动方法

契约功能介绍

契约的优势

圣约试验

0x02 Covenant的启动方法

1.Windows系统

您需要安装相应版本的。NET核心、ASP.NET核心和SDK。

经过测试,圣约要求。NET Core 2.2.0,ASP.NET Core 2 . 2 . 0和SDK 2.2.101,其他版本会报错。

下载地址:

https://dot net . Microsoft . com/download/thank-you/dot net-SDK-2 . 2 . 101-windows-x64-installer

https://dot net . Microsoft . com/download/thank-you/dot net-runtime-2 . 2 . 0-windows-x64-installer

https://dot net . Microsoft . com/download/thank-you/dot net-runtime-2 . 2 . 0-windows-x64-ASP.NET-core-runtime-installer

为Windows安装Git

https://github . com/Git-for-windows/Git/releases/download/v 2 . 23 . 0 . windows . 1/Git-2 . 23 . 0-64位. exe

下载并开始:

git克隆递归子模块https://github.com/cobbr/Covenant

cd契约/契约

点网构建

网络运行

访问https://localhost:7443进入控制面板。第一次使用需要注册用户。

你可以在这里注册多个用户,实现团队合作。

注:

Elite是一个与圣约服务器交互的命令行程序,目前已经暂时放弃。地址是:

https://github.com/cobbr/Elite

0x03 Covenant的功能介绍

圣约支持的功能可以参考:

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

在这里,我只介绍我认为重要的部分。

1.Listeners

仅支持HTTP协议,可以指定url和通信消息的格式。

选择Listeners-Profiles,默认情况下包括两个配置模板,如下图所示。

2-1.png

模板中可以设置多个HTTPS,连接回去的时候Grunt会从HTTPS中随机选择。

注:

Grunt用于部署到目标,并作为受控端。

可以指定HttpRequest和HttpResponse的内容

与配置模板对应的源代码文件的位置:\契约\契约\数据\档案

2.Launchers

用于启动Grunt,包括以下9种启动方式:

(1)Binary

。exe文件格式的. NET程序集。

(2)PowerShell

在命令行下通过Powershell启动Grunt

保存。NET程序集,并通过程序集将其加载到内存中。负载()

代码示例:

【反思。assembly]:Load(Data). entry point . invoke(0,$a.ToArray())

(3)MSBuild

在命令行下通过msbuild启动Grunt。

启动命令示例:

C:\Windows\Microsoft。NET \ Framework \ v 4 . 0 . 30319 \ msbuild . exe gruntstager . XML

保存。NET程序集,并通过程序集将其加载到内存中。负载()

代码示例:

系统。反射.汇编.加载(oms。ToArray()).EntryPoint.Invoke(0,new object[]{ new string[]{ } });

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

(4)InstallUtil

通过命令行下的InstallUtil启动Grunt。

注:

我测试的时候,这里有个bug。生成的文件名是GruntStager.xml。NET程序集存储在其中。

根据我理解的InstallUtil的用法,这里应该会生成一个. cs文件。

检查Covenant的源代码并生成模板的源代码位置:\ Covenant \ Covenant \ models \ launcher \ installutil launcher . cs。

对应链接:

https://github . com/cobbr/Covenant/blob/master/Covenant/Models/launcher/installutillauncher . cs

该模板包括。cs文件,如下图所示

2-2.png

在这里,您可以将CodeTemplate的内容保存为. cs文件,并将其中的“”替换为base64加密的. NET程序集,最后保存为test.cs

启动命令示例:

C:\Windows\Microsoft。NET \ framework 64 \ v 4 . 0 . 30319 \ CSC . exe/unsafe/out:file . dll test . cs

C:\Windows\Microsoft。NET \ framework 64 \ v 4 . 0 . 30319 \ installutil . exe/log file=/logto console=false/U file.dll

(5)Wmic

启动命令示例:

wmic os get /format:'file.xsl '

注:

Covenant在此提示,该方法在Windows 10和Windows Server 2016下可能不可用。

保存。NET程序集,并通过DotNetToJScript方法将其加载到内存中。

代码示例:

var o=代表。DynamicInvoke(数组。ToArray())。CreateInstance('Grunt。grunt stager’);

Wmic的用法请参考之前的文章《利用wmic调用xsl文件的分析与利用》。

(6)Regsvr32

启动命令示例:

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

启动命令示例:

cscript file.js

借助DotNetToJScript,其他内容同上。

(9)Wscript

启动命令示例:

wscript file.js

借助DotNetToJScript,其他内容同上。

以下两个模板可以从上述9种启动方式中选择:

(1)GruntHTTP

使用HTTP协议与C2服务器通信

执行反弹后,连接到C2服务器

可以设置以下参数:

有效证书

使用证书

耽搁

抖动百分比

连接尝试

死亡日期

DotNetFrameworkVersion

(2)GruntSMB

使用命名管道,通信不是直接与C2服务器进行,而是在普通用户之间进行。

执行后,本地创建一个命名管道,可以通过其他Grunt远程连接。

这里还有一个配置参数:

SMBPipeName

使用示例:

GruntSMB用于内部网,可以由其他grunts激活。激活模式是:

咕哝:-任务-连接

如下图

2-3.png

3.Grunts

所有咕噜人的列表,可以向咕噜人发送控制命令。

(1)Info

包括Grunt的基本信息。

(2)Interact

命令行的控制页面

(3)Task

Grunt支持的特性,内置多个开源工具:

风疹

安全带

SharpDPAPI

夏普Dump

夏普斯洛特

夏普普

夏普米

(4)Taskings

记录每个命令的执行情况。

4.Templates

Grunt的模板文件默认包含GruntHTTP和GruntSMB。

在这里,您可以修改模板文件或添加新的模板文件。

5.Tasks

任务模板文件作为Grunt支持的功能,内置了几个开源工具:

风疹

安全带

SharpDPAPI

夏普Dump

夏普斯洛特

夏普普

夏普米

在这里,您可以修改模板文件或添加新的模板文件。

6.Taskings

记录所有Grunts命令的执行。

7.Graph

显示Grunt和Listener之间联系的图形页面。

8.Data

显示从Grunt获得的有价值的信息

9.Users

管理登录用户以实现团队合作。

0x04 Covenant的优点

1.C2 Server支持多平台

C2服务器不仅支持Linux、MacOS和Windows,还支持docker容器

2.扩展性高

可定制的通信协议、自定义启动模式、自定义功能等。

3.扩展的功能可直接在内存执行

通过动态编译,C2服务器可以动态编译代码,将其发送到目标,并使用汇编从内存中加载。负载()

4.支持内网通信,统一流量出口

内网每个受控端通过命名管道进行通信,统一流量出口,隐藏通信通道。

5.便于团队协作

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

0x05 Covenant的检测

1.检测.NET程序集的运行

微软。将引用CodeAnalysis程序集,因为需要Rosyln C# #编译器。

在这里你可以尝试收藏。来自指定进程的. NET事件。参考脚本:

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

2.检测命名管道的使用

检测命令管道远程连接的流量。

命令管道远程连接将生成事件ID 18的日志,引用地址:

https://github . com/hunters-forge/OSSEM/blob/master/data _ dictionary/windows/sysmon/event-18 . MD

3.HTTP通信流量

默认通信模板具有以下特征。

3-1.png

0x06 小结

本文介绍了圣约的细节和特点。Covenant具有很高的可扩展性,可以很容易地进行二次开发。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...