此处有点标题党嫌疑了。估计这样的技术也是由来已久了。这里尚且按照赛门铁克的说法标题党一回。

在病毒分析里面,各种沙箱,沙盒,虚拟机都应该不陌生,不管是为了可管理性,可控性,模拟多系统等的考虑,使用虚拟环境分析恶意病毒都是非常常见的手法。网上也有很多系统自动上传了文件后,使用多杀毒引擎自动分析检查病毒样本。而今,病毒就针对这样的形势,发展出检测其所在的环境。如果发现是虚拟环境,自动化检查环境就不执行,从而达到隐藏自己,规避检测。特别是那种多引擎杀毒的检测,如果能够检测到该分析系统,而规避了,很可能等于就规避了大量的杀毒引擎的报警。

其中使用到的技术包括有:

*检查特定的注册表键值,如果发现是虚拟环境就停止执行
*检查视频,鼠标驱动,如果发现是虚拟环境就停止执行
*枚举系统服务列表,如果发现是虚拟环境就停止执行
*执行特定的汇编代码,如果发现是虚拟环境就停止执行
*检查特定的通讯端口,如果发现是虚拟环境就停止执行
*检查特定的进程名称,如果发现是虚拟环境就停止执行

在赛门铁克近期的一份介绍中,就有两个真实的例子。展示病毒如何规避自动检测系统。

1.鼠标使用检测


如图所示,SetWindowsHookExA API 函数调用了_main_routine子程序监视鼠标的通讯消息,如果检测到鼠标移动或者击键它就会运行,如果没有检测到恶意程序部分就静止不运行了。因为通常真正人在用的机器都会有鼠标操作,而往往自动分析系统就没有。
 

2.休眠进程


如图所示,这段代码运行DecryptCode子函数前,它会等待300秒,也就是5分钟,然后又再等待20分钟再去执行ModifyRegistry子函数,当执行完Network_main自函数后又等待20分钟。自动分析系统往往只会花很短时间在一个文件的分析上,这样的程序往往会被自动分析系统认为是安全的程序。
 
以往病毒作者需要较深的技术功底去检测虚拟环境,例如他们需要熟悉汇编代码,需要虚拟机的知识,需要CPU,内存管理知识。然而从上面两个例子里,都不需要太深的技术。可见将来病毒作者将会往这个方向发现,使用各种新的点子去迷惑自动分析系统。

源链接

Hacking more

...