电子数据取证每日一练-服务器取证5-docker容器

文摘   2024-08-10 20:18   河北  

电子数据取证每日一练

    本栏目主要是针对比赛题目进行分析和解题思路分享,只进行知识分享,不具一定的实战能力,后台不解答涉及可能侵害他人权利的问题,切勿用于违法犯罪活动。如果有工作方面的解答需求,请后台联系添加微信私聊。

2022年长安杯服务器部分-docker容器

上一期内容:电子数据取证每日一练-服务器取证4

案情介绍

某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用“USTD 币”购买所谓的“HT 币”,受害人充 值后不但“HT 币”无法提现、交易,而且手机还被恶意软件锁定 勒索。警方根据受害人提供的虚拟币交易网站调取了对应的服务器镜像并对案件展开侦查。

长安杯前面两个服务器的内容涉及到了jar-web网站的构建,主要是对jar包中网站的结构进行了解,从而进一步完成服务器网站的取证工作。这次涉及的知识点主要是针对docker容器的服务器取证。docker容器用于服务器服务部署相对来说要简单和高效一些,因此也是近几年来取证比武或者比赛常见的考试题型。

地址:后台发送电子数据取证每日一练

赛题和工具网盘地址:后台发送电子数据取证每日一练可以得到题目和工具(不分享企业厂商工具)

学习目标:了解docker的常用指令,了解docker部署的原理

使用工具(在网盘地址中提供):Arsenal Image Mounter、X-ways、Winhex、VMware Workstation、Finallshell

难度:简单难度

题目一览

19. 检材3服务器root账号的密码是

20. 检材3中,监听33050端口的程序名(program name)为

21. 除MySQL外,该网站还依赖以下哪种数据库

22. 检材3中,MySQL数据库root账号的密码是

23. 检材3中,MySQL数据库在容器内部的数据目录为

24. 涉案网站调用的MySQL数据库名为

本题所需知识点

1.docker容器的存储

Docker 容器的存储映射主要涉及将容器内部的文件系统与主机文件系统相连接,以便持久化数据和共享文件。常见的存储映射方式有两种:

  • 卷(Volume):Docker 卷是一种由 Docker 管理的存储,可以将其挂载到一个或多个容器中。卷独立于容器生命周期,即使容器被删除,卷中的数据仍然存在。创建和使用卷的方式如下:

docker volume create my_volume
docker run -v my_volume:/path/in/container my_image

这里的 my_volume 是卷的名称,/path/in/container 是容器内部的挂载路径。

  • 绑定挂载(Bind Mounts):绑定挂载将主机文件系统中的目录或文件直接挂载到容器内部。与卷不同,绑定挂载允许你指定主机上的任意路径。创建和使用绑定挂载的方式如下:

docker run -v /path/on/host:/path/in/container my_image

这里的 /path/on/host 是主机上的路径,/path/in/container 是容器内部的路径。

可以通过以下方式查看 Docker 容器中存储映射的地址:

1.使用 docker inspect 命令:

这个命令可以显示关于容器的详细信息,包括卷和绑定挂载的映射地址。

docker inspect <container_name_or_id>

在输出中,查找 Mounts 字段,其中会列出所有挂载的卷和绑定挂载的信息,包括主机路径和容器路径。例如:

"Mounts": [
  {
       "Type": "volume",
       "Name": "my_volume",
       "Source": "/var/lib/docker/volumes/my_volume/_data",
       "Destination": "/path/in/container",
       "Driver": "local",
       ...
  },
  {
       "Type": "bind",
       "Source": "/path/on/host",
       "Destination": "/path/in/container",
       ...
  }
]

2.查看容器的运行配置:

如果你是在运行容器时指定了卷或绑定挂载,可以通过docker ps命令查看正在运行的容器,然后使用 docker inspect查看特定容器的详细信息。

3.查看卷的具体路径:

如果你使用了卷,并且想查看卷在主机上的具体存储位置,可以使用以下命令来定位:

docker volume inspect <volume_name>

这会显示卷的详细信息,包括其在主机上的实际存储路径(通常在 /var/lib/docker/volumes/ 目录下)。

4.查看配置文件

在 Docker Compose 文件(通常是 docker-compose.yml)中,存储映射通常在 volumes 部分定义。

