UNIX系统取证的内容搜索方法研究.docx
- 文档编号:30337048
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:10
- 大小:23.29KB
UNIX系统取证的内容搜索方法研究.docx
《UNIX系统取证的内容搜索方法研究.docx》由会员分享,可在线阅读,更多相关《UNIX系统取证的内容搜索方法研究.docx(10页珍藏版)》请在冰豆网上搜索。
UNIX系统取证的内容搜索方法研究
UNIX系统取证的内容搜索方法研究
ResearchofContentSearchinComputerForensicofUNIXSystem
SONGLei,ZHANGPeijing
(ChinesePeople’sPubicSecurityUniversity,Beijing100038,China)
Abstract:
ReliableUNIXsystemiswidelyusedinimportantapplicationserverornetworkserver.ResearchingthetechniquesandprinciplesofcontentsearchinUNIXsystemcanreducetheamountofinspectiondataanddigvalidevidencefastintheprocessofanalysis.StudyingsearchtoolsofUNIXsystemusedinstaticforensiccanhelpinvestigatorstonarrowthescopeofinspectiondata,andimprovetheefficiencyofcomputerforensicanalysisintheprocessofevidencecollectionandanalysis.
Keywords:
computerforensic;UNIXsystem;contentsearch
一、UNIX系统及其文件系统
(一)UNIX系统
UNIX系统普遍具有技术成熟、可靠性高、伸缩性突出、开放性好等特点,是政府、企业、院校等多个领域主流的服务器操作系统。
目前所指的UNIX系统代表了一类操作系统,主要分为两大流派,分别是AT&T发布的SystemV与美国加州大学伯克利分校发布的BSD(BerkeleySoftwareDistribution)。
前者被认为具有商业特性,后者被认为具有学术特性[1]。
SUN公司推出的Solaris系统、IBM公司推出的AIX系统、HP公司推出的HPUX系统、科研院校常使用的FreeBSD系统都是从上述两个流派演变而来。
LINUX系统是SystemV和BSD的一个后续版本,LINUX包含这两个版本的很多特性,并且符合可移植的操作系统接口标准(POSIX)[2]5-7。
(二)UNIX文件系统
了解UNIX文件系统对于在UNIX系统取证中进行全面、准确的内容搜索具有很大帮助。
UNIX系统将所有的系统资源当作文件来管理,这使得UNIX系统下的文件包括普通文件、目录文件、链接文件、特殊文件、管道文件(FIFO)五种类型。
普通文件一般包含源程序、可执行程序、图片、音频、图形等。
目录文件由若干个目录条目组成,每个目录条目普遍包含目录/文件名、文件描述信息、文件连接关系和系统使用的索引节点号等信息。
UNIX系统根目录下常用的目录及其存放内容是有一定规律的,例如,/bin目录一般存放二进制可执性文件,/tmp目录一般存放公用的临时文件,/home目录一般存放所有用户的个人目录,等等。
调查人员可以根据目录设置的一般规律,有针对性地开展内容搜索。
链接文件是在UNIX为一个已存在的文件建立符号链接时,系统生成的一个软链接性质的文件,并不复制已存在文件内容,调查人员在取证时需要注意那些被链接共享文件的保护和收集。
特殊文件是一些可以访问的硬件设备,包括磁盘之类以字节块为处理单元的块设备特殊文件和键盘、打印机之类以字节为处理单元的字符设备特殊文件。
管道文件用于两个进程之间的通信,一般的计算机调查取证不会涉及[2]83-86。
不同类型的UNIX系统,其文件系统的组织与结构基本相似,只在存储结构的细节上略有差别。
Solaris和BSD使用UFS(UNIXFileSystem)文件系统分区存储结构[3]。
LINUX使用ext文件系统分区存储结构。
LINUX缺省情况下使用的文件系统为ext2FS,ext3FS文件系统是ext2FS的下一个版本,在ext2FS文件系统上增加了日志功能,从而提高了文件系统的稳定性。
另外,现代的LINUX系统中可以使用VFS(VirtualFileSystem)建立物理设备与文件系统服务的接口,它可以完成对每个具体文件系统细节的抽象,使其可以同时支持多种不同的文件系统,例如ext2FS、UFS、UDF、HFS、VFAT(MSdosFS)等。
严格地说,VFS并不是一个真正的文件系统。
它仅存在于内存中,操作系统启动时建立,关闭时自动消亡。
调查人员可以利用LINUX的VFS文件系统支持多种文件系统和分区类型的特点,将LINUX系统作为取证分析工作平台,装配来自不同UNIX文件系统的映像,进行深入的内容搜索和取证调查。
二、UNIX环境下的内容搜索技术
(一)内容搜索纵向技术
UNIX系统下的内容搜索可以在物理层上执行,也可以在文件逻辑结构层上执行。
1.物理层的搜索。
在物理层的搜索是基于字节或位的搜索。
物理层的搜索不需要对映像进行装配,可以直接对整个映像的数据进行统一的检查,但每次物理层的搜索都要搜遍整个映像驱动器的内容,在搜索速度上比文件逻辑结构的搜索慢了很多。
对于硬盘驱动器的映像,物理层的搜索可以实现对所有映像数据的检查,包括松弛空间、被删除文件区域、被标记为坏的节点、目录等区域的检查。
但物理层上的搜索直接检查映像的所有字节,没有顾及映像内单个文件的属性或者在映像内的定位。
而且传统的物理层搜索工具找不到专有格式文件、压缩文件和加密文件中的信息。
另外,当被映像的磁盘上碎片很严重时,很多文件存储在非相邻的节点上,物理层搜索会发生文件边界问题,除非节点相邻,否则大多物理层搜索工具由于无法准确识别边界上的文件内容而造成搜索失败。
好在UNIX系统较windows系统而言有很好的碎片处理能力,即使长时间的运行,其文件系统的碎片也较少。
但对于大文件占用的不相邻节点的情况,也存在无法准确识别边界上文件内容的问题。
2.文件逻辑结构层的搜索。
在文件逻辑结构层的搜索是基于文件的搜索,需要重建映像文件系统,将恢复的映像文件系统装配挂接到取证分析工作机上,然后利用工作机上的搜索工具进行逐文件的搜索。
在装配映像文件系统之后,调查人员就可以像访问被映像之前的文件系统那样去检查映像,可以实现对映像文件的快速搜索,可以针对映像里某些目录或文件进行搜索。
在文件逻辑结构层上可以实现简单文件搜索,也可以实现更多方式和更智能化的文件搜索。
例如,常用的支持文件逻辑结构上的搜索工具都能够检查文件属性和文件细节信息,可以实现文件定位,可以对二进制文件进行基于字符串内容的搜索。
而且,一些功能强大的搜索工具还可以对多种类型的文件以其内容原本的格式进行搜索,甚至可以对简单加密文件或压缩文件进行文件内容的搜索。
但文件逻辑结构上的搜索不支持对映像文件系统的松弛空间、被删除数据等非文件数据的直接搜索。
(二)文件搜索横向技术
UNIX系统下的内容搜索横向技术主要包括关键字搜索和图像、音视频等信息的搜索。
1.关键字搜索
内容搜索中最常用到的是关键字搜索。
调查人员可以在物理层或文件逻辑结构层进行关键字搜索。
通过它可以对与案件有关的词汇、术语、敏感数据等信息进行快速查找,实现容易,搜索结果比较可靠。
但在具体的关键字搜索应用中,只有选用了最贴切的词语进行搜索才能得出有用的结果。
在实际调查取证中,有的调查人员由于搜索条件择选不当,得到的符合搜索条件的“样本”过于广泛,使得关键字搜索工作没有达到缩小调查范围的预期效果。
通常我们可以通过采用较为特殊的关键字进行搜索,或者通过增加关键字的搜索条件来缩小搜索结果。
关键字搜索一般使用串匹配技术实现,即在正文串中查找模式串的一个或所有出现。
串匹配根据其应用方式的不同,总体可以分为针对一个文本串的单模式匹配和针对一类文本串的多模式匹配。
加速单模式匹配算法的关键点在于设法加快不成功匹配过程的完成速度,使后移过程的步骤尽量大。
单模式匹配可以通过直接匹配(BruteForce)、BM(BoyerMoore)、KMP(KnuthMorrisPratt)等算法实现。
多模式匹配也可以借助BM、KMP算法来实现,只是运行花费时间较长。
如果利用BM算法来完成k个模式的多模匹配问题,则需要对文本进行k次扫描。
假设所有的模式串都具有相同的长度m,在最坏情况下的时间复杂度是O(m*k*n),如果利用KMP算法来完成k个模式的多模匹配问题,也需要对文本进行k次扫描,需要运行时间为O(M+kn),其中M为所有模式串的总长度[4]124-129。
多模式匹配更多地使用有穷自动机(FiniteAutomata)算法来实现,该算法通过在匹配前对模式串集合进行预处理,转换成树型有穷自动机,然后只需对文本串进行一次扫描即可找出所有的模式串,其时间复杂度为O(n)。
“正则语言”是有穷自动机的描述语言,形式化地定义有穷自动机。
“正则语言”的另一种代数记号的方式称为“正则表达式”(缩写成“regex”或“regexp”)[5]。
正则表达式与有穷自动机具有等价性。
正则表达式可以描述一类字符串的模式(Pattern)。
如果一个字符串可以用某个“正则表达式”来描述,就说这个字符和该“正则表达式”匹配(Match)。
“正则表达式”中所有的符号表达的都是模式[6],可以由一些普通字符和一些元字符组成。
普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
“正则表达式”最早被应用于搜索算法是在UNIX的grep命令中。
目前已经发展成为在计算机各类工具和软件包应用中的一项主要功能。
调查人员有必要熟悉“正则表达式”的相关概念和使用规则,利用“正则表达式”来搜索复杂的文本描述,提高搜索效率。
2.图像、音视频类信息的搜索
随着多媒体技术的发展,很多取证案例中都涉及图像、音视频类的信息。
由于此类二进制形式的信息不具有文本或其他易识别的唯一特征,普通搜索工具无法对其内容进行直接搜索,但调查人员可以通过文件名特征来进行间接搜索。
例如,可以利用对指定的文件名后缀进行关键字搜索来实现文件类型的匹配。
调查人员也可以利用文件散列值匹配的方式进行搜索,即利用特定文件内容的散列值唯一的特性,通过对每个现有文件进行散列操作,并将其散列值与已知的散列值进行比较,来查找指定的图像或音视频之类信息。
使用散列值匹配进行搜索是对图像、音视频之类信息的一种比较可靠和准确的搜索方法,但要求调查人员事先已经有需要搜索的对象的散列值。
另外,随着图像、多媒体内容匹配技术的发展,逐渐出现了直接基于内容的检索技术[7],能够识别看起来相似的图像。
图像、音视频类信息的有效搜索一般都是在文件逻辑结构层上实现的。
三、UNIX环境下的搜索工具
UNIX环境下的搜索工具主要包括UNIX系统自带的grep之类的内容搜索命令和find之类的文件搜索命令,以及一些提供了丰富搜索功能的外部综合性取证分析工具,例如ForensiX、TCT(TheCoroner’sToolkit)等工具。
在离线调查取证中,这些工具可以单独使用,也可以相互配合使用,从而更好地实现调查数据的范围缩小和可用证据数据的定位。
(一)UNIX环境下的主要搜索工具
1.grep命令。
grep(GlobalRegularExpressionPrint)命令是Solaris、LINUX、FreeBSD等几乎所有版本的UNIX系统默认安装的命令行工具,但不同版本的grep具有的功能略有不同,LINUX中包含的grep的GNU版本较很多其他的UNIX旧版本具有更为丰富的功能。
grep命令用于在指定文件中搜索特定的内容,并将含有这些内容的行进行标准输出。
grep命令功能强大、使用灵活,支持对文本文件进行关键字搜索,也支持对二进制文件进行关键字搜索。
grep还支持递归地搜索文件系统或搜索整个原始设备。
grep的搜索条件可以是指定的字符串,也可以是“正则表达式”。
另外,在LINUX系统中,还存在egrep和fgrep两个命令[8],它们与grep功能相近,但略有差别。
grep命令一次只能检索一个指定的模式;egrep命令检索扩展的“正则表达式”(包括表达式组和可选项);fgrep命令检索固定字符串,是快速搜索命令。
2.find命令。
find命令也是Solaris、LINUX、FreeBSD等几乎所有版本的UNIX系统的默认工具,不同版本的find命令语法格式上略有不同。
find命令用于在指定的目录结构中搜索文件名,并执行指定的操作。
此命令功能强大,提供了相当多的查找条件,可以在文件系统上根据文件的不同特征属性来搜索某一类文件,这些特征包括文件名的字符串、文件内部的字符串、文件修改或访问时间、文件所有者等。
find命令从指定的起始目录开始,可以递归地搜索其下的各个子目录。
在具体的取证过程中,调查人员还可以使用参数“exec”来启动find命令对查找到的符合条件的文件执行指定命令的功能,来提高搜索效率。
图1是find命令结合grep命令查找当前目录下包含“port”字符串的“*.conf”的文件的执行示例。
3.ForensiX工具集。
ForensiX是一个运行在LINUX环境下的综合性取证调查工具,以收集证据和分析证据为主要目的,支持对多种存储设备和多种文件系统(包括UFS、ext2FS、ext3FS、macintosh之类普通的UNIX文件系统和其他非UNIX的文件系统)进行分析,以图形化用户终端的形式提供了丰富的不同类型的搜索功能。
ForensiX支持对多种类型的硬件存储(包括硬盘驱动器、软盘驱动器、磁带、光盘和Jazz驱动器)进行快速映像,检查MD5值,并记录到案例数据库中。
此时,ForensiX就可以对原始格式的映像数据直接进行搜索和分析,但进行的是对整个映像数据逐字节的物理层的简单搜索。
调查人员也可以将映像文件装配后再进行搜索和分析。
ForensiX提供在不同的文件系统里自动装配映像的能力。
文件系统的装配是只读的,这样可以防止因疏忽而造成的更改。
一旦文件系统或映像被装配,调查人员就可以使用ForensiX对装配的数据进行逐文件的逻辑层搜索,还可以使用ForensiX提供的插件程序,运行更复杂的模糊搜索或图形搜索
[9]。
(二)UNIX系统自带搜索工具使用前的特殊文件处理
grep、find之类的UNIX系统自带搜索工具通常只能鉴别现存的包含纯文本字符串的文件,对于那些被压缩、被加密或被删除的特殊文件,无法单独通过这些简单搜索技术找到相关内容。
为保证其搜索结果的有效性和准确性,调查人员应该在开始内容搜索前对这些文件进行相应的处理。
1.压缩文件处理。
压缩文件和打包文件的格式众多,如.tgz、.Z、.gz、.zip、.jar、.arj、.tar等文件以及自解压存档。
这些文件都会使传统的字符串搜索工具失效。
在进行字符串搜索之前,调查人员需要先找出所有的压缩文件和打包文件,并将其解压缩或拆包。
例如“.gz”为压缩文件,需要进行解压缩处理;“.tar”为打包文件,需要进行拆包处理;“.tgz”为打包后的压缩文件,需要解压缩和拆包处理。
还需要指出,一些压缩文件中可能还包含压缩文件,这需要调查人员递归地处理每个文件,以确保将压缩文件中内含的压缩文件也解压缩。
2.非解密文件处理。
非解密文件主要包括加密的文件和受密码保护的文件。
这些文件也不能使用传统的字符串搜索工具进行有效检查。
调查人员需要在字符串搜索之前找出所有加密文件并将其解密。
解密时,如果不能从犯罪嫌疑人处得到相应的密码,则需要采用密码破译技术,包括各类常用软件加密文件的类型识别技术,各类标准加密算法生成的加密文件的解读和还原技术,常用系统加密口令文件的提取技术等。
3.被删除文件处理。
对于被删除文件的搜索,调查人员可以使用十六进制编辑器或增强的UNIX系统搜索工具来检查整个映像数据;或者使用TCT的unrm之类工具恢复已删除的数据后,再进行字符串的搜索[4]222。
四、UNIX环境下静态取证分析中的内容搜索方法
调查人员在计算机取证调查和分析过程中通常需要反复检查采集到的数据,不断把范围缩小到真正与案件相关的且具有说服力的证据上。
随着磁盘容量的不断增大,调查人员对UNIX系统的取证分析,有必要利用UNIX内容搜索工具来减少证据收集和分析过程中需要检查的数据量,提高取证效率。
下面以一个被攻击者成功入侵并破坏了网络应用程序的Solaris服务器为被调查对象,介绍静态取证过程中有关文件搜索和内容搜索的方法。
此处选用LINUX系统作为取证分析工作平台,使用系统自带的GUN版本的grep和find等搜索工具来完成证据数据的搜索和定位。
(一)取证数据收集
取证调查分析前,调查人员使用DD等数据收集工具对被入侵的服务器进行完整的数据映像采集,并通过计算映像数据的MD5校验值来确保数据的完整性。
(二)映像直接搜索
通常,有经验的攻击者为避免自身行踪被发现,在作案结束后,会删除其使用过的相关工具文件和日志记录。
在写保护的前提下,如果映像数据是通过普通的DD等复制工具生成的未压缩的数据,调查人员可以先直接对获取的映像数据进行简单的搜索,这种搜索可以认为是对原始数据物理层的搜索,可以发现原始数据中被删除数据在内的有效信息。
本案例中,我们对映像数据直接进行相应关键字的搜索,这些关键字可以是攻击者的后门程序密码、用户名、MAC地址或IP地址。
图2显示使用grep对映像文件dd_image.full.bin中的所有IP地址进行搜索,以发现有敌意的地址。
其中的搜索条件使用“正则表达”式来表示,该“正则表达式”根据IP地址由4组用句点分隔的三位数组成的规律进行描述,其中[0-9][1,3]表示任意数字出现1到3次,“-a”选项告诉grep命令将二进制文件作为一个文本文件来处理,“>”的作用是把grep命令的输出结果送入一个名为“ip.search.results”的文件中,这个文件可以作为证据加以检查。
(三)映像数据的恢复和装配
二进制形式的映像数据的内容是无法直接阅读的,调查人员对上述的dd_image.full.bin文件也无法在物理层上进行更复杂的搜索和对具体的搜索内容进行定位,调查人员需要在文件逻辑结构层浏览和搜索这些数据。
此时,需要调查人员对映像数据进行恢复,并且装配到分析用的系统上,使得分析系统可以解释和访问映像数据的文件系统和硬盘结构。
另外,LINUX系统可以将复件映像和虚拟设备关联起来,从而不需要恢复,就可以把映像文件当成一个真实的文件系统进行访问。
此时需要首先使用Losetup命令将dd_image.full.bin文件的内容关联到LINUX环回设备“/dev/loopa”上,然后通过mount命令将映像数据分区,以只读方式装配到目录“/mnt/evidence”下,如图3和图4所示。
接下来调查人员就可以利用标准的UNIX工具和脚本来处理和搜索映像文件了。
在加载环回设备之前,调查人员可以下载NASA(美国宇航局计算机犯罪部)的补丁和工具,修改LINUX的内核和环回加载代码,从而使系统能够识别一个复件映像里的多个分区。
需要注意,当调查人员在“/mnt/evidence”下装配一个磁盘映像,而不是在文件系统层的通常位置装配时,所有的文件名会被改变,这会造成符号链接可能链接到错误的文件或目录等问题,给调查人员带来很大负担。
(四)文件逻辑结构层内容搜索前的准备工作
在恢复和装配了映像的文件系统之后,调查人员就可以使用LINUX强大的脚本功能,来识别所有的压缩文件并将它们解压缩,或者识别常规的加密文件并对加密文件进行解密,这样可以为调查人员随后进行文件逻辑结构层的内容搜索作好准备。
图5使用find命令对“/mnt/evidence”目录中所有的标准文件(硬链接、软链接、设备、管道、套结字及其他特殊文件除外)和子目录进行识别,然后对文件执行shell脚本程序unfubar.sh。
此处unfubar.sh脚本可以制作成识别所有扩展名为tar、tgz和Z的文件并将它们解压缩到一个新的目录中,也可以制作成识别和破解常规加密文件的脚本。
进行识别并执行脚本程序unfubar.sh
(五)文件逻辑结构层的搜索
完成上述工作之后,调查人员可以在文件逻辑结构层进行进一步的搜索,可以使用模糊搜索,或者有针对性地进行快速搜索。
如果被收集的原驱动器是存储稀疏的,并且预计要搜索的内容不在未分配空间中,那么在文件逻辑结构层的搜索会快捷很多。
或者,专业的调查人员对被调查操作系统的结构和原理比较了解,可以直接对可能存在证据数据的文件或区域进行重点搜索和分析。
本案例中,考虑涉及到网络应用程序被攻击的调查,调查人员可以直接对映像恢复的数据中的网络日志进行搜索,减少分析受害主机过程中需要检查的数据量。
Solaris系统的网络日志通常放在“/var/log”目录下,调查人员可以创建一个包含所有需要搜索关键字的条件文件,一个关键字占一行,通过使用“f”选项,指定grep命令从其后的条件文件中逐行获取要搜索的关键字,对该目录进行搜索。
图6表示将grep命令的输出结果存储在文件syslog.search.results中。
其中,“i”选项表示忽略大小写,grep命令默认情况下能够分辨大小写,但在进行关键字查找时一般希望忽略大小写。
“B5”选项表示将所搜索的关键字之前的5行显示出来,“A5”选项表示将所搜索的关键字之后的5行显示出来。
逐行获取关键字进行搜索
另外,调查人员也可以针对在前阶段直接映像搜索中已经发现的可疑用户账号、敏感数据和IP地址等关键字,进行进一步的搜索定位,迅速找到其采集点。
图7使用find命令对已知的有敌意IP地址进行搜索定位,其中使用“xargs”来展开find获得的所有标准文件,使其作为grep的搜索范围参数。
此处没有使用find命令的“exec”选项处理匹配到的文件,是因为有些系统对能够传递给“exec”的命令长度有限制,容易导致find命令运行几分钟之后,出现“参数列太长”或“参数列溢出”的溢出错误;而“xargs”选项每次只获取一部分文件而不是全部,可以实现自动的、分批次的处理。
如果此次搜索中没有发现前阶段直接映像搜索中匹配的关键字,调查人员需要考虑对未分配空间被删除数据的恢复,然后再进行有效的搜索定位。
结语
笔者以较多的篇幅介绍了UNIX系统自带搜索工具在取证调查中的使用,在实际UNIX系统的静态取证分析中,调查人员可以根据情况需要,使用ForensiX、TCT等取证工具中的搜索功能对被调查文件或映像数据进行搜索,也可以使用其他智能化的专业搜索,进一步地缩小分析对象范围,方便后续的分析取证。
UNIX系统作为服务器的操作系统,承载着重要任务,往往不允许被轻易停机,很多时候需要进行在线状态的联机调查取证。
UNIX系统自带的这些搜索工具操作简单,执行灵活,可以通过网络终端直接进行远程操作,并且对被调查系统的影响和修改相对较小,便于开展前期的现场联机调查。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UNIX 系统 取证 内容 搜索 方法 研究