Docker 容器识别
目录
想研究的课题是容器的渗透,一大方向就是容器逃逸。那么逃逸前自然需要判断是否处在容器中。那么就需要了解容器有哪些特征。假设进入一台远程服务器,通过何种手段开源判断此环境是否在容器之中。
容器虚拟技术有很多,最主流的就是 Docker,也比较方便搭建实验环境。所以就先研究 Docker 的容器特征。手边刚好有 Docker 环境、WSL 环境(Kali)、阿里云 ECS(CentOS)和 Hyper-V 虚拟机(Kali)四种环境可以拿来做对比实验,VMWare 我电脑上暂时没安装,就忽略了。
1 查看文件
1.1 查看/proc/1/cgroup 文件
可以查看/proc/1/cgroup 文件,也可以看/proc/self/cgroup。
|
|
两个指令作用相似,都是查看 cgroup 信息,如果出现 docker 字样,就说明当前环境可能在 Docker 容器中。
1.2 查看/proc/1/status 文件
|
|
1.3 查看.dockerenv 文件
Docker 容器在根目录下可能存在一个名为.dockerenv 的文件,该文件通常为空,作用是作为容器的标志文件。
|
|
2 查看系统信息
2.1 查看 mount 信息
|
|
Docker 环境通常显示 overlay 文件系统。
2.2 查看块设备
|
|
容器内默认无块设备。
2.3 查看硬盘信息
|
|
容器一般默认没有分区。
2.4 查看文件系统以及挂载点
|
|
3 使用工具
3.1 通过 systemd-detect-virt 指令
|
|
但 Docker 容器里面通常没有 systemd 进程,所以可能无法正常使用该指令。