搜索
查看: 6940|回复: 131
收起左侧

[分享] 从简单案例看多层防御的重要性

  [复制链接]
B100D1E55
发表于 2017-11-23 12:48:08 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2017-11-25 00:31 编辑

之前分析精睿包的时候发现了一个稍微有点意思的毒。
先描述一下大致流程:原文件是一个winrar sfx,动作比较明显,运行后会在startup释放一个批处理文件以确保能驻留在系统。一些杀软杀这个程序也是因为这个可疑行为,但是针对那个批处理在VT上最初只有Ikarus一家Powershell Downloader,其他均不报毒。
beh0.jpg

查看释放的bat文件发现作者对脚本进行了一些基本的混淆
beh1.jpg
从上图可以看到从密文到明文需要先进行部分字符的替换,然后进行base64解码,最后再将解码的gzip数据流进行转换得到明文

这些混淆手段最终都会在运行时展开为明文脚本,因此使用支持AMSI接口的系统(和支持AMSI扫描的杀软/自带脚本沙箱的杀软)可以较好地避开这类简单混淆

简单解密后发现这个脚本基本上是一个注入程序,其先从指定网址上下载一个普通的bmp图片,然后将图片转换为byte数组,再使用VirtualAlloc函数申请RWX内存。拷贝数组到申请的RWX内存后使用CreateThread函数进行执行。具体细节不在这里赘述


这里比较有意思的一点在于把实际的二进制payload隐写在图片中,先来看看bmp的文件结构:
bmpformat.jpg
可以看到bmp文件结构非常简单,头两字节是表明文件格式的magic number,之后则是文件大小。
而这里作者就是在文件大小上做了一点文章
简单反编译后可以看到文件的初始被修改为了这种模式:
codeblock.jpg
其中两个magic number类似nop,之后作者通过修改文件头的文件大小来构造一个跳转指令跳转到图片数组中(这里值得注意的是bmp的像素是逆序存储),随后在第一次跳转后的像素值上进一步修改再次跳转到最终的可执行路径。

其实用一些熵可视化工具也可以看到问题:
visualizer0.jpg
普通图片的情况是上图这样
visualizer1.jpg
嵌入代码后图片和代码出现了明显的边界。

基于这个原理我也实验了一下,我用了这张图来作为隐写的载体:
greenduck.jpg

我选用了一段简单的shellcode嵌入图片,shellcode主要行为是通过exec打开计算器程序,可在win7sp1或者win8.1上成功运行。

嵌入图片后得到如下图片:
rubberduck2.jpg

仔细看可以看到原谅鸭头上的花有几个像素已经被破坏,如果程序控制流简单还可以使用一些特殊工具将代码通过跳转的手段分散在不同像素中(这样肉眼便难以识别),还可以将函数入口点的偏移放在其他地方外加一些干扰进一步阻挠分析(例如linear-sweep)。

在win8.1下做了简单的测试。首先我把改好的图片host在我自己的网页服务器上,让恶意脚本先从服务器上下载图片,随后通过脚本注入运行,结果发现运行成功
calc_success.jpg

这里有一个小插曲。我的win8.1测试机上装了红伞。在脚本测试前我也写了一个简单的PE程序测试shellcode,而红伞在那时候通过APC进行了拦截(忘了截图……),但是通过这种多阶段运行的手段运行的时候红伞果断没反应了。

而这个注入程序本身在VT上有数天除了Ikarus外都没有厂家检出。直到我人工上报了ESET入库之后的一天其他个别厂家开始陆续检出(比如TrendMicro和国产某家),而卡巴比ESET检出稍早。这种现象的个中缘由你懂的,这里就不展开说了

也就是说如果这个bat->powershell的注入器没有被检出,而实际的payload又被潜在这种bmp文件里,那么防御单薄的杀软就可能被绕过了。有的杀软出于性能考量甚至不扫描图片等数据文件,就算带启发,由于找不到代码入口点也很难运行,最多就是一些文件上的特征匹配。相反,有内存/行为监控的话就没那么容易被绕过了。

例如我将meterpreter的PE程序上传vt:
testav.jpg

shellcode嵌入bmp后上传vt:
testav2.jpg

其中clamav的检出仅是因为字符串匹配,如果嵌入的payload进一步进行一些简单加密估计也照样无法检出

反过来想,如果有多层防御呢?例如用户禁运了powershell,或者对CreateThread进行HIPS监控,或者杀软有较好的内存监控功能等等,那么没有进一步混淆的代码就算嵌入图片也能在运行时被拦截。

