基于Docker的取证方法研究

(整期优先)网络出版时间:2023-11-10
/ 2

基于Docker的取证方法研究

李明硕1 孟雨1 辛盼盼1 谭东宁2 刘荣欣2

(1杭州平航科技有限公司,浙江杭州310000

2湛江公安司法鉴定中心,广东湛江524000)

摘要Docker是当前最受欢迎的容器技术开源项目,在云计算、大数据、人工智能、互联网金融、物联网等诸多领域有着广泛的应用, 针对Docker的网络攻击行为也越来越多,此外,一些不法网站也开始使用Docker技术进行部署。然而,Docker的便利在打击涉网违法犯罪方面给侦查取证带来了挑战,目前还没有可供取证使用的工具和方法。本文结合实际案例分析阐述了Docker环境下的调查取证问题,研究了针对Docker环境进行取证工作的相关技术,为Docker环境的取证分析提供智力支持。

关键词Docker;电子取证;刑事技术;

1背景

近些年随着互联网技术的进步发展,在原有实体硬件服务器基础上,逐渐发展出云服务器相关技术,借助云计算等APP一键制作技术成就了很多公司以及企业,小团队的事业和梦想,但是技术野蛮生长的同时,必然会有阴暗的地方,犯罪份子使用云服务器,花费很低的成本即可打包数个APP并以此实施诈骗以及其他犯罪活动,受害者损失几万、几十万、成百千万比比皆是,而更换APP固然简单,但其关联的后台服务器多采用云服务器甚至采用容器技术,使得犯罪技术难度和门槛进一步降低。这就需要我们对服务器以及APP进行深度分析,在海量数据中寻找犯罪分子留下的蛛丝马迹,在我们掌握了 Docker 相关取证方法后,能够更好地发掘这类电子数据中的有效证据,打击网络犯罪。

2介绍

Docker[1]设想是如同海运一样的交付运行环境,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的App)。这也就是基于Docker的Paas产品的原型。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,容器是利用Docker容器构建的一个虚拟环境,可以理解为一个Linux的自给自足的完整系统;使用Docker有什么好处呢?举个例子,服务器里面很多存在多个服务、多个框架多个站点,在配置站点服务和框架时怎么确保安全隔离,这就需要一个容器保证不出现问题,这就需要说到Docker,它方便我们对于应用服务之间的隔离,并且方便打包后更换服务器再次进行部署,可以说非常方便,在取证过程中我们也会遇到较多此类案例。

3 Docker取证关注点

Docker容器作为一种轻量级且具有分层结构的虚拟环境,在取证方法上与传统主机及虚拟环境存在一定的差异[2]。在Docker主机上进行取证分析时要考虑Docker容器的特殊性及具体细节,主要包括文件存储、配置信息、容器日志这几个方面。具体如下:

3.1容器

容器挂载的数据卷[3]、容器的运行情况、容器的基本信息(容器ID、名称、镜像、启动命令端口等)。

3.2镜像

镜像[4]与容器的对应关系,镜像的基本信息(镜像ID、名称、版本、大小、数量等。)镜像里面包含多种文件层级,名为UnionFs(联合文件系统)。可将每层目录挂载,形成虚拟文件系统。和Linux目录结构相似,Docker通过这样得文件系统再加上宿主机的内核提供了一Linux的虚拟环境。每层文件系统叫做做layer,每一层文件系统可设置三种权限,只读(readonly)读写(readwrite)和写出(whiteout-able),对于Docker中每层文件系统都是只读。

当我们运行命令:sudoDockerpullubuntu时,将从Dockerhub上下载一个ubuntu的镜像我们可以分析下这个镜像存放在宿主机的具体路径,如图1所示。

图1 下载ubuntu镜像文件

安装docker时,默认位置是var/lib/docker,可以查看该路径下的所有文件及数据,如图2所示:

图2 查看Docker目录

运行命令cdcontainers进入容器,每当Dockerrun一次就会多一次记录,里面存放了容器的各个配置信息,如图3所示:

图3 列出Docker容器配置信息

其中容器配置文件对应其内容如图4所示:

图4 容器配置信息

tmp是docker临时目录,trust是信任目录,一般情况下两者都为空。

