写点什么

解读论文:无需提权就能检测硬件虚拟化环境

2020 年 8 月 11 日

解读论文:无需提权就能检测硬件虚拟化环境

虚拟化作为云计算系统中的一种基础技术,近年来,它不仅广泛应用于云服务器,也广泛应用于个人桌面。那么,究竟虚拟化技术是什么,为什么它有这么重要的作用?


想象有两个场景:


  1. 空旷的厂房,整个楼层没有固定的墙壁,从事各式工种的工人和机器设备扎堆聚集,无法形成流水化的高效作业。

  2. 开放的冷藏库里,面包、龙虾和榴莲裸露的存储在一起,没有任何封装和隔离。长久下去,面包有了龙虾味儿,龙虾有了榴莲味。


从上面两个例子里,我们不难看出,在空间资源一定的条件下,需要根据不同的需求进行重新规划,从而充分发挥最大的利用效率。在计算机领域,就存在一种技术可以解决上面的问题,那就是"虚拟化技术"。


虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在 70 年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine),通俗说就是“把一台电脑虚拟成 N 台电脑”。


同样,虚拟化在云计算的应用也是如此。云计算本身就是把一个巨大无比的服务资源划分成很多小空间来使用,所以这也就解释了为什么虚拟化是云计算最基础的软件设施。


虚拟化环境下的恶意程序分析

在计算机安全方面,虚拟化技术也有很广泛的应用,比如,安全人员能够利用虚拟化环境进行安全分析测试。虚拟化技术的出现弥补了安全动态分析测试服务器资源不足、系统不纯净以及环境搭建周期长等问题,同时又不会“中伤”到本地操作系统,它可以起到隔离作用,还能够严格控制运行在其中的程序行为,可谓“一举多得”。


有了虚拟化技术,安全人员便能够在一个孤立的环境中进行不同类型的安全动态分析。通常可以在虚拟环境中运行样本,利用监控模块提取样本的进程、内存、文件、注册表、网络等行为数据, 通过对这些行为数据的汇总分析来推断样本的功能和恶意性。


这种测试听起来合乎常理,没有什么大问题,然而有没有可能上演这样的一幕:


在电影《楚门的世界》里,楚门从一出生,他的生活就被全球 24 小时直播,身边所有的人都是演员,生活的城市就是一个巨大的摄影棚,连太阳、月亮甚至大海都是人造机器所操控的。

但是,“人造的世界”开始出现异常,莫名其妙天上掉下个录影棚灯,去世的父亲变成乞丐重新回来,初恋女友莫名其妙地消失不见……

随着越来越多的异常出现,楚门开始主动检测那个世界的异常,并且证明这就是一个“虚拟化环境”,最终躲开镜头,扬帆出海,获得自由…


没错,恶意程序的作者也和楚门一样,意识到了虚拟化环境中的异常,为有效地逃避虚拟化分析测试、攻击本地系统,他们掌握一种可以反虚拟化环境的技术,利用这项技术可以检测虚拟运行环境的存在,并隐藏他们的恶意行为,从而逃避安全研究员的分析。


也就是说,安全人员在虚拟化环境下分析恶意软件时,按照我们前面介绍的虚拟化技术原理下,恶意软件就会以为自己在一台“真的机器”里,但现在存在一些检测方法,可以让软件识破自己其实是在虚拟机里,拥有了“上帝视角”的恶意软件,有的“装傻卖乖”不再搞破坏,企图混过安全人员的分析,又或者是直接选择自毁,总之不管采用哪种办法,最终目的只有一个,就是“让安全研究员没办法研究我”恶意软件如是说。


因此,为了对抗恶意程序的反虚拟化问题,需要安全研究人员掌握更高效便捷的虚拟化环境检测技术,从而构建起更难以被检测、更透明的分析系统。


在本篇论文中,百度安全研究员对此做出深入探索,并研究出了最新硬件虚拟化检测技术,无须提权就能实现对硬件虚拟化环境的检测。


传统硬件辅助虚拟化检测技术存在缺陷

首先,我们来看看,目前恶意软件使用了哪些虚拟化检测方法。总结来说,他们广泛使用了两种虚拟化检测方法。


  • 第一种方法是查找虚拟机监视器或虚拟机本身留下的特定痕迹;

  • 另一种则是对硬件引起的计时差异进行分析,以用来标记。


然而,第一种方法存在很大的局限性,这种方法的原理主要依靠查找虚拟机监视器或虚拟机本身留下的特定痕迹,通常仅用于识别传统的基于软件的虚拟化。为了给用户操作虚拟机提供方便,一些虚拟机监视器将主机插入 Guest OS 中,但这些痕迹可以轻易被恶意软件发现。常见的痕迹包括 Guest OS 中运行的进行和服务、文件或注册表键值等,像 CryptoWall、shi 和 Kronos 这样流行的恶意软件都能够通过利用这些痕迹来检测虚拟化的存在。


