内容简介:2018年 第4篇 本文共4080字 预计阅读时间12分钟企业虚拟化技术的运用,帮助企业系统管理者摆脱了繁重的物理服务器、OS及兼容性的管理工作,也帮助企业节约了电力和冷却设备成本,同时也减少了空间占用,具有高利用率、高应用兼容性、高灵活性。有些公司大部分业务系统已经变成虚拟机+Docker形式的组合,操作系统和Docker本身采用虚拟机镜像方式部署,软件、业务依赖组件,业务定义等与业务相关属性采用容器镜像,既实现安全隔离又提升资源的高利用率。在享受着虚拟化的诸多好处的同时,我们可能还没有意识到,随着虚拟
2018年 第4篇 本文共4080字 预计阅读时间12分钟
作者简介
opop,中通快递信息安全工程师,主要负责中通快递信息安全事件的分析和应急处理,参与信息安全测评和安全加固,开展日常的风险评估工作和渗透测试工作。
企业虚拟化技术的运用,帮助企业系统管理者摆脱了繁重的物理服务器、OS及兼容性的管理工作,也帮助企业节约了电力和冷却设备成本,同时也减少了空间占用,具有高利用率、高应用兼容性、高灵活性。有些公司大部分业务系统已经变成虚拟机+Docker形式的组合,操作系统和 Docker 本身采用虚拟机镜像方式部署,软件、业务依赖组件,业务定义等与业务相关属性采用容器镜像,既实现安全隔离又提升资源的高利用率。
在享受着虚拟化的诸多好处的同时,我们可能还没有意识到,随着虚拟化技术的大规模应用,所面临的安全风险也已不同于往日了,虚拟化安全对于普通安全从业者往往显得晦涩难懂,但又随着网络攻防愈演愈烈而愈发重要。本篇文章会简单介绍虚拟化技术,梳理虚拟化技术在企业运维过程中存在的安全风险,并通过实践发现、解决这些安全风险。
1.企业虚拟化介绍
企业虚拟化大多是使用四种虚拟机管理程序(Hypervisor 又称Vmm)Xen、Kvm、Hyper-v、Vmware以及近几年很火的容器, 无论虚拟机还是容器,只是在不同的层面进行了虚拟化。其中Xen、Kvm、Docker是开源项目,Hyper-v属于微软,Vmware属于VMware公司,各种虚拟化机器管理程序所使用的虚拟化技术也有所不同,为了能帮助我们更好的了解企业虚拟化安全下面会简单介绍下虚拟化的几种技术。
1.1
虚拟化的几种技术
1.1.1 全虚拟化
全虚拟化(full virtualization)无需修改操作系统,如 vmware workstation、vmware esxi,全虚拟化在处理虚拟机操作系统中运行的特殊指令时进行拦截和模拟操作,保证相关操作被拦截在当前虚拟机中,缺点也出现在这里,所有特权指令都需要拦截和模拟消耗是很大的。图1展示了全虚拟化技术的结构。
图1.全虚拟化技术结构
1.1.2 半虚拟化
半虚拟化(para virtualization)需要对虚拟操作系统进行修改的称为半虚拟化,如 hyper-v,xen。
半虚拟化需要对GuestOS内核代码做一定的修改,加入与hypervisor协同的代码,通过这种方式半虚拟化无须进行捕获异常、翻译、模拟操作,进而弥补上述全虚拟化过多消耗资源的缺陷。图2展示了半虚拟化技术的结构。
图2.半虚拟化技术结构
1.1.3 硬件虚拟化 (CPU虚拟化)
简单的来说CPU厂商直接在芯片上提供了对虚拟化的支持,增加了新的执行模式让Hypervervisor(Vmm)运行在Root模式(Ring-1),GuestOs运行在Non-Root模式(Ring0), VMM通过一个位于内存的数据结构(Intel称为VMCS,AMD称为VMCB)来控制Guest OS与Host OS的交互,以完成整个平台的虚拟化,通过引入硬件技术,将使虚拟化技术更接近物理机的速度。
1.1.4 容器虚拟化
容器技术主要利用了 Linux 下的LXC技术来实现的,LXC主要是利用Linux的内核特性:命名空间和cgroups子系统。LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,namespace感觉像C++的namespace,就是在内核中可以拥有不同namespace的相同的进程id。容器相比与上面的那些虚拟化的主要区别在于容器提供的是运行环境,上面的那些提供的是操作系统,所以容器适用于Paas而上面的适合Iaas。效率上,容器比操作系统虚拟化要快。部署上,容器可以快速部署。现在主流的容器Docker的组成公式是 LXC+AUFS;LXC=cgroup+namespace+chroot。图3展示了Docker的构成。
图3. Docker的构成
2.企业虚拟化中的安全风险
我们将分层梳理虚拟化中的安全风险,从硬件接口,底层虚拟化技术,到虚拟化产品再到容器。图4展示了企业虚拟化中不同层面的安全风险。
图4.企业虚拟化中不同层面的安全风险
2.1
硬件接口层面
要有效管理和监控大量的物理服务器,管理员必须借助服务器提供的硬件管理接口和带外管理网络才能实现。例如,惠普的iLO接口,Dell和浪潮的IPMI接口,通过一个Web或Ssh界面,用户可以监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等,更重要的是可以装系统、开关机、查看操作服务器屏幕输出,就好比站在服务器面前。同样如果硬件接口层面出现安全问题其后果不堪设想,一台物理机上可能是N个业务虚拟机,入侵者在关键时间点关闭几台物理机可造成大面积业务瘫痪。
2.1.1
接口默认口令运维可能并不使用硬件管理接口导致仍是默认口令,常见产品默认口令见表1。
表1.常见硬件产品默认口令
产品名称 |
默认用户名 |
默认密码 |
Supermicro IPMI (2.0) |
ADMIN |
ADMIN |
Oracle/Sun Integrated Lights Out Manager (ILOM) |
root |
changeme |
BM Integrated Management Module (IMM) |
USERID |
PASSW0RD (with a zero) |
HP Integrated Lights Out (iLO) |
Administrator |
(null) |
Fujitsu Integrated Remote Management Controller |
admin |
admin |
Dell Remote Access Card (iDRAC , DRAC) |
root |
calvin |
ASUS iKVM BMC |
admin |
admin |
防护方法:
(1) 告知运维相关风险并设置强口令。
(2) 将以上密码纳到弱口令检测的列表中,周期性的进行安全巡检。
2.1.2 硬件接口漏洞
硬件接口是程序写的,同样会出现安全漏洞。如: HPE Integrated Lights-Out 4远程代码执行 (CVE-2017-12542),漏洞产生在逐行解析Header的函数中,处理Connection时使用了不安全的sscanf函数导致溢出(图:5、图6展示了相关溢出代码)。
图5.将参数str的字符串根据参数format字符串来转换并格式化数据
图6.Connection大小为16bytes
主机系统可以通过共享内存与iLO通信,且从主机系统请求Redfish API是不需要认证的,web服务器通过localConnection的布尔值来判断主机来源。利用该漏洞在headers中的'Connection'字段增加29个A即可伪造成localConnection从而绕过身份验证。
图7.利用该漏洞添加管理员账户
图8.利用添加的管理员账户登录web管理平台
防护方法:
(1)使用脚本对内网主机进行漏洞扫描(漏洞检测&利用的po c:https://github.com/skelsec/CVE-2017-12542/)。
(2)类似管理端口做好访问控制,限制内网访问权限。
(3)及时升级打补丁?在大部分企业都行不通,对于企业数据中心来说,保证可用性是第一位的。每个虚拟主机上都跑着几十上百个的虚拟客户机,使得管理员轻易不敢对虚拟主机任何变更操作。
2.2
底层虚拟化技术层面
Hypervisor(VMM)层面漏洞的杀伤力还是不容小觑的,如前几年Xen”破天”漏洞, 该漏洞存在于Xen Hypervisor的内存管理机制中, 漏洞利用简单危害巨大影响众多家云平台,具体漏洞细节可以查看阿里安全团队的文章:http://www.freebuf.com/vuls/83403.html。
图9.利用exploit获取HostOs root权限
防护方法:
(1)检查自身版本是否受影响 POC:https://blog.quarkslab.com/resources/2016-07-12_xsa-148/code/xsa148_exploit.tar.gz
(2)类似Hypervisor层面的漏洞可以考虑部署agent监控cpu指令的变化,发现从虚拟化穿透到宿主机的攻击行为。
2.3
虚拟化产品层面
如企业常用的VMware ESX/ESXI、VCenter也有不少值得关注的安全问题。至于如何发现企业中的VMware产品有两种方式,一种是通过端口扫描通过返回的banner判断是否为VMware服务,另一种是通过企业已有的cmdb导出相关资产列表。
2.3.1 openssl TLS/DTLS心跳信息泄露漏洞
Vmware产品的部分版本中的使用openssl 1.0.1,受Openssl心脏出血漏洞的影响。
受影响的版本列表如下:
ESXi 5.5 | VMware Horizon Workspace 1.0 |
NSX for Multi-Hypervisor Manager 4.0.x and 4.1.x | VMware Horizon Workspace 1.5 |
NSX 6.0.x for vSphere | VMware Horizon Workspace 1.8 |
NVP 3.x | VMware Horizon Workspace Client for Macintosh 1.5.1 |
vFabric Web Server 5.0.x – 5.3.x | VMware Horizon Workspace Client for Macintosh 1.5.2 |
VMware Client Integration Plug-In | VMware Horizon Workspace Client for Windows 1.5.1 |
VMware Fusion 6.0.x | VMware Horizon Workspace Client for Windows 1.5.2 |
VMware Player 6.0.x | VMware Horizon Workspace for Macintosh 1.8 |
VMware Workstation 10.x | VMware Horizon Workspace for Windows 1.8 |
VMware Horizon Mirage Edge Gateway 4.4.x | VMware OVF Tool 3.5.0 |
VMware Horizon View 5.3 Feature Pack 1 | VMware vRealize Automation (formerly known as vCloud Automation Center) 6.x |
VMware Horizon View Client for Android 2.1.x, 2.2.x, 2.3.x | VMware vCloud Networking and Security (vCNS) 5.1.3 |
VMware Horizon View Client for iOS 2.1.x, 2.2.x, 2.3.x | VMware Horizon View Client for Windows 2.3.x |
防护方法:
(1)检查自身版本是否在影响范围内。
(2)使用脚本进行漏洞扫描 如:nmap -p 443 --script ssl-heartbleed,ssl-known-key。
2.3.2 Vmware Java RMI远程代码执行漏洞
VMware vCenter Server的JMX远程接口配置中存在安全漏洞,远程攻击者通过该接口可注册受控的mbean,在system上下文中执行远程代码。可以使用Metasploit中的exploit/multi/misc/java_jmx_server载荷进行攻击。表2展示了受影响的版本。
表2.存在Vmware Java Rmi远程代码执行的版本
VMware Product | Version | Platform | Fixed Version |
VMware vCenter Server | 6 | Any | 6.0 u1 |
VMware vCenter Server | 5.5 | Any | 5.5 u3 |
VMware vCenter Server | 5.1 | Any | 5.1 u3b |
VMware vCenter Server | 5 | Any | 5.0 u3e |
防护方法:
(1) 检查自身版本是否在影响范围内。
(2) 使用脚本对内网主机进行漏洞扫描(漏洞检测&利用的poc https://github.com/penoxcn/VMware/tree/master/rmi)。
(3)评审是否需要开启jmx远程接口功能,如非必要可关闭jmx远程接功能。
2.4
容器层面
2.4.1 映射目录
Docker允许用户在Host和Container之间共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。例如,假设有用户启动容器时将主机的根目录/映射到容器的/host目录中,那么理论上在容器中就可以对主机的系统进行任意修改。
防护方法:
(1) 检查需要映射的目录是否敏感,是否可以被利用。
(2) 对于需要映射但不需要修改的文件可以指定为只读用ro,docker run -it -v xxx:xxx:ro 。
2.4.2 未授权访问(web/api)
Docker Swarm 是一个将Docker集群变成单一虚拟的Docker Host工具,使用标准的Docker API,能够方便Docker集群的管理和扩展,由Docker官方提供。当Docker Swarm Manager运行时,默认监听2375端口,并等待外部连接使用Docker API来操纵Docker,类似的还有Kubernetes的API接口。通过此类接口未授权访问的安全问题,我们可以新建 container,删除已有 container,通过启动容器并挂载敏感目录甚至可以获取宿主机的 shell。图10展示了公司在用的”某企业级Kubernetes管理平台”web及API均未授权访问。
图10.在用的”某企业级Kubernetes管理平台”web及API均未授权访问
防护方法:
(1) 限制API/WEB的访问权限
(2)增加API/WEB认证
2.4.3 Breakout
Docker项目的核心技术和Linux Kernel息息相关,而Linux Kernel软件一直受安全漏洞影响,那么Docker容器同样会被Linux Kernel的安全漏洞所影响,并且使用一个高威胁的Linux Kernel安全漏洞,攻击者甚至可以从Docker容器上下文进入宿主机上下文。这种上下文的切换称为Breakout,当切换完成后,攻击者可以在宿主机中执行任意命令。
Docker容器可以被Breakout攻击并不能说明Docker产品有缺陷,因为Linux Kernel的安全漏洞可以影响Linux生态中的方方面面,不单是Docker产品。
防护方法:
(1) 及时修复Linux Kernel的安全漏洞。
3.总结
虚拟化给企业的数据中心带来了高效的运维和不错的经济效益,但是也引入了与以往不一样的安全威胁与风险。本篇主要带大家了解了企业虚拟化中各个环节中的安全风险,硬件接口、底层虚拟化、虚拟化产品、容器每个环节的安全问题都非常致命,希望运维、安全工程师看了本篇文章后能有所启发。
参考资料:
-
https://www.synacktiv.com/ressources/recon_bx_2018_ilo4_perigaud_gazet_czarny.pdf Subverting your server through its BMC: the HPE iLO4 case
-
http://www.freebuf.com/vuls/83403.html “破天”:Xen虚拟化平台虚拟机逃逸漏洞分析
-
https://www.cnblogs.com/IvanChen/p/5038306.html 理解全虚拟、半虚拟以及硬件辅助的虚拟化
-
http://www.freebuf.com/articles/es/164792.html 浅谈企业虚拟化环境的安全风险与渗透测试方法
-
《云虚拟化安全攻防实践》
中通安全应急响应中心
团队介绍
中通信息安全团队是一个年轻、向上、踏实以及为梦想而奋斗的大家庭,我们的目标是构建一个基于海量数据的全自动信息安全智能感知响应系统及管理运营平台。我们致力于支撑中通快递集团生态链全线业务(快递、快运、电商、传媒、金融、航空等)的安全发展。我们的技术栈紧跟业界发展,前有 React、Vue,后到 Golang、Hadoop、Spark、TiDB、AI 等。全球日均件量最大快递公司的数据规模也将是一个非常大的挑战。我们关注的方向除了国内一线互联网公司外,也关注 Google、Facebook、Amazon 等在基础安全、数据安全等方面的实践。
加入我们
如果您对我们的团队或者我们做的事有兴趣,也希望在工程技术领域有所成就,非常欢迎加入我们,我们需要信息安全、分布式平台开发、大数据、风控、产品、运营等方面的人才,Base上海,工作地点任选虹桥万科中心及中通总部。简历投递地址:security@zto.cn。
点击「阅读原文」可查看更多岗位信息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 虚拟化生态系统及实现从虚拟化走向云端
- KVM虚拟化技术(一)虚拟化简介以及按安装
- 云计算技术分享之桌面虚拟化中的3D虚拟化解决方案经验总结
- 虚拟化技术介绍
- 了解虚拟化硬件支持
- 如何探测虚拟化环境是物理机、虚拟机还是容器?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。