ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CobaltStrike逆向学习系列(5):Bypass BeaconEye

2022-01-10 22:34:16  阅读:232  来源: 互联网

标签:字节 Beacon Bypass CobaltStrike BeaconEye 解析 取值 C2Profile


这是[信安成长计划]的第 5 篇文章
关注微信公众号[信安成长计划]
在这里插入图片描述

0x00 目录

0x01 BeaconEye 检测原理

0x02 Bypass 1

0x03 Bypass 2

0x04 效果图

在之前的三篇文章《Stageless Beacon 生成流程分析》《Beacon C2Profile 解析》《Beacon 上线协议分析》中,已经穿插着将 C2Profile 的全部内容介绍完了,也把 Bypass 所需要的一些内容也都穿插着提到过了,接下来就该说如何对其进行 Bypass

0x01 BeaconEye 检测原理

BeaconEye 是通过 yara 规则来对 Beacon 进行检测的,规则所匹配的就是 C2Profile,在 Beacon 解析完以后,每一项都是占 16 个字节,前 8 个字节是 type,后 8 个字节是 data

图片

为了明确对比一下,先看一下 Java 端的操作,关键需要对比的就是这五条

图片

yara 规则的第一条全为零,是因为 Beacon 在解析的时候直接偏移了 index 个位置

图片

接下来也就都对得上了,类型依次是 short、short、int、int、short,对应过去就是 1、1、2、2、1,后面的值也就都是一样对应了

图片

所以只要能够打破这个规则结构也就可以完成 Bypass 的工作了

0x02 Bypass 1

如果单纯做打破结构的话,将中间的值进行替换就可以了,整个十六个字节,实际需要使用的也就是第一位和后面的数据,中间的一片零都是没有意义的,所以在申请这片内存的时候,直接将其设置成其他值就可以了

图片

直接去改字节兴许还有点困难,再或者就是使用寄存器的赋值操作,将其他寄存器的值,替换到 edx 当中

图片

再者就是 inline Hook,这样所有的问题也都很容易解决了

0x03 Bypass 2

这个方案会比较复杂,但是做完这个以后,之后要做其他的操作就会比较方便了,不管是进行特征修改,还是后续继续做 Beacon 的二次开发也都是非常方便的。

这个方案就是 HOOK,而且需要对两边都需要进行修改才可以,工作量也是比较大的。

整个 C2Profile 的流程是这样的,先在 Controller 按照指定格式组成数组,将其 Patch 到 beacon.dll 当中,再将 beacon.dll Patch 到 Loader 当中,Beacon 在执行的时候再将其解析成后续需要使用的格式。

为了能更方便处理 beacon.dll,最好的方式是重写 Loader,这样对于修改特征等也都会很方便。

接下来需要讨论的就是如何修改,关键函数就是解析 C2Profile 和取值两块,总共四个函数

对于解析是很容易处理的,之前提到过了,当 fdwReason 传入 1 的时候,所执行的是解析 C2Profile 的操作,直接将这个函数 HOOK 掉就好了

图片

对于取值的话,也都是单个独立的函数,所以整体操作的逻辑都是一致的

图片

对于 HOOK 的库自行选择一个自己感觉舒服的就好,重要的还是地址的偏移,下面是 X64 的偏移量

ULONG_PTR ulParseProfile = ImageBase + 0x18694;
ULONG_PTR ulGetShortValue = ImageBase + 0x18664;
ULONG_PTR ulGetIntValue = ImageBase + 0x185DC;
ULONG_PTR ulGetPtrValue = ImageBase + 0x18630;

后续的代码重写也就非常简单了,申请内存赋值、取 Short、取 Int、取Ptr,这些都按照个人的设计思路来写就可以了

可以很简单的把数据进行罗列,这样在取值的时候会比较麻烦,毕竟不好定位,当然也可以用定长的方式来做

图片

也可以做的很复杂,在中间插入大量的垃圾字符,用一种只有自己才明白的格式来写

图片

有一点需要注意,在 X86 上写三个取值函数的时候,并不能直接去取值,beacon.dll 并不是堆栈传参的,而是通过 edx 来传参的,因为 X86 是支持内嵌汇编的,所以在修改上也是很容易的

__asm mov index, edx

0x04 效果图

图片

标签:字节,Beacon,Bypass,CobaltStrike,BeaconEye,解析,取值,C2Profile
来源: https://blog.csdn.net/SecSource_Stars/article/details/122420869

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有