而目前,随着 X86 处理器性能的提高和应用的普及,市面上主流的虚拟化更多依托的是硬件辅助虚拟化,论文中百度安全研究员重点对已知的硬件辅助虚拟化检测技术做了实验分析,结果可见表 1。



硬件辅助虚拟化检测技术效果对比


从表 1 可见,目前已知的硬件辅助虚拟化检测技术均存在可被移除、需要特权账户或触发大量可疑的 VM 退出事件等缺陷。针对这些问题,百度安全研究员推出了全新的虚拟化硬件检测技术,能实现在非特权状态下,不引发大量可疑事件,极具隐藏性的全新检测技术。


百度安全提出新型硬件辅助虚拟化检测技术

那么,百度安全提出的新型硬件辅助虚拟化检测技术是如何实现的呢?接下来,我们就一起跟随论文中的阐述具体来看。


整个工作分为两个阶段:(1)offline 阶段和(2)online 阶段(例如图 1)。Offline 阶段主要是采集特征属性在虚拟化环境(virtualized)和非虚拟化环境(native)的不同。这些数据可以保存起来,用于 online 阶段的检测。在 online 检测阶段,针对不同属性的划分,可以很容易的判断当前运行环境是否跑在了虚拟化缓解。



虚拟化检测的两个阶段


为了验证方法的有效性,百度安全研究员进行了实验研究,通过三台本地机器验证三种检测技术以及三家主流云供应商,结果详见表 2。



每个主流云提供程序上的三个本地机器和三个虚拟机的系统配置


接下来,我们将采用三个特征属性来给大家展示如何检测虚拟化环境。


1. 利用 TLB 的延迟来检测

为最大程度地减少两层的内存占用地址转换,现代处理器在虚拟环境中有两种类型的 TLB,即 hPT-TLB 和组合的 TLB。如图 2 所示,hPT-TLB 用于将地址从 GPA 加速到 HPA。组合式 TLB 存储 GVA 之间的映射和 HPA,类似于本机环境中的 TLB,并且缓存从 VA 到 PA 的地址转换。


直观地讲,一种可能的方法是测量内存访问(仅导致 TLB 丢失)并确定阈值,虚拟化可以在阈值之上被检测到。阈值可以通过比较确定本机和虚拟系统上的时间延迟。如果延迟被测得高于阈值,然后人们认为环境是虚拟的;否则它是本地的。但是,这种方法存在着误差,即内存访问所花费的时间因每个微体系结构而异。


因此,很难确定合理的绝对阈值。相反,我们使用导致 TLB 的 miss 和 hit 直接的差值来确定这个相对阈值。我们还因此设计了一个 Prime+probe 的算法完成此事(详细算法参加发表的文章)。



TLB miss 在地址转化过程中的流程



在 Amazon EC2,Microsoft Azure 以及 Google Cloud 上面的检测结果。我们很容易看到虚拟化和本地系统在 TLB miss 方面的巨大差异。


2. 利用 LLC Miss Penalty 来判断

在现代操作系统中,访问 GVA 时硬件会走页面表进行地址转换。对于每个 Guest 页表遍历,硬件也遍历 host 页表确定相应的 HPA。为方便访问,不仅相关的地址转换将被缓存到 TLB 中,而且访问的四级页表条目(PTE)将存储到 CPU 缓存中。


如图 2 所示,虚拟化环境将使用缓存以总共存储 16 个主机 PTE 和 4 个 Guest PTE,而本机环境仅需要 4 个 PTE。如果再次发生相同的访问,将首先查找 TLB。如果发生 TLB 缺失(即没有 TLB 条目均不包含地址翻译层),则将进行页表遍历。由于最近的 PTE 在 CPU cache 中,因此硬件将查找 cache 以检查其存在。如果不是在 cache 中,然后硬件从主设备获取它们内存。在这种情况下,两页的页表清晰可见与在本机环境。类似于基于 TLB 的测量,我们使用导致 TLB 和 PTE 引起的访问延迟


LLC miss 减去 hit 的等待时间,并把结果存储作为阈值。如果其他减去结果明显超出阈值,那么可以得出结论,环境是虚拟化。



在 Amazon EC2,Microsoft Azure 以及 Google Cloud 上面的检测结果。我们很容易看到虚拟化和本地系统在 LLC miss 方面的巨大差异。


3. 利用 L1D 缓存的不稳定性进行检测

在本机环境中,进程调度允许进程竞争一个物理 CPU。 在虚拟化在环境中,CPU 虚拟化允许物理 CPU 在多个虚拟 CPU 之间共享。 它允许多个在一台计算机上运行的不同操作系统。 在同时,不仅进程竞争虚拟 CPU,而且虚拟 CPU 竞争共享的物理 CPU,从而加剧了竞争,导致 L1D 缓存的不稳定性加剧。