Image 下Overlay2这个目录比较重要,所有的Docker pull **都在此处存放,如图5所示。

图5 Overlay2目录

我们详细查看一下repositories.json文件,可以看到其中存放的是Dockerpull文件,如图6所示:

图6 镜像hash值

Volumes(数据卷)用于提供一个容器或者多个容器的特殊目录,可以将主机操作系统直接映射到容器,以此实现持久化数据保持。可以在容器卷中创建一个数据卷或挂载一个主机文件作为数据卷。在运行Dockerrun命令时,使用-V可在容器中创建数据卷,多次重复即可创建多个。如果容器中MySOL有未知密码,可以通过修改配置文件,跳过密码验证,直接回车进入。具体步骤如下:                                                                      

1)首先用vim编辑MySOL配置文件,如果MySQL镜像没有vim命令则需要更新apt-getupdate,安装vim的命令为apt-getinstalvim。

2)进入目录编辑vim/etc/MySQL/conf.d/Docker.cnf,添加skip-grant-tables保存并退出,如图7所示。

图7 MySQL配置文件

3)重启数据库,运行命令Dockerrestart 容器ID;

4)使用it参数的命令进入,Dockerexec-it容器 id/bin/bash,然后使用 MySQL-uroot-p直接回车进入。

4服务器实例取证

下面以某引流刷单诈骗案件调证得到的一个服务器镜像为例,经过前期勘查发现通过常规手段无法直接访问数据库,需要启动服务器中的Docker容器后才能正常访问。具体取证步骤如下。

1. 使用仿真软件对服务器镜像进行仿真。

2. 仿真成功后使用命令ifconfig查看该服务器虚拟机中服务器的ip地址,使用命令netstat-Intp查看sshd端口,初步对服务器进行分析。

3. 分析到服务器有Docker,并且数据库在Docker容器中,启动该容器。

4. 启动容器后后,再次使用Dockerps-a查看容器的配置信息,确认容器的3306端口映射到了服务器的3310端口。

5. 一般来讲我们直接找到源码配置文件,里面会存有数据库的账号密码,但是这个服务器容器的数据库对应的并不是这个服务器的网站,而极有可能是遗留的数据信息,于是我们修改容器中的数据库root密码来进行访问,容器的数据库配置文件不是找my.cnf,而是需要找Docker.cnf。首先我们先使用命令Dockerexec-it1fc110c6b336/bin/bash进入容器,然后使用find命令找到该文件。

6. 试安装VIM需要用到命令apt-getupdate,apt-getinstalvim,安装多次出现失败,重启虚拟机无果,使用Dockercp把该文件复制出来进行修改。

7. 在最后一行添加skip-grant-tables保存,使用Dockercp回到容器原位置,并重启容器。

8. 重启容器后使用mysql-uroot-p登录直接按确认键成功登录数据库。

9. 使用Navicat数据库分析工具可直接通过ssh登录数据库,因为我们已经跳过了登录验证因此也不需要修改密码,在填写Navicat登录信息的时候,密码留空即可直接访问数据库。

至此,通过对服务器镜像进行仿真后启动Docker容器,成功连接到数据库,为下一步的取证研判工作打下坚实的基础。

5总结

由于Docker有小巧、灵活、方便部署、资源占用少等特点,许多web服务都采用了Docker技术,本文通过案例复原Docker环境拿到数据,从整个流程可以看出,对于Docker容器的熟悉程度关系到了我们证据链的完整获取,更熟练的使用Docker容器对后续案件侦办提供了更多的可能性。

参考文献

[1]李鹏超,周凯.基于Docker容器的电子数据取证方法[J].吉林大学学报(理学版),2019,57(6).

[2]王鹃,胡威,张雨涵.Docker的可信容器[J/OL].武汉大学学报(理学版),2017,63(2).

[3]华为Docker实践小组.Docker进阶与实战[M].机械工业出版社,2016:313-354.

[4]王远征,肖波,齐凌飞.Docker取证方法研究[C].湖北省公安厅电子数据鉴定中心,2017.

作者联系方式

手机:18814103635

邮箱:420645131@qq.com

地址:广东省湛江市北站路37号湛江公安司法鉴定中心