安卓手机真实内存检测工具(分享一个快速检测手机内存类型的软件)
安卓手机真实内存检测工具(分享一个快速检测手机内存类型的软件),新营销网红网本栏目通过数据整理汇集了安卓手机真实内存检测工具(分享一个快速检测手机内存类型的软件)相关信息,下面一起看看。
背景BeaconEye项目发布于2021年8月,是一款基于CobaltStrike记忆特性的威胁猎杀工具。BeaconEye出色的检测率和检测效率,让现有的大部分规避技术失效,在网络安全圈掀起了新一轮关于CS内存攻防的讨论。
为什么BeaconEye一针见血BeaconEye可以扫描正在运行的程序或者Minidump中的程序,识别Beacon注入的进程,以上帝的视角窥视其内部行为。
选择信标配置。
获取执行命令的返回结果。
使用sleep_mask函数检测信标。
BeaconEye利用解密的配置特征值进行匹配,简单的几行规则秒杀无数隐藏手段。达到这种令人瞠目结舌的效果,非一日之功。在攻击技术和检测技术高度结合的今天,有两点非常突出
1.信标配置被用作特征匹配对象。
2.把堆作为内存扫描的对象。
阿喀琉斯之踵——信标配置信标配置存储信标运行时的配置信息,包括C2配置、通信参数、内存隐藏模式等重要信息。这些配置数据以典型的TLV格式组织,偏移量和内容相对固定,可以很容易地根据特征提取和分析这些敏感信息。
使用分析工具从信标二进制文件中提取配置信息
Becon执行进程的两个解密进程。
Beacon的默认加密存储在加载程序中,并在执行期间释放到堆内存空间中。无论加密方式如何,解密后的配置都会一直存在,即使开启了sleepmask功能,也只会保护代码段。无论采用什么加密或解密方式,Beacon Config最终都会在堆内存中,这是Beacon Config的死门,也是BeaconEye扫描堆的原因。
雅拉规则成为BeaconEye的一部分
近日,Tom Bonner的研究在Twitter上披露,Beacon Config不仅包含域名/IP等关于Teamserver的信息,还包含每个攻击者的唯一身份水印信息。
嵌入水印信息的CobaltStrike服务器部分源代码
当Teamserver解析嵌入在二进制中的c2profile时,它会从c2profile中读取名为self的值,这个值记录了Teamserver文件的hash。对于大多数使用重新编译来破解和修改CobaltStrike的攻击者来说,这种泄露的文件哈希可能会暴露样本属性信息。研究人员已经有效地分析和聚类了一些野生样本中Beacon配置中包含的Teamserver哈希,并更准确地跟踪和分类了野生攻击的利用。
研究人员使用Beacon Config的水印信息进行属性聚类。
招数,致盲BeaconEye从BeaconEye的原理出发,只有三种方法可以避免扫描
1.避免BeaconEye的内存扫描,使其无法扫描自身。
2.寻找内置yara规则的漏洞,绕过匹配
3.完全修改信标配置的数据结构。
第三个方案无疑是最治标不治本的方案,但也是成本最高的方案。后面两个BeaconEye绕过的是前两个思路,可以用最小的代价绕过BeaconEye。
通过使用数据类型差异“修改1个字节”绕过yara规则
TeamServer和Becon DLL的数据类型长度不一致,导致数据缺口的存在,可以填充为任意数据来绕过yara规则。这样就可以实现所谓的“修改1字节绕过BeaconEye”。
以32位信标为例
在TeamServer的Java代码中,使用长度为4字节的Int类型来表示类型,而Beacon DLL中实际使用的只有前两个字节。所以下图红框区域的数据可以任意填充绕过信标眼而不影响信标功能。
利用堆遍历算法缺陷避免内存扫描
BeaconEye检测到的信标配置数据存在于堆中,BeaconEye的有效性取决于对堆的扫描。老版本的BeaconEye存在堆块扫描不完全的问题,其根源是使用NtQueryVirtualMemory函数对堆进行枚举。这个函数得到的堆大小有一个天然的缺陷只会计算属性一致的内存页,而实际上堆段中的内存属性是不同的,不一致的。,BeaconEye在获取堆信息时实际上只获取第一个堆段的内容。但这种问题不一定触发,而是有特定的触发条件。
通过调用SymInitialize函数或者反复调用HeapAlloc等。可以手动使信标配置存在于BeaconEye无法扫描的堆段中。但发现者公开了绕过方法后,向BeaconEye官方提交了正确的堆遍历,官方收到提交后应该生效。
晨曦-信标检测技术和对策的发展过程简单而有效——可疑记忆属性和静态特征
寻找可疑内存属性的威胁是一种常见的想法。默认情况下,Beacon将在具有RWX(可读、可写和可执行)权限的内存空间中执行。这种敏感的内存属性会让Beacon的内存空间更容易被发现。
C2没有被使用
Profile下RWX的内存区域中存储的即是完整的明文Beacon。
RWX内存区域的明文Beacon
在明文Beacon中DLL头及命名管道名称字符串等静态特征明显,部分厂商利用这些静态特征进行内存中Beacon的识别扫描。
官方救火员-C2 profile改变静态特征
但通过Malleable C2 profile这一官方提供的定制化配置文件,攻击者可对Beacon的内存属性静态特征等做进一步的定制和隐匿
· 自定义内存属性 rwx/rx
· 自定义或删除文件头
· 自定义命名管道名称、替换字符串
通过其强大而灵活的特性,C2 profile帮助Beacon成功规避大部分针对内存属性与静态特征的检测,大大增强了Beacon的隐匿能力,增加了检测的成本。
固定密钥异或?直接解密提取Beacon配置
由于某些原因,CobaltStrike在导出Beacon时仅会对其中包含的Beacon配置信息用简单的异或加密进行保护。更致命的是加密密钥是固定的,对3.x版本的CobaltStrike默认是0x69,对4.x版本的CobalStrike默认是0x2e,用户并不能通过C2 Profile等方式对加密方式或密钥进行修改。
用于匹配的固定开始特征
结构相对固定的明文配置的特征在经过异或后的值依然具有明确的特征,可通过简单的特征匹配捕获。
自己动手-魔改Beacon Config密钥
Beacon Config的默认密钥可以通过手动patch的方式进行修改,虽然较为繁琐,但只要对服务端与beacon二进制模板中的异或密钥进行修改,便可以逃过利用默认异或密钥来进行特征扫描的工具。
Beacon Config默认以固定密钥加密的孱弱的加密方式给检测工具提取Beacon配置提供了可乘之机,攻击者仍可通过魔改二进制的手段修改该密钥。但只要加密方式不变,通过爆破异或等方式依然不难提取加密后的配置。
小结
BeaconEye的检测思路切中CobaltStrike要害,除非彻底变更数据结构,不存在一劳永逸的绕过 。未来类似BeaconEye将C2框架内的固定数据结构作为检测对象的工具将会更多出现,各种隐匿技术也会相伴而生,将这场拉锯战继续下去。
CS内存检测与对抗技术的发展,显示了攻防双方在博弈中共同成长的路径。由内存特征到Beacon配置,随着理解的加深,攻防阵地越来越接近底层;由C2profile官方定制到动手魔改,社区研究在实战驱使下补全官方未提供的对抗能力。
相关文章
什么时候万圣节(万圣节是什么时候?)
剪切的快捷键是什么(电脑常用的快捷键汇总)
嫦娥奔月文言文(《嫦娥奔月》原文与译文)
小投资加盟(一万元就能做的投资小项目)
弥留之际的意思(弥留之际(解析))
鲅鱼水饺的做法(这样调制的鲅鱼馅,鲜香不腥!)
蚂蚱几条腿(四条腿的蚂蚱)
环保项目有哪些(30万元适合投资的五个绿色环保项目)
麦芽糖是什么(烘焙原料小贴士——“麦芽糖”)
一汤匙(一汤匙、一茶匙是多少吗?)
清蒸鲽鱼的做法(清蒸鲽鱼的家常做法)
宋太祖怕史官(宋太祖居然会怕一个小小史官?)
更多安卓手机真实内存检测工具(分享一个快速检测手机内存类型的软件)相关信息请关注本文章,本文仅仅做为展示!