广义上的沙箱技术,就是如LS几位所说的。就反病毒软件而言,目前反病毒软件,对于未知病毒的侦测上,最常见的方式,是启发式分析技术、虚拟机技术和沙盒技术;云安全技术和HIPS(主机入侵防御系统),以及其他反病毒软件厂商自身独有的技术,比如说微点的主动防御技术和大蜘蛛的Origins.Tracing技术,也就是一种非特征风险程序运算法则等等。 启发式分析技术,往往离不开虚拟机技术和沙盒技术。 虚拟机技术是利用虚拟机对计算机病毒运行进行监控的技术,这里的虚拟机指的是完全虚拟(Pure Emulator)。虚拟机技术是通过模拟CPU指令系统、内存管理系统、操作系统、API调用系统等完成的,这是一个纯粹的虚拟环境,病毒在其中运行,和当前的系统完全隔离。在这种虚拟环境下可以实现病毒的脱壳、行为判断等多种功能。 动态启发利用了上述的虚拟机功能,在虚拟机环境下运行病毒,监控病毒的行为实现。例如病毒调用了哪些有危害的API,修改了哪些注册表键值,创建了哪些文件等。动态启发的深度取决于虚拟机虚拟的深度。 沙盒技术事实上也是一个模拟环境,病毒可以在这个环境中任意运行而不破坏系统资源。它和虚拟机的不同在于:沙盒的运行是借助于当前系统资源的,例如API的执行,异常的调度等,一般是把API用hook的方法拦截掉。而虚拟机用的资源(例如API)是需要完全自己虚拟出来的,并不是调用系统已有的资源。可以这样理解,前几年流行的“主动防御”技术也是通过hook API的方法实现的,是在Windows层进行动态行为判断的一种技术,是沙盒技术的一个子集,只有拦截而没有回溯功能。而沙盒技术可以使虚拟环境回到程序原始点。 沙盒可以算是虚拟机的一种发展,其技术原理似乎也和虚拟机大致相同,但它们仍有很大区别。沙盒是一种更深层的系统内核级技术,在一个程序运行时,沙盒会接管程序调用接口或函数的行为,并会在确认病毒行为后实行“回滚”机制,让系统复原。而虚拟机并不具备回滚复原机制,在激发病毒后,虚拟机会根据病毒的行为特征判断出是某一类病毒,并调用引擎对该病毒进行清除,两者之间有着本质的区别。
目前市场上的反病毒软件,有使用虚拟机技术的,也有使用沙盒技术的,原因是虚拟机技术发展多年之后相当稳定,而沙盒技术,目前还是会存在着一些“漏沙”的情况,再加上各个反病毒软件厂商的研发和技术水平之间也有一定的差距,所以就导致了这样的现象发生,我想沙盒技术应该是未来反病毒软件的一个主流。 |