这个案例也侧面反映了杀软遥测功能部署的重要性。例如我在样本初次联网测试运行的时候ESET就通过LiveGrid自动在后台把脚本和源文件上报了(当然ESET对广度不高的样本处理优先级非常低……)。这样虽然初始的机器上可能会被过,云反应快的话其他用户能因此逃过一劫

大多成熟的杀软都具备这种可疑自动上报机制,当HIPS模块发现一些信誉未知程序触发了一些可疑行为时(例如写启动、执行powershell脚本等,甚至是更复杂的阈值组合以过滤大量遥测噪声),这些样本就会在后台静默自动传入杀软的云分析管线进行初步分析,疫情严重的会以高优先级生成特征云拉黑。

每台机器都是一个监测端点,通过统计这些遥测收集的大数据就可以掌握病毒爆发的情况。企业级的APT遥测功能很大程度上就是将这个过程从公有云搬到了企业内部云。某种程度来说,只要合理使用这些数据,市占率高对检出率的帮助不是一点两点。

评分

参与人数 11分享 +3 魅力 +1 人气 +11 收起 理由
ELOHIM + 1 精品文章
钢铁侠 + 1 感谢支持,欢迎常来: )
屁颠屁颠 + 3 + 1 + 1 版区有你更精彩: )
ziqianweiyang + 1
晓de朱雀_鼬 + 1 精品文章

查看全部评分

锦瑟无端五十弦
发表于 2017-11-23 12:49:23 | 显示全部楼层
虽然看不懂,但是想说露珠辛苦了
聆听落雨
发表于 2017-11-23 12:56:09 | 显示全部楼层
本帖最后由 聆听落雨 于 2017-11-23 12:58 编辑

大神,能不能帮我将这个网页的代码删除一下啊,我总是出BUG

https://bbs.kafan.cn/thread-2109376-1-1.html
就是我给出的这个三个图片后面的代码删除,我想将页面减少。

只留下首页,业务,案例,联系四个屏

iamLMH
发表于 2017-11-23 13:05:55 | 显示全部楼层
像素那里其实可以用相近的像素点进行矩阵卷积近似还原,不过普通人也不会纠结这些。。
大神的知识面真的好广。。。
pal家族
发表于 2017-11-23 14:37:30 | 显示全部楼层
这篇文件的点击率保证---个中缘由,就这么被省略了。
ELOHIM
发表于 2017-11-23 15:05:53 | 显示全部楼层
隔天评分上来。
就爱看这样的文章。
—————————
多层防御是技术,
但是如果人脑不够用,
你给他一个全自动迫击炮也没用的。
—————————
好好学习,争当肉鸡。   
KK院长
发表于 2017-11-23 15:22:57 | 显示全部楼层
我记的 以前有 bmp文件中有嵌入代码的木马的, 一般杀软 为安全 .
收一个 图片死一个 ...   
cloud01
发表于 2017-11-23 15:50:26 | 显示全部楼层
ESET本身的官方防勒索规则已经可以禁运powershell了。eset的hips要用起来。
HEMM
发表于 2017-11-23 16:11:45 | 显示全部楼层
本帖最后由 HEMM 于 2017-11-23 16:13 编辑

偶和其他人不一样,看的懂的人在看技术,偶素来看鸭子的,原谅鸭不够美型,这个你要肿么给观众一个交代,差点被其吓尿,有道暗杠还不是麻将,都糊了,赔钱!
这个肿么说呢?HIPS用户依靠使用者的经验和知识在其掌控能力范围内把控,未免太累。
安软还要顾及误报,以及易用性,用户的难以琢磨的心情,它们讲究的是个平衡以及良好的服务跟进体验,那么它的错漏会被好感度完全碾压。反正安软无法做到面面俱到只能服务跟进,某些脸面大的,粉丝一拥就有那么点飘惹,反正有死忠粉,把自己的位置端高点,走大气磅礴的路线,平民用户的苦水都没处到惹,要你何用?定位都不会定,走高端大气?保佑一直能提供满足粉丝的新鲜和安全双感吧。
不管是HIPS也好,安软也罢,决定权最后还是落到用户身上,不同的是HIPS只要本身功能无错漏无怨尤,反正是自己能力无法驾驭,安软要是服务不到位可有的一喷惹,毕竟顾及的东西多,无论是智能还是手动都需要安软工作人员辛勤的付出的,剩下的好牌看推广的人会不会打了。
看了你的文章,越来越觉得安软不过一个筛子加服务罢了,不过一个自助餐和全套服务的区别。


BrianG045
发表于 2017-11-23 17:20:18 | 显示全部楼层
很喜欢这种技术类的分析文章,楼主辛苦了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛|优惠券| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2017-12-12 08:47 , Processed in 0.051116 second(s), 6 queries , MemCached On.

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