BeaconEye分析以及Bypass思考

admin 2021年12月31日00:46:12评论286 views字数 1427阅读4分45秒阅读模式

0x01 核心原理

BeaconEye的核心原理是通过扫描 CobaltStrike中的内存特征,并进行 BeaconConfig扫描解析出对应的 Beacon信息,项目地址是https://github.com/CCob/BeaconEye

0x02 Beacon

CobaltStrikeshellcode,实际都是通过反射加载的方式加载 Beacon.dll,而 Beacon.dll中存在 BeaconConfig配置信息(主要定义通信目标/通信方式等),在 CobaltStrike中对应的 Resourcesleeve/beacon.dllBeaconEye分析以及Bypass思考

0x03 Beacon Config Generate

BeaconConfig的生成在 BeaconPayload类的 exportBeaconStage函数中BeaconEye分析以及Bypass思考这上面指向的 Settings结构体就是 BeaconConfig,比如 var1,它代表实际通信的端口BeaconEye分析以及Bypass思考最终 CobaltStrike会将 Settings转化为 bytes数组,然后使用固定的密钥进行 Xor,并对剩余空白字段填入随机字符BeaconEye分析以及Bypass思考最后将生成的 beacon.dll嵌入到最终的 PE文件中BeaconEye分析以及Bypass思考

0x04 Beacon Struct

SettingsAdd系列函数,如 AddShort,并不是简单的将 Short类型直接追加到 bytes数组中,而是追加了一个结构体BeaconEye分析以及Bypass思考第一个字段是 index,第二个是 type(short/int/...),第三个是 length,第四个则是关键的 value值,因此根据这个结构即可解析在内存或在文件中的 BeaconConfig

0x05 BeaconEye

接下来让我们看一下 BeaconEyeyara规则BeaconEye分析以及Bypass思考32位的 BeaconConfig规则长这个样子,如果你认真阅读了前文一定会觉得很疑惑,因为按照 Java当中的结构,它应该分为四个部分

  1. [ ID ] [ DATA TYPE ID ] [ LENGTH OF VALUE ] [ VALUE ]

但是实际的 yara规则却没有办法对上 java中的 BeaconConfig结构,说明 Beacon.dll在装载的过程中,并没有直接将上述数据 memcpy分配到堆中,接下来让我们通过对 beacon.dll进行逆向BeaconEye分析以及Bypass思考通过 dllmain跟进,发现有一个关键函数,里面首先解密了先前 BeaconConfig的加密数据,然后遍历 BeaconConfig。首先是在拿到了 Type之后,直接往堆中分配的内存写入 WORD长度的 Type,然后根据 Type进行判断, case1对应 Shortcase2对应 Intcase3对应 Data,所以实际上最终的 BeaconConfig的结构是

  1. DWORD DWORD

  2. [ DATA TYPE] [ VALUE ]

因此最终的 yara规则可以解读如下BeaconEye分析以及Bypass思考 ??代表通配符,实际匹配的就是 beacon.dll当中真正的 config结构体,到这一步,后面的结构体还原就是顺水推舟了

0x06 Bypass

目前网上公开的 Bypass方式,是没有办法 Bypass的,原因在于网上的方式更多是修改 Xor的密钥,但是因为 BeaconEye是扫描内存,所以 Xor的密钥并不重要(始终会还原)。因此如果需要在使用 CobaltStrike但是仍然规避检测的话,只能选择重写 Beacon,并将结构体特征修改。抑或是通过其他的一些方式使 HIDS/EDR无法检测,比如使得它们无法 Scan/Dump内存等


本文始发于微信公众号(redteam101):BeaconEye分析以及Bypass思考

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月31日00:46:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   BeaconEye分析以及Bypass思考https://cn-sec.com/archives/495695.html

发表评论

匿名网友 填写信息