免责声明
文章所涉及内容,仅供安全研究与教学之用,由于传播、利用本文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。
场景介绍
当攻击方成功拿下一台主机权限的时候,通常会对当前权限环境进行判断是否存在于容器或虚拟机内,了解当前环境的结构,尤其是云平台、超融合平台等集权系统的挂载宿主机,为权限横向扩展选择是否需要进一步逃逸出虚拟环境,获取更多攻击路线以及相关成果。
技巧细节
一、如何判断Linux目标是否存在于docker环境中
目前应该还没有什么方法能够100%准确判断虚拟环境是否由环境搭建容器,因为在高定制的容器下,可能会不存在一些特征性文件。如果的确存在于Docker环境,这时候需要考虑到如何逃逸出Docker控制实例(物理宿主机)。
1、判断根目录下是否存在 .dockerenv 文件
ls -alh /.dockerenv
docker环境中根目录下默认存在此文件:
注意:较高定制化的docker系统也可能没有这个文件!
2、查看系统进程的cgroup信息
cat /proc/1/cgroup
如果存在以上情况,则为docker环境。
二、判断主机是否为虚拟机
Linux系统下:
方法1、Hypervisor vendor属性相关信息
lscpu
出现如上图的情况,Hypervisor vendor属性为VMWare的为虚拟机,但不唯一,还会有KVM、Xen等不同虚拟模块的标识。
容器需要最先进行判断,因为容器本身并没有任何硬件虚拟化,在容器内所看到的硬件特性信息与宿主主机的信息相同,所以执行命令lscpu 的结果需要搭配容器环境的识别去做最后的判断,不能说 Hypervisor vendor 值为 KVM 就说明环境一定是 KVM 虚拟机,因为它也有可能是虚拟机内部署的容器。
方法2、命令system-product-name
物理机:
[root@swnode1]# dmidecode -s system-product-name
I840-GS
虚拟机:
[root@gnntdb DbBackup]# dmidecode -s system-product-name
VMware Virtual Platform
Windows系统下:
命令行环境下查看系统相关属性参数
cmd命令:
systeminfo
Powershell命令:
get-wmiobject win32_computersystem | fl model
物理机下的情况:
系统制造商: LENOVO
系统型号: 82JK
虚拟机下的情况:
系统制造商: VMware, Inc.
系统型号: VMware7,1
原文始发于微信公众号(划水但不摆烂):【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论