不知测毒包的时候是否有留意过那些exe程序的图标?
这些不起眼的东西有时候也能被“启发”:稍微有点经验的用户看到exe后缀却有着word文档图标的文件,就算不打开看内容也知道肯定不是什么好东西。程序图标不仅是非专业用户进行人脑启发的第一步,也是不少杀软启发的判定依据之一,比如在人肉决策树里面: 没有图标的可执行文件可能比有图标的更可疑 有着常见软件图标(adobe reader、Flash),内容却和已知对应程序相差甚远的程序很可疑 有NSIS安装包图标却非NSIS程序的文件很可疑 图标长得很像常见程序却并非常见程序的文件很可疑 图标长得像盾牌却非常见安全厂商的文件可能是fake av 其实为了提高自动机检测率,安全厂商也在绞尽脑汁增加更多的判识维度来优化检测模型。BitDefender的一篇文章里曾提到他们的机器学习会对各类安装包的用户条款进行语义分析来识别未知PUA(一些PUA厂商为了钻法律漏洞,会在EULA中嵌入一些PUA行为的免责条款来让自己的行为合法化从而区别于正常程序的EULA);一些自动沙盘系统会通过OCR识别功能来检测屏幕上出现的勒索信;一些恶意程序启发系统会检测待测程序的图标和文件描述是否符合。 让我想起写这篇起因于在c0d3这个神奇的网站上看到了这张图:
曾经在去年的ransomware家族的程序图标中看到和这个一个类型的图片(就在kafan的样本当中) 乍看之下就是一堆几何图形杂乱无章的堆叠,实际上是一个叫c0d3.attorney网站后台php脚本根据不同seed生成的图片,类似于“指纹”。这个网站主要是展示用Malbolge这种特殊语言写的有意义的程序。Malbolge本身被认为是一个图灵不完备的语言(计算能力在线性有界自动机范围内),其状态迁移非常诡异且为三进制,因而只能通过算法来生成姑且能收敛的程序。正因为如此它有着强混淆属性。其Hello World案例如下:
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc 这个网站声称在Malbolge语言中找到了一个弱点,并已经可疑借由这个弱点生成任意程序。在这个网站中嵌入了一个php脚本,针对不同的输入值会生成不同的充满几何图案的图片。这些图片似乎隐藏了一些讯息,有人甚至猜测这里面可能包含了比特币宝藏,也有人指出这个站点上列出的程序并不是有效的Malbolge程序,可能被进行了二次加密混淆。这个图片提起了我的兴趣,其似乎是对应Malbolge程序的可视化图片“指纹”。那么为什么会有类似的图出现在ransomware家族里,是因为这个网站和他们有什么关联吗?类似的图标在其他类型的ransomware也出现过,比如这个:
可能有人好奇为什么有人会想给恶意程序加上这样的图标,难道不是更显可疑吗?我个人猜测这些程序实际借由漏洞利用/宏指令等执行,因此普通情况下用户并不会看到其图标。那么这些图标又是做什么的?我个人猜测1)是黑产ransomware自动生成器给其加入了附带的“指纹”图标 2)为了混淆杀软的检测
说到混淆杀软的检测,图标资源有时候会很大程度上改变引擎检测置信度。这里举个不严谨的例子。 首先我给一个真正的勒索病毒“灭活”,也就是保留大多恶意内容,但去除了加密函数等,实际运行只会释放一个勒索信。这里使用的是C#程序,因此就算调用函数不存在其静态的其他未调用函数仍会驻留在生成的exe中。这么做的理由是先拉低引擎对exe判识的置信度,然后替换图标资源就可以看到检出率的变化(否则只替换图标检测结果往往不会有较大改变)。这里测试的每个程序都确保只有图标不同,其运行的行为完全相同。
测试的4个程序,其中b0是原始被入库的程序,其图标为pdf文档,而b1是ppt文档图标,b2是locky其中一种变种的图标,b3则是无图标 可以看到有趣的检出结果变化,其中原始灭活样本共有31家报毒 (之后把四张VT图更新上来) 在替换图标为ppt之后(b1)不报毒的有QVM、Endgame、McAfee等,而报毒名变更的有Malwarebytes(从具体毒名变成Generic识别)、Max(恶意打分从82变为81) 把图标替换成locky家族用过的图标后(b2),Endgame重新检测到,但置信度等级从“高置信度”变为“中等置信度”;而MAX的恶意打分则从81上升到87 将图标去掉后,CrowdStrike突然蹦出来说可疑置信度为60%(b0则为70%);Endgame重返高置信度;MAX打分甚至提高了1分,变为88;Ahnlab变为不报毒 作为娱乐测试,我也测试了智量,其中智量只对b2(locky图标)报毒,哈哈
需要注意的是这个测试并不能100%说明是图标导致了置信度变化,因为图标的改变也进而导致文件体积改变。对于一些静态引擎,其算法(例如将不同大小的文件进行normalize)本身的特性可能也会导致置信度受到影响。但总体而言可能有一些关联性。 FakeAV的图标共性:
其资源内含图标共性:
可以发现通过对图标进行机器学习能够进一步提高检测率。因此恶意软件作者也想出了各种方法来逃避: 更改透明通道(最右为两者实际数值上的差别的可视化) 改变色泽 锐化 修改部分像素 翻翻卡饭历次样本包,总能找到一些掺杂着奇怪像素的恶意程序。
这些像素到底有什么作用?杀毒厂商应该比我更清楚。有研究人员曾提出反机器学习模型的强化学习系统,当系统能够直接获取检测模型的反馈结果时(例如黑/白结论,恶意分数),通过在给定的变化范围内进行自动化探索(例如修改文件元数据、文件图标的像素等等)可以自动化地生成绕过机器学习模型的恶意程序。这恐怕也是为什么当今厂商会在本地部署小模型、云端部署大模型的原因之一。背地里留一手总比给黑客进行彻底的开卷考试来得好一些。
|