以下是如何在 Docker Compose 文件中查看存储映射地址的示例:

version: '3'
services:
web:
  image: nginx
  volumes:
    - ./html:/usr/share/nginx/html
    - data_volume:/var/lib/data
  ports:
    - "8080:80"

volumes:
data_volume:

在这个例子中:

./html:/usr/share/nginx/html是一个 绑定挂载,将主机当前目录下的 html 文件夹映射到容器的/usr/share/nginx/html路径。./html是主机路径,/usr/share/nginx/html是容器内的路径。data_volume:/var/lib/data是一个 卷,其中 data_volume 是卷的名称,/var/lib/data 是容器内的挂载路径。

通过查看 Docker Compose 文件,你可以直接看到这些路径的映射关系。


2.docker常用指令

注意容器和镜像不一样!!!

Docker 容器管理命令

以下是常用的 Docker 容器管理命令,包括一些具体用法的示例:

  1. 列出运行中的容器  

    docker ps

    列出当前正在运行的所有容器。

  2. 查看所有容器(包括未运行的容器)  

    docker ps -a

    显示所有容器的列表,包括已停止的容器。

  3. 停止容器  

    docker stop <container_id_or_name>

    停止指定的容器,例如:

    docker stop my_container
  4. 强制停止容器  

    docker kill <container_id_or_name>

    强制终止运行中的容器,例如:

    docker kill my_container
  5. 启动已停止的容器  

    docker start <container_id_or_name>

    启动一个已经停止的容器,例如:

    docker start my_container
  6. 查看容器的详细信息  

    docker inspect <container_id_or_name>

    查看容器的所有配置信息和状态,例如:

    docker inspect my_container
  7. 查看容器日志  

    docker logs <container_id_or_name>

    显示容器的输出日志,例如:

    docker logs my_container
  8. 查看容器中的进程  

    docker top <container_id_or_name>

    列出容器内部正在运行的进程,例如:

    docker top my_container
  9. 查看容器的基本信息  

    docker container ls

    显示所有正在运行的容器的基本信息,包括容器 ID、镜像、状态和端口等。例如:

    docker container ls

    这个命令类似于 docker ps,可以显示容器的 ID、镜像名称、创建时间、状态、端口映射等信息。

  10. 进入容器的交互式终端  

    docker exec -it <container_id_or_name> /bin/bash

    进入容器的 Bash 终端,进行交互式操作,例如:

    docker exec -it my_container /bin/bash
  11. 退出容器  当你在容器内操作完成后,可以使用 exit 命令退出终端:

    exit
  12. 删除已停止的容器  

    docker rm <container_id_or_name>

    删除一个已停止的容器,例如:

    docker rm my_container
  13. 强制删除正在运行的容器  

    docker rm -f <container_id_or_name>

    强制删除一个正在运行的容器,例如:

    docker rm -f my_container

Docker 镜像管理命令

以下是一些常用的 Docker 镜像管理命令及其使用示例:

  1. 搜索镜像  

    docker search <image_name>

    在 Docker Hub(或其他镜像仓库)中搜索相关镜像,例如:

    docker search nginx
  2. 拉取镜像  

    docker pull <image_name>[:tag]

    从仓库中拉取镜像,不指定 tag 时默认拉取最新版本,例如:

    docker pull mysql

    或拉取特定版本的镜像:

    docker pull mysql:8.0.33
  3. 列出已下载的镜像  

    docker images

    列出本地已下载的所有 Docker 镜像。

  4. 删除镜像  

    docker rmi <image_id_or_name>

    删除指定的 Docker 镜像,例如:

    docker rmi nginx
  5. 强制删除镜像  

    docker rmi -f <image_id_or_name>

    强制删除镜像,例如:

    docker rmi -f nginx
  6. 构建镜像  

    docker build -t <image_name> .

    从当前目录的 Dockerfile 构建镜像,并命名为 <image_name>,例如:

    docker build -t my_custom_image .

启动 Docker 镜像

一旦确定了要启动的 Docker 镜像,可以使用 docker run 命令来启动它。通常的格式是:

docker run [选项] <镜像名> [命令] [参数]

示例:

  • 启动一个 Nginx 容器,并将容器的 80 端口映射到主机的 8080 端口:

    docker run -d -p 8080:80 nginx
  • 启动一个交互式的 Ubuntu 容器,并进入 Bash 终端:

    docker run -it ubuntu /bin/bash

