搜索
查看: 8395|回复: 61
收起左侧

[分享] 恶意程序图标的那些事

  [复制链接]
B100D1E55
发表于 2019-5-6 16:59:07 | 显示全部楼层 |阅读模式
不知测毒包的时候是否有留意过那些exe程序的图标?

icons.jpg

这些不起眼的东西有时候也能被“启发”:稍微有点经验的用户看到exe后缀却有着word文档图标的文件,就算不打开看内容也知道肯定不是什么好东西。程序图标不仅是非专业用户进行人脑启发的第一步,也是不少杀软启发的判定依据之一,比如在人肉决策树里面:
没有图标的可执行文件可能比有图标的更可疑
有着常见软件图标(adobe readerFlash),内容却和已知对应程序相差甚远的程序很可疑
NSIS安装包图标却非NSIS程序的文件很可疑
图标长得很像常见程序却并非常见程序的文件很可疑
图标长得像盾牌却非常见安全厂商的文件可能是fake av
其实为了提高自动机检测率,安全厂商也在绞尽脑汁增加更多的判识维度来优化检测模型。BitDefender的一篇文章里曾提到他们的机器学习会对各类安装包的用户条款进行语义分析来识别未知PUA(一些PUA厂商为了钻法律漏洞,会在EULA中嵌入一些PUA行为的免责条款来让自己的行为合法化从而区别于正常程序的EULA);一些自动沙盘系统会通过OCR识别功能来检测屏幕上出现的勒索信;一些恶意程序启发系统会检测待测程序的图标和文件描述是否符合。
让我想起写这篇起因于在c0d3这个神奇的网站上看到了这张图:

c3.jpg

曾经在去年的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也出现过,比如这个:

icon.jpg

可能有人好奇为什么有人会想给恶意程序加上这样的图标,难道不是更显可疑吗?我个人猜测这些程序实际借由漏洞利用/宏指令等执行,因此普通情况下用户并不会看到其图标。那么这些图标又是做什么的?我个人猜测1)是黑产ransomware自动生成器给其加入了附带的“指纹”图标 2)为了混淆杀软的检测

说到混淆杀软的检测,图标资源有时候会很大程度上改变引擎检测置信度。这里举个不严谨的例子。
首先我给一个真正的勒索病毒“灭活”,也就是保留大多恶意内容,但去除了加密函数等,实际运行只会释放一个勒索信。这里使用的是C#程序,因此就算调用函数不存在其静态的其他未调用函数仍会驻留在生成的exe中。这么做的理由是先拉低引擎对exe判识的置信度,然后替换图标资源就可以看到检出率的变化(否则只替换图标检测结果往往不会有较大改变)。这里测试的每个程序都确保只有图标不同,其运行的行为完全相同。

测试的4个程序,其中b0是原始被入库的程序,其图标为pdf文档,而b1ppt文档图标,b2locky其中一种变种的图标,b3则是无图标
可以看到有趣的检出结果变化,其中原始灭活样本共有31家报毒 (之后把四张VT图更新上来)
在替换图标为ppt之后(b1)不报毒的有QVMEndgameMcAfee等,而报毒名变更的有Malwarebytes(从具体毒名变成Generic识别)、Max(恶意打分从82变为81
把图标替换成locky家族用过的图标后(b2)Endgame重新检测到,但置信度等级从“高置信度”变为“中等置信度”;而MAX的恶意打分则从81上升到87
将图标去掉后,CrowdStrike突然蹦出来说可疑置信度为60%b0则为70%);Endgame重返高置信度;MAX打分甚至提高了1分,变为88Ahnlab变为不报毒
作为娱乐测试,我也测试了智量,其中智量只对b2locky图标)报毒,哈哈
wisevector.jpg

需要注意的是这个测试并不能100%说明是图标导致了置信度变化,因为图标的改变也进而导致文件体积改变。对于一些静态引擎,其算法(例如将不同大小的文件进行normalize)本身的特性可能也会导致置信度受到影响。但总体而言可能有一些关联性。
FakeAV的图标共性:

