HACK7YD 发布于2022年11月8日 分享 发布于2022年11月8日 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,默认情况下包括两个配置模板,如下图所示。 模板中可以设置多个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文件,如下图所示 在这里,您可以将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激活。激活模式是: 咕哝:-任务-连接 如下图 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通信流量 默认通信模板具有以下特征。 0x06 小结 本文介绍了圣约的细节和特点。Covenant具有很高的可扩展性,可以很容易地进行二次开发。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子