根据配置文件启动容器

如果你有一个 Docker Compose 文件(docker-compose.yml),可以使用以下命令根据配置文件启动容器:

docker compose up -d

这个命令会根据 docker-compose.yml 文件中的定义启动所有相关服务,并在后台运行(-d 表示后台模式)。

题目解析

根据网站前端和技术员个人电脑上的线索,发现了网站后端所在的服务器IP并再次调证取得“检材3”,分析所有掌握的检材回答下列问题

通过第12题答案,解压检材3(见服务器4)

19.检材3服务器root账号的密码是
root:$6$wpPsHKOm$0OzqLIL8TB/jajCLMgfghcTxH2TrawqJFgeqm5bvsTQZya3Zl5haeIgKYxtMXd9vEhH7uxLP6lUqJklTZTuyG/

用hashcat破解一下得到

20.检材3中,监听33050端口的程序名(program name)为

前面几期服务器的内容也提到过,一般来说想要重构网站,可以通过查看bash的历史记录,看看有没有构建网站的方式。

这里选择使用脚本(脚本在前面windows检材里面)开启网站后,再查看监听端口:在历史记录中找到开启的记录,脚本还是在检材二里面

还有docker容器,也要打开看一下,有可能是数据库

查看docker镜像发现有mysql数据库

把脚本放到目录下面,然后提升权限,运行脚本,开启网站(如果不给脚本授权,网站是无法重建的)

使用指令查看linux的开放端口

发现监听33050的是docker(这里是将33050端口映射到了数据库的端口)

21.除MySQL外,该网站还依赖以下哪种数据库

根据题目得知,可以知道检材3是检材1的数据库服务器,所以一些配置信息可以从检材1那里看到

方法一:看历史记录,找到redis和mongoDB数据库

方法二:查看检材一的配置文件(建议使用这个)

还是看检材1(电子数据取证每日一练-服务器取证4)的jar包配置文件,因为这个配置文件是用户自定义的内容

网站的配置文件中使用了mysql、redis和mongoDB这三种数据库

22.检材3中,MySQL数据库root账号的密码是

因为mysql是在docker里面,所以需要进入到docker里面查看配置(docker的文件都是会映射到本地地址的),看docker的配置文件,不在默认位置的话,可以使用递归浏览

23.检材3中,MySQL数据库在容器内部的数据目录为

这里建议使用虚拟机本地连接docker,ssh可能存在网络配置问题而连接不进去

这里ssh没有连接进去

本地连接成功

方法一:搜索,进入到docker里面之后搜索

find -name *.frm

方法二:在上面的配置文件中可以找到是/var/lib/mysql

24.涉案网站调用的MySQL数据库名为

涉案网站不是后台网站,而是7000端口的那个,所以要从market的jar包里面查看配置文件

发现是b1这个数据库,但是发现在检材3中并没有b1这个数据库,因此这里要进行数据库恢复,而数据库在windows的检材中看到过

辅助证明:查看日志,找到删库记录

总结

这套题目主要是了解docker的内容以及常用的指令,简单一些的题目可能涉及一到两个docker,复杂一些的服务器重建可能涉及到十多个docker容器或者镜像,所以掌握好docker的一些基本技能包括:容器与主机的资源共享、镜像构建与管理、容器生命周期、网络配置以及存储管理等。才能在比赛的时候更快的做出答案。


往期内容推荐

服务器取证部分

电子数据取证每日一练-服务器部分1

电子数据取证每日一练-服务器部分2

电子数据取证每日一练-服务器部分3

电子数据取证每日一练-服务器取证4

windows取证部分

电子数据取证每日一练-windows取证

电子数据取证每日一练-windows取证2

电子数据取证每日一练-windows取证3

安卓手机取证部分

电子数据取证每日一练-安卓手机
电子数据取证每日一练-安卓手机2

ios手机取证部分
电子数据取证每日一练-ios取证
流量取证部分
电子数据取证每日一练-流量取证
手工仿真系列

通过修改 shadow 的方式实现 Linux 绕过密码仿真

windows10仿真及绕密


金星路406取证人
这是位于大兴区黄奕路金星406的取证爱好者,这是一个致力于学习电子数据取证的团体~~
 最新文章