第一章:取证发现宗旨
1.1 简介
关于寻找东西。当你找一些特殊的东西的时候,找到的可能性就很低。因为你是在找世上那么多东西中的一个。而当你在随便找到什么东西的时候,找到的机会就非常的多。因为世上有这么多东西,你肯定能找到几样!几年前一个朋友哭着向我们求助。有人侵入了她的Solaris系统并且删出了大量的文件。为何帮忙我们写出了后来成为The Coroner's Toolkit [Farmer,2004]中的一员的文件反删除工具的最初版本。我们的朋友只是想找回文件,而我们却想知道到底发生了什么。-- Darryl Zeor, The Zero Effect
我们别想完整的恢复太多的东西。像其他的UNIX系统一样,Solaris并没有文件反删除的功能。硬盘中被删的文件信息像个迷样的放在那里,你得把零碎的部分放在重新放在一起。UNIX的FAQ对此表现得格外的悲观。[FAQ,2004]
通常认为:当你用rm命令删除一个命令时,它就没有了。一旦你rm了一个文件,系统就会完全的遗忘了分散在硬盘上的哪些块来属于你的文件。更坏的是这些曾属于你刚刚删除的文件的块将在系统需要更多磁盘空间的时候被占用和写入。当我们浏览那些被删文件时我们发现日常的经验过渡的悲观了。首先,现代文件系统并不是随机地将文件内容分散在磁盘上。相反,现 代文件系统能够在即使长达几年的密集使用的情况下成功地避免文件碎片的产生。其次,被删的文件会完整保留相当长的时间。更对关于已删文件持久性的文章可在 第七章读到。
接下来就想我们提倡的那样:依靠以往的经验,听从他人的建议,并且使用现有的工具。但也不要因害怕而把日常经验变为信条,创造自己的工具并且在需 要时发展自己的一套理论。否则,你可能会像那个因为在光线明亮的路灯下寻找丢失钥匙的家伙一样。这是本书的核心信息:如果你想学会解决问题,你就要有在任 何地方找任何东西的准备,而且要在找到前准备好!
本章的余下部分是对本书主要思想的介绍。我们不希望每位读者都有依次阅读每一章的耐心。你可以通过这一章了解到那些是你最感兴趣的话题。
奥,恐怕我们忘了提到:我们的朋友的确找回了很多文件。
1.2 突出不寻常的举动
所有存在你系统的每一个bit到底是怎么回事?大多情况下什么也没发生。我们搜集不同Unix服务器的数据来显示它们访问文件多么频繁。表1.1的结果以递增顺序显示使用量和网络流量。两个典型的web服务器上的绝大部分文件去年一整年的时间没有使用过。即使在超负荷的Usenet新闻系统上30天内 使用过的文件也少于10%。不论是程序、配置文件,还是邮件、新闻或者数据等的压缩包,总有很多文件会招“电子灰尘”。Windows PCs和其他桌面系统呈类似的现象。我们发现90%的文件最后一年没有被访问过。
www.things.org www.fish.com news.earthlink.net 一年以上: 76.6% 75.9 10.9 6 月-一年: 7.6 18.6 7.2 1-6 个月: 9.3 0.7 72.2 一天-一月: 3.6 3.1 7.4 24之内: 2.9 1.7 2.3 表1.1:大量因特网服务器的近期文件读写的百分比。
为什么会这样?即使在一台MIPS(每秒百万指令)的机器也能在很短的时间内生成装满T级容量设备的新数据。计算机当然足够的忙碌,但多数操作都 在访问不断重复的数据、程序和其它资源。当计算机不断重复地访问同样的文件时,它只不过在踩着自己的足迹而已。这也是为何非常操作的痕迹不但会凸现出来, 而且会凸现出很长一段时间!因为系统中大部分信息很少动用!
几乎本书的所有章节都在讨论地各种形式的数字痕迹。文件系统中痕迹的例子在第二章“时间机器”和第四章“文件系统分析”中。内存中数字痕迹的讨论在第八章“进程之外”
1.3 挥发度守则 (The Order of Volatility
一个系统的取证分析是以数据的收集和处理为周期展开的。数据越正确完整,越能进行更全面的鉴定。原始数据被保持在初始的状态并且任何分析只能在计算机数据的副本上进行。这有些类似录下凶案现场防止物理证物的破坏来保留证据、供验证结论和最小化数据的篡改。
理想情况下你想要整个系统和所有数据的拷贝,但往往有各种障碍。当你收集数据时其它的系统的用户或者程序可能会改变状态或者销毁有价值的证据。情急下入侵者或极端分子可能设置电子地雷来破坏数据。而仅仅一个程序的加载和运行也会干扰计算机的状态。
正因如此,传统取证分析聚焦于从非运行系统中获取数据的。规程要求你关闭系统然后复制现场立下的数据:程序日志、访问时间、文件内容等等。分析随后在这些数据的一份副本上进行,以期将对原数据的威胁见到最小。这项简化了数据的捕捉同时在证明结果时提供了不容否认的逻辑链。
我们大体原则是提倡对确定因素在更高层次上的更好的理解,这些因素可能在法庭上潜在地使一些方法论受到更多怀疑。相反,对于非确定因素-- 主要是数据收集方法,能够对其结论给予更多的了解和信任。这个过程需要统一的数据搜集机制和同意方法优劣势的充分的理解。我们坚信短期内数举的取证会出现 对可信结果自动化的需求。
当然,在一个运行中的系统中搜集信息需要谨慎有计划的进行。将计算机同其他用户和网络隔离是第一步。有些种类的数据受数据收集的影响较其他的小,所以按照正确的顺序来进行收集是好办法。不同数据的生存期差别很大,从几纳秒到几年。表1.2可作粗略的指南:
表1.2: 数据的预期生存时间.
Registers, peripheral memory, caches, etc. nanoseconds Main Memory nanoseconds Network state milliseconds Running processes seconds Disk minutes Floppies, backup media, etc. years CD-ROMs, printouts, etc. tens of years
参照这个挥发度法则赋予更多的机会保全仅作数据收集会破快的脆弱资料,并且使你捕捉到可疑事件的数据而不是你在数据过程中产生的无效数据。当然这都要视情况而定,如果对硬盘的内容或者失效很久了的一次时间的线索感兴趣的话,普作问题计算机的内存就没有什么意义了。
| 近一个世纪前,Werner Heisenberg(见图1.1)创立了量子物理的几大理论之一,描述了原子乃至更小尺度上的粒子行为:可以确定粒子位置或者运动方式,但不能两者同时确定。 |
![]() 图 1.1: Werner Heisenberg, Goettingen, 1924 |
