传统的特征码技术虽然大势已去,但是目前仍能发挥余热,在微点等主动防御软件中还是以此来识别已知病毒、木马的。

不过对于未知病毒我们必须有一套可行,不易被绕过的方法来识别它们。目前盛行的病毒变形、多态技术,使得特征码技术没法做到这一点,那么从行为的角度来考虑的话,就是化代码特征为行为特征,来识别未知病毒。

主动防御,我个人认为是这个大思想(行为技术)下的一个方式方法。当然还有其他的思路和方法。主动防御以监视为基础,当发现一个行为或一系列行为可疑时,该程序就进入了主动防御重点分析的状态,分析其衍生物,同时用特征码的方法分析其关联的文件是否是病毒、木马。如果能够准确的识别出来是已知病毒的话,绝不手软;如果被识别出是未知病毒的话,询问用户,是否放行等。

要推动主动防御技术,必须不断的研究攻防技术,例如自启动,代码注入,kill杀软,注册表操作,文件操作,Rootkit等等,这些目前是绝对的热点,主动防御我个人认为就是防的这些,因此能绕过,很强的!也是很有技术价值的;能防住的就是更有价值的了。这才是攻击与防御最真实的较量!

另外,虽然有很多人认为,杀软在明处,写病毒,写木马可以通过测试,发现其可绕过之处,从而写出可行的病毒、木马。不过什么都是相对的,只要主动防御杀软能够快速得到这个样本,学习之,再完善自己的核心技术。这样就可以抵御一批使用了这个绕过技术的病毒、木马,岂不乐哉!事实上,主动防御这种发展模式,最根本的优势是改变了传统杀软的发展模式,化被动为主动,主动的去研究新鲜的绕过技术,完善自身系统,研究技术虽然要比研究病毒单个样本的特征码成本高的多,但是研究出的技术起到了抵御一批病毒、木马的作用。因此一类病毒中只需要研究分析一个即可!我认为在这样一个病毒、木马泛滥成灾的时代里,主动防御的思想反而降低了系统的成本。

那么主动防御没有缺点吗?我认为最大的问题可能就是“查毒”的问题了,传统杀软可以使用特征码的方式查毒,速度很快。然而主动防御面对的是正在运行的程序,是动态的被识别出是否是病毒的。要想实现查毒的功能:

一种方式就是结合虚拟机技术,在虚拟机中运行程序来识别。面对的问题是:显然效率不会高,如何提高效率真是很头疼,我的想法是在网络上部署很多虚拟机,一个主机要查毒,那么可以把这些要查毒的程序,分发给网络上部署的不同的几个虚拟机,大家并行查毒。这样貌似可以大幅度提高效率,而且被查毒的主机不是很累。另外一个问题就是需要虚拟机和真实系统不能差异太大,甚至需要完全一致;

另一种方式就是直接在真实系统中运行,这需要在查出是病毒后,能够有效的回滚到病毒运行前系统的各种状态,这就需要在操作系统上建立一套可行的事务系统,负责do和redo等操作;

第三种方式可以考虑与影子、沙箱系统的结合,放到沙箱系统中去执行,然而沙箱目前不是很完善,很多功能没法在沙箱中实现,病毒的行为可能和在真实系统中的行为有很大差异,甚至没有完成可疑行为,就异常结束了,这样会导致“漏网”。

以上第一、三种方式共同面对的问题是:病毒会很聪明,发现自己在虚拟机、沙箱或影子中,老子直接退出,不玩了,哈哈!这样主动防御想查毒,而病毒不合作。这就类似体检的时候,测体重,你不上秤,怎么称体重?!这就需要主动防御软件去研究如何“哄骗”病毒木马,而病毒木马需要研究如何防止被“欺骗上当”仔细想想,是很有意思的,这类似一个博弈,一个循环,就像在下棋,一人一步。我们今天的想象也许就是明天攻防技术的表演。

我没法评判主动防御这步棋,目前还没有想的很清楚,只是自己忽然领悟到了一些东西,赶紧写出来!大家看看,呵呵!

哎!还不知道自己毕设该怎么做呢,要是做成主动防御的方式,那就需要先深入研究上面的那些技术,之前做的行为监视暂时放下,后面也许会用到。