内存取证原理与实践
上QQ阅读APP看书,第一时间看更新

前言

中国互联网信息中心最新发布的《中国互联网络发展统计报告》指出,截至2017年12月,我国网民规模达7.72亿,普及率达到55.8%;移动网络促进“万物互联”,移动支付使用不断深入,互联网理财用户规模增长明显;网络娱乐用户规模持续高速增长;六成网民使用线上政务服务;数字经济繁荣发展,电子商务持续快速增长。可以说,信息技术每天都在改变着我们的生活,人们对信息技术的依赖程度也越来越高。

现代信息技术给人们的工作和生活带来便利的同时,也不可避免地引发了各种负面问题,尤其是利用网络和信息而引发的各类犯罪行为呈现逐年增长的多发态势,如窃取国家机密、泄露个人隐私、盗窃网银密码、网络诈骗、黑客攻击之类的事件层出不穷,与之相关联的刑事、民事、行政案件或纠纷也大幅增长。为适应这类案件或纠纷的诉讼需要,计算机取证(数字取证、电子取证)应运而生。

计算机取证是用计算机、通信、电子等相关学科中的原理和方法,按照符合法律规范的方式识别、保存、分析和提交电子证据的过程。计算机取证在中国已有十几年的发展历史,在实际工作中已经被政府执法部门、法律界从业者和广大执法人员认可,积累了大量的经验并且取得了相当多的成就。目前,国内有很多学术团体从事这一方向的研究工作,许多公安、政法类院校也开设了计算机侦查和计算机取证专业;产品和技术方面,由最早主要使用国外技术和产品,逐渐涌现出一批符合国内取证调查实际的具备自主产权的产品;在商业领域,也有越来越多的企业开始重视应用计算机取证技术进行企业内部调查和IT审计。可以说,计算机取证技术是一个迅速发展的研究领域,有良好的应用前景。特别是在2012年新的刑事诉讼法对“电子数据”的法律地位加以独立规定后,计算机取证技术的重要性显得更为突出。

本书编者所在研究团队是国内较早进行计算机取证研究的学术团体之一,从事计算机取证方面的研究与实践工作已有十余年。特别是在内存取证方向上,突破了一些关键核心技术,取得了一些具有领先水平的科研成果,开发的多个软硬件产品在相关国家部门中得到配装,在维护国家安全、打击犯罪的实战中发挥了作用。本书详细讨论了近些年计算机取证技术中最热门并极富挑战性的一个方向:内存取证技术。通过本书,我们希望能够比较全面地介绍内存取证技术,并且与读者分享在内存取证实践上的经验和成果,以期读者对内存取证这一方向有所了解和启发,并且将其应用在自己的研究与工作中。

本书的研究对象是内存(RAM)中的数据。传统的计算机取证主要针对存储在各种介质中的静态数据,而内存取证研究的是内存中的动态信息。这些信息在系统运行时会经常产生变化,在关机和重启机器后会丢失,因此也被称为易失数据。

为什么要做内存取证?因为在内存中,分析人员可以看到操作系统正在做的几乎所有事情。当内存块没有被覆盖时,很多曾经发生的事情的信息也同样被保留在内存中。内存中存在很丰富的信息,包括进程和线程、网络连接、打开的文件、剪贴板、用户生成的密码、硬件和软件的配置、操作系统日志和注册表等。而且,很多磁盘中没有的信息,在内存中都可以获取和分析出来,如恶意软件,加密、解密应用的密钥等。有了这些信息,就可以关联其他数据,得到更多有用的结果。

本书首先概述了内存取证的背景、起源、发展、作用和局限,随后简单介绍了Intel和ARM硬件架构、硬件内存管理(MMU,Memory Management Unit)、地址空间、地址转换等内存取证中需要了解的一些基础知识。

内存取证是从稳定和完整地获取RAM内存的镜像开始的。第3章给出了获取各种系统内存数据的软硬件方法,详细介绍了各方法的原理和实现,并对常用的一些工具做了简单介绍。物理内存镜像的获取是内存分析的前提和基础。

第4章探讨了一个经常被实际应用内存取证人员忽略的问题:获取到内存镜像,然后以此为基础分析得到的结果,能够多大程度上代表原来系统的运行状态?第4章中提出了基于内存镜像的在线取证模型,探讨了影响其获取信息可靠性的几个方面,最后提出基于测量理论的评估方法,在此基础上对此模型的可信性进行了评估。