fakeav.jpg

其资源内含图标共性:

fakeav2.jpg

可以发现通过对图标进行机器学习能够进一步提高检测率。因此恶意软件作者也想出了各种方法来逃避:
alpha.jpg
更改透明通道(最右为两者实际数值上的差别的可视化)
color.jpg
改变色泽
sharpening.jpg
锐化
pixel.jpg
修改部分像素
翻翻卡饭历次样本包,总能找到一些掺杂着奇怪像素的恶意程序。
pixel2.jpg

这些像素到底有什么作用?杀毒厂商应该比我更清楚。有研究人员曾提出反机器学习模型的强化学习系统,当系统能够直接获取检测模型的反馈结果时(例如黑/白结论,恶意分数),通过在给定的变化范围内进行自动化探索(例如修改文件元数据、文件图标的像素等等)可以自动化地生成绕过机器学习模型的恶意程序。这恐怕也是为什么当今厂商会在本地部署小模型、云端部署大模型的原因之一。背地里留一手总比给黑客进行彻底的开卷考试来得好一些。

评分

参与人数 8原创 +1 分享 +3 人气 +16 收起 理由
屁颠屁颠 + 1 + 3 版区有你更精彩: )
HEMM + 3 认图标啦,哎呀!我眼瞎了~
KK院长 + 1 原创内容
Sailer.X + 3 版区有你更精彩: )
wrb116 + 1 版区有你更精彩: )

查看全部评分

aiyaya8
发表于 2019-5-6 20:09:13 | 显示全部楼层
这个思路好特别。。。
a8855942
发表于 2019-5-6 22:23:38 | 显示全部楼层
伪装图标还是能做到把。个人感觉那些没有图标的EXE可能有点危险。
InnoriaAlter
发表于 2019-5-7 00:57:02 | 显示全部楼层
图标和名称对不上的 或者图标很模糊的 一般有点问题....
反倒是怕后缀名是.exe但图标是文档的 一不小心就点进去了...
B100D1E55
 楼主| 发表于 2019-5-7 01:38:51 | 显示全部楼层
aiyaya8 发表于 2019-5-6 20:09
这个思路好特别。。。

我觉得通过EULA检测PUA更邪
欧阳宣
发表于 2019-5-7 01:42:23 | 显示全部楼层
图三那种马赛克 见了不知道多少个
B100D1E55
 楼主| 发表于 2019-5-7 01:50:23 | 显示全部楼层
欧阳宣 发表于 2019-5-7 01:42
图三那种马赛克 见了不知道多少个

估计最早pad骗机学大法不管用了(我记得很早开始qvm就开始杀尾巴pad的程序),然后现在开始玩图标。反正这个算正常区段,里面填什么数据都行
KK院长
发表于 2019-5-7 08:44:08 | 显示全部楼层
  绕过机器学习或通过修改图标资源,修改其他数据,反正免杀即可, 用户掺了...
智量官方
发表于 2019-5-7 08:48:17 | 显示全部楼层
很有意思的测试.

但是图标作为一个无法与恶意程序功能发生实际关联的向量,在智量的判定中权重相当低的, 我相信VT上的其它机器学习方案中图标权重也不大,在你的测试中侦测率降低估计和你移除了勒索软件实际功能有关,我没太看懂你的说明,你是讲你移除了实际勒索功能吧?

目前业内主要使用图标单独检测,有很多成熟算法使用,比如DHASH,PHASH等。照顾一些知名图标是常见解决方案,比如fakefolder, swizzor类似图标等。DHASH速度更快,误报更低一些. 另外提到Adversial ml对抗机器学习引擎方面,目前自动强化学习是没有问题的。问题是如果你真正去实操下来,发现自动生成的样本能成功运行的很少,还需要人工精细调节需要更改的特征,这是目前对抗引擎的主要问题.

评分

参与人数 1人气 +1 收起 理由
KK院长 + 1 感谢解答: )

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛|卡饭乐购| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2019-10-22 07:17 , Processed in 0.103581 second(s), 22 queries .

快速回复 返回顶部 返回列表