2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

admin 2025年1月1日23:05:43评论42 views字数 2946阅读9分49秒阅读模式

年末了,粉丝以117票决定了这篇主题!
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
这是2024年最后一篇文章。又过了一年,祝大家身体健康,万事如意。今年这篇文章只是抛砖引玉,明年将会非常详细的开几篇系列介绍文章中描述的技术(如机器学习,模式匹配,lifer,llil),因为一篇文章实在是放不下。敬请关注冲鸭安全 & key08

前言

现如今的安全软件,无论是所谓的EDR还是所谓的NGAV,对病毒样本的判断还是非常有限,有限到可能你不相信-云端hash索引(包括所谓的局部敏感hash)与人工录入特征。
而所谓的机器学习,NGAV,在实战中往往表现的非常不尽人意。举个例子,用golang,rust等等 编译的程序会让局部敏感hash无效。用白夹黑

通杀检测基于白文件patch黑代码的免杀技术的后门
则完全的让浅层机器学习(native-ml,大部分厂商所谓的NGAV)变得清澈愚蠢

2020年这种木马首次被key08公开的时候我就写了一句,杀毒软件的所谓的机器学习/深度学习模型,完全失去作用了,杀毒软件从18年开始疯狂流行的NGAV概念也已经到头了,原因很简单,这种东西,AI完全无法识别,除了数据特征问题,还有非常多的问题,这需要了解杀毒软件工作原理。

而其他的辅助分析技术,如沙箱,高敏感机器学习等等,也有着各自的问题,如,沙箱被各种反沙箱针对,高敏感机器学习被各种误报,各种加白,成为过拟合以至于加个假的签名就不报警了。

别看名字取得很高级,实际操作就知道有多蛋疼了,比如这个是以前的我写的虚拟机:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
存在非常多的问题,比如API,异常,多线程,混淆对抗等等。这里不展开说,展开说能单独写个报告总结
(对制作代码虚拟机感兴趣吗?感兴趣的私信回复以后单独写一份)

而最后,人力制胜,让人无穷无尽的分析病毒,写报告,写特征,成了杀毒软件厂商最后的手段。无论是根据所谓的LHASH base的家族基因分析,还是所谓基于机器学习的yara特征提取项目,乱七八糟的。始终无法自动解决三个问题:

  1. 自动化 内存shellcode分析
  2. 自动化 病毒样本分析
  3. 解决白夹黑

破局

为了解决以上说的种种问题,我们需要一个破局的办法,而这里写一个我的思路: 模式匹配 + 异常代码特征

模式匹配

为什么是模式匹配:

所谓人看的恶意代码,其实也是一种模式匹配,比如最经典的:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
virtualalloc后,解密shellcode,创建线程执行
而在这个恶意代码中
sub_140065ae2(lpStartAddress, rax_9, dwSize)
是释放shellcode的代码。
人看所谓的恶意代码,是先看到了VirtualAlloc,然后看到了sub_140065ae2,再然后看到了CreateThread,这就是一种模式匹配,当然这只是一个例子。实际情况会复杂的多。

真正强大之处

模式匹配的真正强大之处在于, 他是一个可积累的知识库。它不同于hash或者特征码,hash或者特征越存越多,但是可能过几年这个病毒就再也没出现过了,只能删了,这种属于是无效积累。而模式匹配的积累的特征模板,理论上只要系统不改架构,十年前用汇编写的creatthread注入代码,和十年后的用rust写的注入代码,本质上没什么区别。这就属于可积累规则 -让系统越来越强大。

如何实现模式匹配

模式匹配用IDA的微码就能做了,但是缺点显而易见: 又卡又慢,又要买正版IDA,而且IDA结果非常不准,对CFG处理也不好,对go,rust,switf处理显而易见的也不是很好(为什么不好下文会说)。而且有个致命的问题,ida是all in one,而我们是专用代码,不需要考虑如此复杂的系统,系统越复杂,bug越多。很多操作都能让IDA崩溃。

因此,需要手搓一个模式匹配工具,整体流程如下

  1. 函数call分析,包括Virtualtable,根据不同编译器做特殊的call分析,构造maps
  2. 函数life,把传统汇编lift为自己的IL(中间语言,跟LLVM-IR不同),构造CFG和控制流
  3. 变量构造,构造lifter后的变量
  4. 模式匹配

这是一些跟IDA的对比图:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
IDA识别memset指令问题:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

blocks,cfg分析:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

具体细节在明年2025年我会开一整个系列介绍实现,原理与思路,其实这种操作效果就是手写了一套IDA,但是比IDA更小,更可控。让我们回到正题,继续介绍模式匹配的具体用法

模式匹配用于病毒分析

一旦我们有了可靠的分析后端后,我们就能写所谓的模式匹配规则了,以virtualalloc为例子:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
我们只需要存储VirtualAlloc的rax变量返回情况,就能知道virtualalloc的变量被用于createthread了。而我们不关心其他的乱七八糟的变量,或者混淆。只需要追踪一个变量即可
另外,关于循环解密shellcode,通过CFG,我们能知道变量被进行反复计算
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
只需要写一个简单的深度优先搜索, 就能确定变量是否被用于解密某些操作,更进一步,可以继续追踪变量返回看变量是否被执行了,这样就是一个规则: 变量被解密后执行
还有非常多有意思的技术手段,不论混淆与否,都能被这样写出来。而且常规的干扰虚拟机的技术也对模式匹配无法生效。因为我们并不是真正的执行

真正的机器学习: 异常代码特征

熟悉我的朋友都知道,我本人是比较反感机器学习用于安全的,显而易见,机器学习产生的失误需要让人背锅,比如机器学习误报病毒,人去处理,反而增加人工作量。但是这块,机器学习确实可以发挥作用,即异常代码特征
这个操作非常简单,简单到你可能认为不可思议,参考我2022年写的
[2022] 基于NLP的威胁检出引擎

https://key08.com/index.php/2022/03/17/1447.html

根据分词,代码标黑标白,现在我们有了il后,只需要把黑和白的样本代码block 发给AI做训练,这就相当于把单词发给AI,让AI判断句子是黑还是白,之前做NLP的检出引擎失败的原因是,AI并不能知道汇编代表是什么意思, 而现在我们可以给他IL blocks,IL blocks就代表我们已经做了特征提取了,让他判断 这个block是否是看起来异常的代码。这样就会导致,越混淆,越加壳,报毒的越快

效果

这里我选了几个经典的,包括粉丝等私信发给我让我分析的的样本(特别感谢粉丝流风xx雪,很酷xx笑,经常报告一些奇怪的样本给我做实验)

某免杀样本:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享
ida:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

白夹黑:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

shellcode分配:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

shellcode在data段的HVV样本:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

机器学习,识别到混淆代代码:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

机器学习识别到的置信度最高的代码:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

有了准确的恶意代码片段后,自动生成yara规则:
2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

结论

优点

前面举的例子都是一些比较基本的,这种代码分析手段优点非常多,扩展性极强,比如还能写 OLLVM调用,反沙箱代码,检查钉钉在不在的代码等等的模式匹配规则,越混淆越对抗越容易被抓。

而且整个过程是高度自动化的,人工只需要看规则误报率和正确率即可,相比传统人工打开IDA分析病毒,这套体系能高度自动化,解放人工。

缺点

缺点显而易见,整个架构的质量关键在于backend,asm lifter to il 不是一件简单的事情。不过这种lifter对于安全公司应该不是什么难事。

原文始发于微信公众号(冲鸭安全):2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月1日23:05:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2024年终: 木马病毒自动化特征提取&云端机器学习的思路分享https://cn-sec.com/archives/3566087.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息