获取的内存镜像文件是数十亿比特组成的数据,取证调查人员的职责是准确地描述从这些数据中识别、提取和分析出能够被法庭理解的电子证据的专业过程。有时,从内存镜像文件的比特演化成法庭能理解的文本并不需要很复杂的过程,如简单地针对一个字符串进行搜索就可以证明其在目标系统中存在。但更多时候,需要更复杂的技术,往往要依赖专业工具才能将比特数据转换为人们可以理解的文本。从专业角度说,取证人员仅依赖工具来获得答案,在法庭专业质询和激烈的辩论中,往往很被动,因此需要深入了解取证工具所使用的原理。

本书后面的章节针对Windows、Linux、Mac操作系统和安卓系统,分别论述了内存获取与分析的原理。这些章节回答了如下问题:从哪里开始寻找埋藏在内存镜像文件中的证据?在各个系统中的内存中可以获取哪些主要信息?如何使用特定知识对内存镜像文件中的相关证据进行识别、提取和分析?这些章节的内容可以帮助读者了解如何从内存镜像文件中获取进程、注册表、打开的文件、日志、网络等常见的数据,掌握内存分析和内存数据提取背后的原理和逻辑,在内存取证的实践中做到知其然,也知其所以然。

最后,本书用较多的篇幅论述了内存取证技术的实践应用,其中很多问题来源于我们的实际经验和研究工作,略述如下。

云计算一直是这几年的热点,本书探讨了内存分析在云安全中的应用。通过获取和分析宿主机物理内存,检测出宿主机中正在运行的虚拟机,实现了从宿主机物理内存中提取虚拟机物理内存信息,对虚拟机逃逸行为检测和基于旁路的云安全威胁监控技术进行了描述和讨论。

在实际取证工作中,经常碰到通过uKey的使用来限制特殊用户对机器访问权限的情况。本书论述了在未知PIN码、无法获取uKey硬件的情况下,利用内存分析技术绕过目标计算机对uKey的认证机制,并解除目标计算机上USB接口禁用的方法,以实现取证的目的。

恶意代码检测是网络空间安全研究中特别关心的问题。所有的恶意代码都会想尽办法在系统中隐藏自己,躲避各类工具的检测。但是,无论其如何隐藏自己,终究也要在内存中执行。本书探讨了使用内存分析技术进行恶意代码检测,着重介绍了Windows、Linux和Mac操作系统中基于内存分析的恶意代码检测方法。通过本书的学习,读者可以了解到:使用内存分析技术可以从系统正在运行的内存中识别被注入的代码,定位可疑动态链接库,从而达到检测木马的目的,并且能够从恶意代码遗留的各类痕迹中做更深入的分析工作。从这些探讨中可以看出,基于内存分析的检测方法与传统检测方式相比,有独特的优势。

登录密码的破解是内存分析技术中最为实用的应用之一。取证人员遇到处于屏保或待机状态的目标机时,不知道密码的情况下常处于束手无策的状态:一旦强制关闭目标计算机进行离线取证工作,嫌疑人的犯罪证据很有可能会丢失。此时,使用破解系统密码技术进行取证成为最佳选择。本书首先分析了Windows、Linux、Mac操作系统下密码认证的方式,然后详细介绍了利用内存取证技术对Windows、Linux、Mac等操作系统的登录密码进行破解的方法。

书中实例所用的内存镜像文件样本,以及我们自己开发的内存获取、分析等软件可通过PC端地址box.ptpress.com.cn/y/48787下载。

本书是山东省计算中心(国家超级计算济南中心)网络安全与取证团队长期研究成果的结晶。团队发展过程中,得到了齐鲁工业大学(山东省科学院)王英龙,青岛农业大学顾卫东,山东省计算中心杨美红、谭安辉、彭利民、李晔的大力支持。本书及相关研究工作离不开他们的热情帮助,在此特表感谢。

本书的编写工作得到了“山东省自然科学基金(No.ZR2014FM003)”的支持,内存取证的研究得到了“国家自然科学基金(No.61070163、No.61572297)”的支持,在此特表感谢。

当然,内存取证技术并不是万能灵药,其本身也存在各种局限,必须结合其他取证技术才能发挥出最大作用。相信读者在阅读过程中会发现和体会到这一点。

由于我们水平有限,编写时间紧张,书中难免存在疏漏和不当之处,敬请读者批评指正。

作者

2018年4月