中文
ENGLISH

当前位置:首页 >  新闻资讯 > 公司新闻 > 只用「哈希」做校验?太小瞧它了 | CDF 训练营(七)

只用「哈希」做校验?太小瞧它了 | CDF 训练营(七)

发布时间:2018年3月30 20:19

  亲们,好久不见,想死你们啦!(冯巩脸)

  最近小编忙成狗,不为别的,还不是为我们的培训品牌——CDF训练营!为了加强培训效果,提升学习体验,我们从外到内进行了全方位改革,从LOGO设计、封面包装,到课程设置、教学模式都全部重新调整优化,大家随意感受下:

1

2

3

  此外,创始人郭永健老师历时三个月,结合之前的教材和积累的经验,编写了《取证分析实战》教材,本次第10期训练营的学员是改版后的首期体验者。

4

  更重要的是,根据不同的需求,我们开始设计不同的课程,毕竟电子数据取证交叉领域众多,每个都值得深究。其中,数据恢复课程将由八爷亲自讲授,成品将很快出炉,大家敬请期待~

  好,言归正传,没有干货的推送才不是我的风格,本次训练营的笔记还是照例和大家分享。

  正文

  在电子数据取证领域,哈希、哈希值几乎人人都知道,可知道是一回事,怎么充分利用就是另外一回事了。Wendy之前也自以为对哈希知根知底,但这一次训练营里学到的知识让我怀疑人生——究竟是什么让我有勇气说自己“知根知底”的……

  本文可以分为两个部分:哈希的理论基础、哈希的花式用法。当然,后面那个部分才是重点,但理论基础不能少,虽然我知道你们都知道,但还是简单地解释一下哈希。

  1. 哈希的理论基础

  ▍什么是「哈希」、「哈希值」?

  哈希定义:

  英文为「Hash」,也翻译作“散列”,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法(哈希算法),变换成固定长度的输出,该输出就是哈希值。

  Wendy版暴力解释:

  1.「哈希」是一种算法;

  2. 这种算法会把「任意内容」变成一串长度固定的字符;

  3. 那串字符就是「哈希值」;

5

一句话的MD5哈希值

  继续对哈希性质的解释:

  4. 「哈希算法」是一类算法,都有“解释2”的特性;

  5. MD5、SHA-1等都是「哈希算法」,只不过算法不同,「哈希值」的固定长度也不同;

  6. “解释2”中的「任意内容」可以是任何电子数据,如一串数字、一句话、一个图片、文档、音频、压缩文件……

  7. 任何文件的「哈希值」都是唯一的,输入的「任意内容」哪怕有一丝丝修改,都会导致输出的「哈希值」有很大的不同。

6

  多种不同的哈希算法对比

  ▍什么是哈希库?

  这个很好理解,就是已知的「哈希值」的集合。

  建立哈希库,顾名思义就是把计算出来的一些文件的哈希值保存到一起,不就是哈希库吗?(机智脸)

  形象来说,如果你把哈希库打开一看,会发现里面全是长度一样的字符串,而每一个字符串都将指向一个文件。

  But!并非见到一个哈希值就往里头拉,哈希库的建立也是有分类的,如:图片的哈希库、密码的哈希库,等等。

7

NSRL哈希库非常有名,美国国家标准研究所出的库,包含2000年之后至今的各种软件、操作系统等相关文件的MD5和SHA1值

  2. 哈希的花式用法

  ▍你以为的哈希用途

  当然是校验镜像文件~

  Wendy在《镜像,镜像,谁在世上和我一样?》一文中讲过,镜像是为了保证源文件不被破坏,在电子数据取证中,分析镜像和分析源文件是一样的。但如何证明你拷贝的镜像文件与源文件是一模一样的呢?

8

  创建镜像计算哈希值

  这就是哈希的作用了,我们都知道。正是由于每个文件的哈希值唯一,所以只要哈希值相同,就能证明镜像文件没有被修改过,与源文件一致,因此我们每次创建镜像文件都得计算哈希值。

9

  校验哈希值

  ▍我学到的高阶用法

  首先,再次强调一遍,一个文件只有一个哈希值,一般不同的文件不会出现相同哈希值。记住并利用这一点,我们就能在电子数据取证中省力不少。

  1. 重复的文件,只看一份!

  分析一个盘,经常会遇到这样的情况——文件名不同,但内容可能一样。

  要是一个个地打开看很头疼,不看又怕错过了重要信息,如下图:

10

  都是12KB,要不要一个个点开看?

  这时候,利用哈希值就能过滤掉内容相同的文件。

11

  找到并过滤重复的文件

  名字不一样?没关系!只要内容一样,哈希值就一样,我只看一份就好~

13

  当当!重复的文件变成浅色隐藏了

  方法总结:计算所选范围内文件的哈希值,隐藏哈希值重复的文件。

  2. 与案件无关的系统文件,走开!

  分析嫌疑人的硬盘,我们重点关注的是他的操作痕迹,但电脑里总是有很多系统自动生成的文件,如果能把这些文件过滤掉,只看嫌疑人产生的文件,岂不事半功倍?

14

  各种类型系统的文件哈希库

  一般来说,同型号的电脑或程序产生的这类文件是相同的,如果把这些文件的哈希值集合到一起建立一个“系统文件哈希库”,那么用这个库去过滤,剩下的就是用户个性化差异的文件了。

  方法总结:建立系统相同文件的哈希库,用这个哈希库过滤。

  3. 有哪些硬盘被感染?一键查到!

  还有一种情况,就是在查找恶意程序感染了哪些硬盘或分区时,也能用哈希值迅速找出来。

15

  各类程序的文件哈希库

  恶意的程序文件也有哈希值,只要先计算出来,再和其他分区或硬盘所有文件的哈希值进行比对,只要在相应分区找到相同哈希值文件,即可证明该分区或硬盘含有恶意代码文件,说明已经被感染。

  方法总结:计算恶意代码文件的哈希值,在所有盘里跑一遍对比哈希值。

  4. 彩虹表——密码字典库

  哈希是个不可逆的算法,因此很多时候会用来保存密码口令,这样他人即便能拿到保存的哈希值,也无法猜到原始密码是什么。

16

  但,偏偏有人还是有办法找到原始密码——用「彩虹表」。

  彩虹表是一个用于加密散列函数逆运算的预先计算好的表, 为破解密码的哈希值(或称散列值、哈希密文)而准备,说白了彩虹表就是一个为了破解密码的哈希库。

  举个例子,我把6位数的纯数字密码全部列举出来,然后计算每一个对应的哈希值,这样建成了一个库。

  如果你的密码哈希值已知,虽然不能通过算法可逆出来,我可以输入到库里去查找,比对成功就知道你的原始密码是多少了!

17

  当然,彩虹表也分很多种,一串哈希值输入到不同的表中,对应结果不同,毕竟算法不一样嘛。

18

  好,本期哈希知识均已分享完毕,你学会了吗?

  从哈希的学习中,我明白了一个道理:“知道”与“运用”之间,隔着鸿沟,需要综合思考能力去跨越它。任何东西的用途都很多,不在于告诉你怎么用,而在于从根本上理解其特性,再联系实际去寻找运用的途径。

  完

  训练营的学习还在继续,学员们的积极性很高,虽然训练密度很大,从早上9点到晚上8点满满当当,但Wendy看到不少人一直钻研到晚上9点多,真是比你帅还比你努力啊……

19