作为《黑客帝国》电影最著名的意象,红蓝药丸的概念后来也被引入了计算机领域,用于虚拟化识别/虚拟化欺骗。而且牛逼之处在于,红丸(Red pill)和蓝丸(Blue pill)的作者是同一个人:波兰人Joanna Rutkowska(图2)
在计算机领域中,红蓝药丸概念和电影中类似:一个程序如何判断自己是运行在一个虚拟化环境中;以及虚拟化环境如何欺骗程序,让它认为自己运行在真实系统里。
随着计算机虚拟化技术的普及,由于虚拟机使用者可以从比操作系统层更底层的硬件层面完全掌控运行在其中的程序的所有过程和状态,在计算机安全领域经常被用于调试和研究恶意软件。而恶意软件自身,以及一些涉及加解密和认证等敏感数据的程序处于相似的目的,不希望在虚拟机化环境中被调试。由此就诞生了虚拟化欺骗和虚拟化环境识别两种互为矛和盾技术。
先说红丸。最初的红丸的原理是在ring3层(非特权层)检查一个特定的指令调用(SIDT)。技术细节暂且略过,主要原理是检查特定寄存器的值,在真实系统里这个寄存器会存储真实的值,而在虚拟化环境中由于实现的限制,在这个寄存器里存的是值的指针,判断返回值的范围即可确定当前环境,核心思路仍然是在虚拟化环境中寻找和真实环境不同的点(瑕疵)。
然后是蓝丸,它是一个基于Intel(VT-x)和AMD(AMD-V)虚拟化环境的rootkit,通过拦截、过滤和修改程序的一切请求和交互,包括虚拟化环境探测尝试,来实现完全的欺骗。
在实际应用中,出于性能和功能的考虑,主流的虚拟化软件都不是完全的虚拟化,有很多虚拟化专用指令和虚拟机——宿主机交互接口,一部分功能依托CPU硬件的虚拟化功能(如上文提到的VT-x和AMD-V),一部分功能依托虚拟机自身软件实现。
在虚拟化技术日趋普及的今天,红蓝药丸的对抗也仍然在持续。除了特权指令检查,还包括上文提到的虚拟化专用指令检查、环境检查(是否安装了虚拟化接口驱动、网卡MAC段是否是虚拟机使用、屏幕分辨率检查等)。
最后说一个虚拟化技术在安全领域的一个重要应用:沙箱(Sandbox)。和游戏概念里的“沙盒”是同一个词,但在这里的意思是运行在可控的虚拟化网络里的虚拟机,在这个虚拟机里运行各种恶意软件/病毒,通过对沙箱虚拟机网络流量的监控和内部的进程行为进行监控,发现和识别恶意软件在流量层和主机层的特征,为安全产品提供识别特征依据。由于每天都会涌现大量新的恶意软件和病毒,完全无法纯靠人工分析,而且加密(加壳)技术也已经成为了恶意软件的标配,静态分析只能得到极为有限的信息,只能依靠沙箱运行的方式获得样本运行时的动态行为。沙箱的主要用法是大规模成批量地运行可疑样本进行筛选,再有针对性地对其中表现出异常的样本进行人工分析。
但有矛就会有盾,恶意软件的开发者也会针对沙箱进行检测,当发现自己可能运行在沙箱环境中就不触发恶意业务行为,或者,更狡猾地表现出其他恶意软件的行为特征,将研究人员引入歧途。这里不光涉及到反虚拟机/红丸技术,还包括了更具体的反沙箱技术(例如检测键盘/鼠标输入频次和内容等)。
参考资料:
https://en.wikipedia.org/wiki/Blue_Pill_(software)
https://en.wikipedia.org/wiki/Joanna_Rutkowska
https://web.archive.org/web/20070911024318/http://invisiblethings.org/papers/redpill.html
https://blog.invisiblethings.org/
食品经营许可证 JY11105052461621
©2024 GAMECORES
评论区
共 条评论热门最新