关于CobaltStrike的若干检测特征分析

VSole2021-08-04 16:02:02

CobaltStrike被广泛利用于渗透攻击中,可以与其他攻击工具(如Mimikatz、Metasploit和PowerShell Empire)联合使用,支持在网络中横向移动。

一、关于C2的阐述

CobaltStrike是实现C2的具体平台框架。C2全称为Command and Control,即命令与控制。这里分别从KILL CHAIN和MITRE ATT&CK对C2进行简单介绍。

在KILL CHAIN中,一次完整的渗透攻击过程被规范为以下七个阶段:

如上图所示,C2位于攻击流程的末端,是攻击者通过一系列手段成功进入受害者系统后,为实现受害机器(被植入恶意软件)与攻击者控制端通过网络进行交互的一个阶段,关键是拉取二段 exploit 进行驻留。

而MITRE ATT&CK从实现方式上对C2这一阶段进行了详细地介绍,它包括19种常用技术手段,主要为编码混淆、应用层协议利用、网络层协议利用、隧道技术、代理、单双向通信等。这些技术手段均可承载于某一攻击框架。这里C2的释义更接近于某种“基础设施”。

由此,C2架构也就可以理解为,恶意软件通过什么样的方式获取资源和命令,以及通过什么样的方式将数据回传给攻击者,以达到潜藏监控、命令控制的目的。

二、C2 Matrix介绍

一个合适的C2工具,往往可以更好地推进“行动”进展。C2 Matrix包含了用于测试各种C2 的实验室环境、有关每个C2的详细信息(包括如何安装和使用它们等)以及如何为红队交战和紫队演习建设攻击基础设施。

C2 Matrix收录颇丰,但所收录的工具版本普遍落后于当下。目前,业内应用最多者,当属KALI集成的Metasploit以及CobaltStrike。本文的实验研究主要围绕CobaltStrike进行。

三、CobaltStrike介绍

CobaltSrtike早期版本依赖Metasploit框架,而现在的CobaltStrike已经不再使用MSF,而是作为单独的平台使用。它分为客户端(Client)与服务端(Teamserver),服务端只有一个,客户端可以有多个,团队可进行分布式团队协作。

CobaltSrtike拥有多种协议主机上线方式,集成了提权、凭据导出、端口转发、Socket代理、Office攻击、文件捆绑、钓鱼等功能。同时,CobaltStrike还可以调用Mimikatz等其他常用工具,因此广受黑客青睐。

CobaltSrtik

四、特征讨论(网络维度与端点维度)

环境准备:

本次实验主要利用了CobaltSrtike Attacks中的MS Office Macro和Windows Executable两种攻击方式。

环境介绍:

· CobaltStrike Sever:kali

· CobaltStrike客户端:kali、MAC

靶机:win10

主要工具:

cobaltstrike4.2、office2016、wireshark、processhacker、火绒剑

1、CobaltStrike HTTP隧道通信与流量分析

CobaltSrtike4.0之前的版本支持http传输,木马基于TCP协议会产生明显的通讯特征,如独有的端口、协议数据格式等。

beacon与C2的通信逻辑

a)stager的beacon会先下载完整的payload并执行,stage则省略这一步。

b) beacon进入睡眠状态。结束睡眠状态后,它会用http-get方式发送一个metadata(具体发送细节可以在malleable_profile文件里的http-get模块进行自定义),metadata的内容包括目标系统的版本、当前用户等信息。

c)如果存在待执行的任务,C2会响应这个metadata并发布命令,beacon将会收到具体任务内容与一个任务id。

d)执行完毕后,beacon会将回显数据与任务id用post方式发送回C2(细节可以在malleable_profile文件中的http-post部分进行自定义),然后又会回到睡眠状态。

PCAP包:

PCAP分析:

· GET /cx 请求轮询指令

· HTTP 200 OK响应附带指令

· POST 提交指令响应数据

检测CobaltStrike网络指标

CobaltStrike默认配置文件通过伪造HTTPS流量规避安全监测,所以需要使用TLS检查,然后隔离bot通信流,完成后再通过检查HTTPS请求中的数据来识别可疑的通信流。

控制端发起desktop监控,该操作指令携带在TCP握手响应包里,靶机POST携带输出结果。

