Docker取证小tip

前言

我认为Docker最大的优势在与可以将整套项目封装打包起来,实现一键部署,分分钟钟搞定,极大的节省项目环境部署时间,而针对Docker容器的取证工作,主要涉及几个方面:容器的配置、运行状态、文件系统、网络通信、进程等方面

正文

首先看一下Docker的文件结构,使用一种称为联合文件系统的技术来高效地管理容器的文件系统,主目录位置在/var/lib/docker,其中包含了Docker镜像、容器和其他组件的数据

镜像存储的目录位置在/var/lib/docker/containers里面,这个目录每个容器都有一个对应的子目录,其中包括容器的日志文件、配置文件以及其他与容器相关的数据等

其他文件和目录:
/var/lib/docker/swarm:如果 Docker Swarm 模式被启用,这里会存储集群相关的数据,比如证书
/var/lib/docker/bundles:这个目录用于存储 Docker Swarm 模式下的服务信息
/var/lib/docker/buildkit:如果启用了 BuildKit 构建功能,那么这个目录将用于存储 BuildKit 的数据
/var/lib/docker/tmp:临时文件存储目录,用于存放 Docker 运行过程中产生的临时文件
(不再一一截图了)

查看正在运行中的容易

1
docker ps

查看所有容易,包括停止的

1
docker ps -a

根据条件筛选查询

1
docker ps --filter <筛选条件>

指定查看某个容器详情

1
docker inspect <container_id>/<name>

指定查看某个容器的日志

1
docker logs <container_id>

查询容器实时状态,实时显示容器资源使用情况

1
docker stats <container_id>

列出所有镜像信息

1
docker images

显示磁盘使用情况

1
docker system df

现场取证可以备份打包容器文件系统,后续可再使用x-ways、法证通等取证工具解析

1
docker export <container_id> > ****.tar

进入容器,可进行文件目录查看,进程查询,以及网络连接情况等操作

1
docker exec -it <container_id> /bin/bash 或 sh

查看文件系统更改(A: 表示新增的文件或目录。D: 表示删除的文件或目录。C: 表示修改过的文件或目录。)

1
docker diff id

查看容器网络连接

1
docker exec -it <container_id> netstat -tuln

查看网络接口信息

1
docker inspect <container_id> | jq '.[0].NetworkSettings'

如果没有jq 则在整个inspect输出中查找网络接口信息即可

查看容器内进程信息

1
2
docker exec -it <container_id> ps aux
docker exec -it <container_id> ps -ef

Docker取证小tip
http://example.com/2024/03/20/Docker取证小tip/
作者
liuty
发布于
2024年3月20日
许可协议