使用内存特征检测 Cobalt Strike

VSole2021-09-07 19:37:43

Beacon 通常是反射加载到内存中,还可以配置各种内存中混淆选项以隐藏其有效负载。

Beacon 可以配置各种内存中混淆选项以隐藏其有效负载。例如,obfuscate-and-sleep 选项会试图在回调之间屏蔽部分 Beacon 有效负载,以专门避开基于特征的内存扫描。

Obfuscate and Sleep是一个Malleable C2选项,在Cobalt Strike 3.12.引入。启用后,Beacon将在进入Sleep状态之前在内存中混淆自身。

那么我们先使用默认的关闭Obfuscate and Sleep来查看CobaltStrike进行进程注入会的具体情况。

然后我们把进程注入到微信中。

注入微信进程

正常执行命令

然后我们在目标主机中使用Process Hacker 2进行检测查看:

查找调用 SleepEx 的线程来定位内存中的 Beacon,一般在比较活跃的之中。

然后,我们可以将关联的内存区域进行分析,转到Memory查看分析这个偏移量。

我们可以对比看一下Beacon的情况:

转到Memory查看分析这个偏移量并对比一下:

可以看到我们可以看到我们的整个beacon在内存中未加密。

检测这样没有加密的beacon不难,我们在最简单的做法是,从这个区域挑选一些独特的字符串并将它们用作我们的检测的特征就行。

rule cobaltstrike_beacon_strings{meta:     author ="Elastic"description ="Identifies strings used in Cobalt Strike Beacon DLL."strings:   $a = {70 6F 77 65 72 73 68 65 6C 6C 20 2D 6E 6F 70 20 2D 65 78 65 63 20 62 79 70 61 73 73 20 2D 45 6E 63 6F 64 65 64 43 6F 6D 6D 61 6E 64 20 22 25 73}condition:       any of them }

当然上面的我只是举个例子,在实战中还得细一点。

国外也有个安全研究人员给出了个yar

rule cobaltstrike_beacon_strings{meta:  author = "Elastic"  description = "Identifies strings used in Cobalt Strike Beacon DLL."strings:    $a = "%02d/%02d/%02d %02d:%02d:%02d"    $b = "Started service %s on %s"    $c = "%s as %s\\%s: %d"condition:   2 of the }

同时Cobalt Strike给出了一种Bypass方法

# Obfuscate Beacon, in-memory, prior to sleepingset sleep_mask "true";

Set sleep_mask “true”; 设置使beacon在睡眠之前混淆内存中的代码,睡眠后对自己进行混淆处理

可以看到在混淆内存中的代码,然后我们使用前面的规则并不能检测到了beacon

其实如果你刷新几次也可以发现解密的beacon,因为在每次使用beacon,都会重新加密数据和字符串。

那么我们也可以多检测几次也可以检测到:

因为我现在使用的4.3的Cobalt Strike,使用 13 字节的 XOR 密钥,

如果是4.2以下Cobalt strike 使用的是使用简单的单字节 XOR 混淆,使用下面的yar一样可以检测:

rule cobaltstrike_beacon_xor_strings{meta:    author = "Elastic"    description = "Identifies XOR'd strings used in Cobalt Strike Beacon DLL."strings:    $a = "%02d/%02d/%02d %02d:%02d:%02d" xor(0x01-0xff)    $b = "Started service %s on %s" xor(0x01-0xff)    $c = "%s as %s\\%s: %d" xor(0x01-0xff)condition:    2 of them}
beacon
本作品采用《CC 协议》,转载必须注明作者和本文链接
如果成功连接到管道, 使用WriteFile函数将shellcode数据写入已连接的命名管道。使用IDA分析检查导出函数:第一个是反射式DLL注入,限于篇幅,在本篇中不展开分析第二个是DLL的入口函数。在后续的文章中,会根据检测特征和csprofile的绕过按照专题进行分析。同时,大部分的CS检测特征都是在此。而在后续的文章分析中,将会着重的分析CS beacon中使用到的几种DLL注入方式;beacon config的检测;同时结合CS profile 的配置,研究一下CS的对抗检测方式。
从零开始开发CS beacon
2021-12-21 16:01:20
因为我也才学golang,基本面向github编程,在网上只找到python版加解密的方式,所以需要翻译成go语言。
Beacon 通常是反射加载到内存中,还可以配置各种内存中混淆选项以隐藏其有效负载。 Beacon 可以配置各种内存中混淆选项以隐藏其有效负载。例如,obfuscate-and-sleep 选项会试图在回调之间屏蔽部分 Beacon 有效负载,以专门避开基于特征的内存扫描。
Beacon 通常是反射加载到内存中,还可以配置各种内存中混淆选项以隐藏其有效负载。Beacon 可以配置各
SMB Beacon 与命名管道在 Windows 中,无管理员权限的情况下,即无法添加白名单。定义特定版本的协议的消息数据包集称为方言。进行身份验证后,用户可以访问服务器上不受共享级别安全性保护的所有共享。
CobaltStrike ShellCode详解
2022-08-04 16:51:50
接下来就是重点了,加载起来的这段shellcode开头先将DF标志位置0,这里为什么这样做后面会提到。
微软社区网友 LiCaoZ 发文表示,自 8 月 19 日 11 时起,包括必应搜索在内的部分 Microsoft 服务受到了部分地区中国移动省份网关屏蔽,流向 Microsoft 数据中心节点的数据包会在经过省份网关时被丢弃。
wangan Cookie 指引
2022-11-23 12:05:32
实体标签可代替 Cookie,用以追踪个别使用者,并容许我们可更深入了解和改善 wangan 服务。例如,收集网站和应用程式的使用数据、收集 wangan 用户基本的统计信息并分析相关的趋势。我们对第三方的任何追踪技术概不承担任何责任;B. 我们可能会将通过追踪技术收集所得的信息与我们收集所得关于您的其他信息合并。
研究人员首次发现蓝牙信号可作为指纹用于追踪智能手机。 智能手机、智能手表、健身手环等移动设备常以每分钟500 蓝牙beacon的速率用来传输信号。这些beacon可以用于苹果的“Find My”丢失设备追踪服务、疫情追踪APP、连接智能手机到其他设备等。
Wireshark是一款数据包嗅探工具。正常情况下,AP每隔一段时间就会自动广播一个Beacon(信标)信号包,来宣布该无线网络的存在。所以,通过将无线网卡设置为监听模式,然后使用Wireshark嗅探监听接口的数据包,即可发现附近开放的无线网络。本文介绍使用Wireshark扫描无线网络的方法。
VSole
网络安全专家