【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

admin 2023年11月24日14:55:08评论9 views字数 1163阅读3分52秒阅读模式

免责声明

文章所涉及内容,仅供安全研究与教学之用,由于传播、利用本文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。

场景介绍

当攻击方成功拿下一台主机权限的时候,通常会对当前权限环境进行判断是否存在于容器或虚拟机内,了解当前环境的结构,尤其是云平台、超融合平台等集权系统的挂载宿主机,为权限横向扩展选择是否需要进一步逃逸出虚拟环境,获取更多攻击路线以及相关成果。

技巧细节

一、如何判断Linux目标是否存在于docker环境中

目前应该还没有什么方法能够100%准确判断虚拟环境是否由环境搭建容器,因为在高定制的容器下,可能会不存在一些特征性文件。如果的确存在于Docker环境,这时候需要考虑到如何逃逸出Docker控制实例(物理宿主机)。

1、判断根目录下是否存在 .dockerenv 文件
ls -alh /.dockerenv

docker环境中根目录下默认存在此文件:

【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

注意:较高定制化的docker系统也可能没有这个文件!

2、查看系统进程的cgroup信息
cat /proc/1/cgroup
【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

如果存在以上情况,则为docker环境。

二、判断主机是否为虚拟机

Linux系统下:

方法1、Hypervisor vendor属性相关信息
lscpu
【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

出现如上图的情况,Hypervisor vendor属性为VMWare的为虚拟机,但不唯一,还会有KVM、Xen等不同虚拟模块的标识。

【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

容器需要最先进行判断,因为容器本身并没有任何硬件虚拟化,在容器内所看到的硬件特性信息与宿主主机的信息相同,所以执行命令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
【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

Windows系统下:

命令行环境下查看系统相关属性参数
cmd命令:
systeminfo

Powershell命令:
get-wmiobject win32_computersystem | fl model

物理机下的情况:

系统制造商:       LENOVO
系统型号:         82JK
【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

虚拟机下的情况:

系统制造商:       VMware, Inc.
系统型号:         VMware7,1
【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)


原文始发于微信公众号(划水但不摆烂):【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月24日14:55:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【攻防小词条04 | 攻防技巧】探测虚拟环境与逃逸突破(一)https://cn-sec.com/archives/2236496.html

发表评论

匿名网友 填写信息