针对get、post轮询请求建立模型,检查与目标的通信频率,人工产生的流量不断变化,机器人产生的流量趋于一致且均匀。此外,在默认设置中,Sleeptime=60000ms,可根据这一设定尝试建立模型,检测出来自未修改默认设置的可疑CobaltSrtike攻击。

2、进程分析

释放进程rundll32.exe

Word关闭后进程依然在运行,控制端发起desktop监控,rundll32.exe又发起一个rundll32.exe。

火绒剑显示其远程地址是127.0.0.1,判断应该是做了混淆处理,此处可作为特征。

3、来自默认设置的一些信息证书

SSL/TLS证书

证书是teamserver主控端使用的加密证书,网上一些文章提到CobaltStrike默认的SSL/TLS证书是固定的,所以一般都使用这个证书作为特征值来发现CobaltStrike服务器。

CobaltSrtike证书查看

默认的证书具有很明显的特征。Eg:

O=cobaltstrike,;OU=AdvancedPenTesting;

CN=Major Cobalt Strike

https上线使用的证书

https上线使用的证书,并不是前文中修改的那一个!


Self-signed Certificates with SSL Beacon和Valid SSL Certificates with SSL Beacon是用来修改https上线使用的证书的。

默认证书特征

Fofa搜索:

cert="73:6B:5E:DB:CF:C9:19:1D:5B:D0:1F:8C:E3:AB:56:38:18:9F:02:4F"&&after="2020-01-01"

Censys.io搜索:

443.https.tls.certificate.parsed.fingerprint_sha256:87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c

结合搜索引擎,情报社区来判断。

全局选项

官方文档显示:“可将Malleable C2配置文件配置为具有许多全局选项,以调整流量和Beacon的行为。完整列表可在官方文档中找到。至少应设置sleeptime、jitter和useragent选项。”这一提示非常重要。

Eg:

3.1 sleeptime用于配置频率,以毫秒为单位;jitter用于按指定的百分比更改检查间隔,它接受0到99的值。

3.2 useragent配置将用于HTTP通信的useragent字符串。如果可以收集目标组织中主机正在使用的实际用户代理(向目标机构成员发送一封带有Web漏洞的电子邮件并监视后续GET请求中发送的user-agent值),使用该代理为好。先进的组织经常监视其环境中是否存在不规则的用户代理字符串,大多数公司仅使用了少数合法字符串。

Eg:set useragent "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08";

查看bot通信流的来源,检查生成TLS通信流的用户代理。乍一看用户代理貌似是合法的,“Mozilla/5.0 (Windows NT 6.1)”,这是Internet Explorer (IE)的值。然而,用户代理完全可以被伪造,一些机器学习算法可以推导出数据包流的真正用户代理。由此,我们得出一种检测恶意流量的方法。

如果使用的是明文HTTP流量或者是目标环境中存在SSL拦截,那么与环境不匹配的User-Agent值就会被发现。

3.3 dns_idle选项用于发送信号给DNS的信标没有任务在排队等候。我们可以设置任何IP,但是主机广泛使用Google DNS服务器作为DNS主机,因此我们将使用它(8.8.4.4)。同样,这是自定义目标DNS服务器的理想选择。

3.4 DNS隐蔽信道:使用Wireshark观察到,主机访问了nexus.office.live.com这种不规则域名,即可粗略猜测这是一个C&C服务器。

特征:

这里我们可以通过根据AV引擎或其他IOC给出的情报做二次判断。

4. 检测加密流量

JA3方法用于收集Client Hello数据包中以下字段的十进制字节值。

原理:这里相当于把支持的TLS扩展信息,都收集起来当作一个特征值来用(除了客户端发起的,还有关于服务器的JA3S)。

“这其实算一种降维打击,并且我们发现主流在线沙箱、主流IDS大都支持了JA3/JA3S指纹检测。”

其他

从一位使用者的角度来看,50050端口是否开启,也可成为确定CobaltSrtike server的一个佐证。CobaltSrtike能得到大量黑白帽子的使用,必然是隐蔽性极高,高度的定制化是其重要原因,我们很难通过某一特征判定是否为恶意流量,但众多模糊特征的聚合一定可以让我们看到不一样的东西。

五、检测规则以及分析思路

利用日志易SIEM安全大数据分析平台,根据相关特征制定C2检测规则。

1、进程特征利用——父子进程关联

分析平台根据四种进程分析部分,可以将分析结果归纳为五种可疑进程。实际使用时,分析平台会对进程进行检索,并将出现可疑进程的检索结果的机器ip写入观察列表。

