本帖最后由 zhq445078388 于 2013-2-21 21:33 编辑
首先,什么叫"加壳发布"
这也就是"编译后加壳,然后提交发布"此时,壳是"官方加壳",所以进行云服务脱壳进行伪指令验证后(此步为所有的本地杀软无法做到的.因为资源消耗巨大,本地验证一般是指令虚拟机脱壳,然后进行反汇编的启发式脚本验证)进行认证,其认证目标为提交的"加壳后文件"
这类文件虽然加壳,但是其经过认证.如果其hash没有出现修改,基本可以认为是无危险的.
什么叫"加壳转发"
也就是"正式发布后,经过某一点时,其被添加外壳以隐藏其中的代码"
这时,此类文件已经被修改,也就是说其来源不可验证,是不可信的.
如果重要软件的某文件突然存在异常的外壳信息且加壳后的文件没有经过认证.则基本可认定该文件的作用为"挟持原版文件"
为什么加壳转发是极其危险的,并且任意的杀软厂商如果轻易放过此类文件可能造成病毒在一定时期内泛滥呢?
1.其根本就是"外壳信息可能本身带有恶意代码"
杀软的"指令虚拟机"在执行前.一般会调用7z.dll进行解开一些初步的壳,但是这些外壳代码本身可能带有恶意指令
如为早期的rar自解压文件新增一个区段,然后在区段内加恶意指令.将该自解压包PE入口修改为该区段入口,此时使用7z.dll去提取其中文件并解析.就会放过恶意代码
另外,一些壳会进行"基于指令虚拟机的恶意代码绕过技术",其本身就是..利用指令虚拟机本身的判断逻辑(如依据pushad来脱UPX)将恶意代码放置在"指令虚拟机认定外壳被脱下的代码"之前.此时.指令脱壳机会自发的将这些恶意代码隐藏
基于指令的虚拟机:解析二进制并模拟CPU执行.内部有一些判断来判断是否已经脱下壳子.判断脱下壳子后则将内存指针传递.或直接dump出来,将恶意代码放置在这个判断已经脱下壳子之前.即可绕过该虚拟机
解决方案:利用VT技术搭建"mi-guan",虚拟一个完整的操作系统,并在其中进行各种HOOK,进行一般来说为期90秒的观察,其代价巨大,资源消耗巨大.本地杀软基本无法正常使用此方法.
2.加壳后文件内部被隐藏的信息中可能包含一些云端控制代码
这些云控代码本身看起来并不可疑,他可能只是去读取一个可信的链接,
但是,因为xss,php跳转漏洞,asp各种漏洞的泛滥,一个可信的链接可能也不可信
如百度针对360搜索制作的一个中间页.其当初就存在一个xss.
从代码本身来看,这是可信的行为.但是当其跑起来之后.行为将按照一定的需求显露出现
比如一个文件,是百度影音的EXE文件.其被新增了一个区段用于恶意代码.该恶意代码读取百度空间的链接.通过百度空间发起的指令来进行恶意行为,而这些恶意代码被再次加密.密文不存在于本地.而是通过云端下发的方式
那么..杀软静态扫描时如何鉴定文件是否有问题?
其实这只是"加壳转发"的两个显而易见的问题.
还有很多的威胁的.再加上本身对文件进行破解.没有必要进行加壳.所以.一个已经发布的文件被加壳.基本可以认定是被添加了恶意代码.
我想.现在大家该明白这文件发布与加壳的认定逻辑了么?
不过有人问了.那为啥有的大牌就报,有的就不报了?
其实这并不是简单的"误报""漏杀"问题.
而是其机制问题
杀软的两种模式:
1.以黑杀黑
2.以白杀黑
在加壳这类问题面前.1会大量不报.2会大量报
这本身就是合理的
因为
1为对已知或启发性木马进行检出
2为对安全文件进行认证
对于1来说.脱壳后没扫出问题.就是没问题的
对于2来说.你没经过认证.且隐藏内部代码.本身就相当可疑 |