此外,虚拟 CPU 是通常会迁移到不同的物理核心以优化负载平衡。 考虑到 L1D 缓存是物理设备专用的 CPU,并且 L1D 缓存的大小非常有限,攻击者可以预计多少个 entry 被 evict 出 L1D。这个数字在有虚拟化的环境下,将会大大提高。



在 Amazon EC2,Microsoft Azure 以及 Google Cloud 上面的检测结果。我们很容易看到虚拟化和本地系统在 L1D 不稳定性方面的巨大差异。


总结来说,实验结果充分验证了三种方法的有效性,我们所提出的检测技术不会触发任何可疑系统,并独立于操作系统。这一技术研究并不单单只是为了缓解恶意程序对于虚拟化环境的检测,而是致力于在深入研究相关检测技术的基础之上,有针对性的防范恶意程序入侵对虚拟化安全的威胁,为制定合理有效的对抗思路提供未来方向,甚至是让虚拟化环境变得更加“真实”,对于这一领域的前沿研究的推动和发展具有积极的指导作用。


针对以上的情况,云厂商可以做以下的一些缓解方案:


(1)采用 performance counter 进行监控,发现异常的 TLB、L1D 以及 LLC 的活动,进行及时报警。但是这个方法噪音很大,具有很高的误报率。


(2)进行二进制代码扫描,寻找可疑的代码片段。最后云厂商还可以采用定制机器的方式,对机器的 TLB 以及 cache 进行深度改造,从根本上消除这些方面的影响。


2020 年 8 月 11 日 16:381106

评论

发布
暂无评论
发现更多内容

重点人员动态管控系统开发,智慧公安平台搭建解决方案

WX13823153201

重点人员动态管控系统开发

产品训练营 第三次作业

Wangyunnfei

官宣了!Apache ECharts 毕业成为 Apache 软件基金会顶级项目!

百度Geek说

百度 基金会

托管节点池助力用户构建稳定自愈的 Kubernetes 集群

阿里巴巴云原生

Docker 容器 运维 云原生 k8s

程序员成长第一篇:机会与趋势

石云升

28天写作 2月春节不断更 机会与趋势

《我想进大厂》之Zookeeper夺命连环9问

艾小仙

zookeeper

Linux-Lab 入门:使用开发板

贾献华

嵌入式 Linux Kenel 开发板 arm boot

华为云FusionInsight助力宇宙行打造金融数据湖新标杆

华为云开发者社区

数据湖 云原生 存储 FusionInsight 华为云

Alibaba高并发业务秒杀系统落地实战文档,已实践某大型秒杀场景

Crud的程序员

Java 架构 高并发

ICE暴雪正悄悄崛起

DT极客

SpringCloud 从入门到精通15---Sentinel搭建和服务监控

Felix

MySQL安装教程&问题解决

Mars

MySQL 运维

数据库表数据量大读写缓慢如何优化(4)【分库分表】

我爱娃哈哈😍

数据库 架构·

HTTPS是怎么保证数据安全传输的?

云流

面试题 HTTP

挖矿区块链_什么是挖矿 带你详细了解挖矿基础知识

v16629866266

anyRTC2020年 年终总结

anyRTC开发者

音视频 WebRTC RTC sdk

说说常常被研发忽略的原型模式

后台技术汇

28天写作 2月春节不断更

关于自己的一个梦(飞翔)

Yuchen

华为18A架构师共享:Netty+Redis+zookeeper+高并发技术栈

996小迁

redis zookeeper 架构 Netty 高并发

玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定

YourBatman

Module IntelliJ IDEA Project Structure

Kafka基础简介

架构精进之路

kafka 七日更 28天写作 2月春节不断更

Idea工具的各种查找快捷键

小马哥

IntelliJ IDEA 七日更 2月春节不断更

用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得

四猿外

MQ RabbitMQ 消息队列

利用 Python 分析了某化妆品企业的销售情况,我得出的结论是?

JackTian

Python 数据分析 数据可视化 化妆品 2月春节不断更

极客时间产品训练营第三周作业

云随心

产品 作业 产品训练营

使用pgBackRest并行归档解决wal堆积问题

PostgreSQLChina

数据库 postgresql 开源 开源社区

即构自研海量有序数据网络MSDN,构建全球可靠的多云通讯链路

ZEGO即构

即日起 Jira、Confluence 正式停售本地版,中国客户将无法购买

万事ONES

项目管理 开发者 研发管理 团队协作 CTO

太全了!字节总监总结240道算法LeetCode刷题笔记

Crud的程序员

Java 架构 算法

【mybatis】- MyBatis基础篇

双木之林

EXCEL数据如何去重? Python:这事我比你熟

智分析

Python

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

解读论文:无需提权就能检测硬件虚拟化环境-InfoQ