2、U-A头利用

检索可疑useragent字符串,这些U-A头可以来自情报或机器学习算法推导,将这些可疑结果IP写入观察列表或作为搜索条件。

3、IOC利用

不同情报源的CobaltSrtike server IP将被写入观察列表。

4、特征联合利用

将步骤1和步骤2作为检索主体,联合步骤3进行检测,进一步提高检测精度。

5、联合设备告警

告警设备之间联合,设备与情报、本地规则联合,提高了告警精度,聚焦了入侵阶段与机器安全状态。

告警可在威胁处置展示,也可进行定制化推送。

c2
本作品采用《CC 协议》,转载必须注明作者和本文链接
安全研究人员发现了一种名为"黑暗公用事业"的新服务,它为网络犯罪分子提供了一种简单而廉价的方式,为其恶意行动建立一个指挥和控制(C2)中心。Dark Utilities服务为威胁者提供了一个支持Windows、Linux和基于Python的恶意程序载荷的平台。
C2 框架Tools
2022-08-03 06:32:51
PoshC2 主要是用 Python3 编写的,遵循模块化格式,使用户能够添加自己的模块和工具,从而实现可扩展且灵活的 C2 框架。PoshC2 的其他显着特点包括:使用 Docker 提供一致的跨平台支持。
在此活动检查流量之后,我们能通过流量检测工具识别会话期间所有已执行的命令。现在让我们在初始阶段启动后检查流量。在 TCP 握手之后,我们观察到成功的通信正在进行。检查的流量显示它在 SSL 握手后立即开始。然而,在这种情况下,我们会留下精心制作或默认证书的痕迹,这些证书也可以进行调查,这可能会导致基础设施或受到 IDS/IPS 签名的攻击。在此示例中,我们将使用Meterpreter 反向 tcp有效负载来测试我们的规避能力。
分享一款C2远控工具
2022-11-30 06:41:14
一、工具介绍一款基于WEB界面的仿CobaltStrike C2远控。
自今年早些时候推出以来,一个让网络犯罪分子更容易建立命令和控制 (C2) 服务器的平台已经吸引了 3,000 名用户,并且可能会在未来几个月内扩大其客户名单。
RedGuard,是一款C2设施前置流量控制技术的衍生作品,有着更加轻量的设计、高效的流量交互、以及使用go语言开发具有的可靠兼容性。它所解决的核心问题也是在面对日益复杂的红蓝攻防演练行动中,给予攻击队更加优秀的C2基础设施隐匿方案,赋予C2设施的交互流量以流量控制功能,拦截那些“恶意”的分析流量,更好的完成整个攻击任务。
“不要因为没有掌声而丢弃自己的梦想”C2介绍命令与控制是指在单个或一组目标受害者主机上建立和维持对植入工具的控制的过程。C2框架通常提供借助某个通信协议与植入工具进行通信的能力,向受害者系统发出命令,并且在C2服务器上接收这些命令的输出,使攻击者实现物理访问或直接的虚拟访问。命令与控制协议依赖于每个受控植入工具和C2服务器之间的同步或异步通信信道。
神兵利器 - C2 框架
2022-04-10 07:33:31
PoshC2 主要是用 Python3 编写的,遵循模块化格式,使用户能够添加自己的模块和工具,从而实现可扩展且灵活的 C2 框架。开箱即用的 PoshC2 带有 PowerShell/C# 和 Python2/Python3 植入物,除了 Python2/Python3 有效负载外,还有用 PowerShell v2 和 v4、C++ 和 C# 源代码、各种可执行文件、DLL 和原始 shell
TG 下的C2创建过程
2021-11-12 15:10:05
0x00:简介没啥新技术,基本就是老技术。我这里只是做笔记,仅供学习。我自己的没结果)服务器上运行到TG上去对你的机器人说话Python脚本看到你的消息
01大致思路是这样,首先,我们会用一个 CS 的外部 http 监听器先把流量弹到第一层的 nginx 反代理节点上,因为事先已经在 mail 这台机器上做好了反代配置,而这个反代配置里实际指向的是我们第二层 nginx 反代节点的域名,所以当回连的流量一过来就会直接被抛到第二层的 nginx 反代节点上,由于又事先在第二层反代节点上也做好了反代配置,不过这次配置里指向的并不是别的地方,而是我们真
VSole
网络安全专家