亲们,好久不见,想死你们啦!(冯巩脸)
最近小编忙成狗,不为别的,还不是为我们的培训品牌——CDF训练营!为了加强培训效果,提升学习体验,我们从外到内进行了全方位改革,从LOGO设计、封面包装,到课程设置、教学模式都全部重新调整优化,大家随意感受下:
点击图片放大查看
此外,创始人郭永健老师历时三个月,结合之前的教材和积累的经验,编写了《取证分析实战》教材,本次第10期训练营的学员是改版后的首期体验者。
更重要的是,根据不同的需求,我们开始设计不同的课程,毕竟电子数据取证交叉领域众多,每个都值得深究。其中,数据恢复课程将由八爷亲自讲授,成品将很快出炉,大家敬请期待~
好,言归正传,没有干货的推送才不是我的风格,本次训练营的笔记还是照例和大家分享。
正文
在电子数据取证领域,哈希、哈希值几乎人人都知道,可知道是一回事,怎么充分利用就是另外一回事了。Wendy之前也自以为对哈希知根知底,但这一次训练营里学到的知识让我怀疑人生——究竟是什么让我有勇气说自己“知根知底”的……
本文可以分为两个部分:哈希的理论基础、哈希的花式用法。当然,后面那个部分才是重点,但理论基础不能少,虽然我知道你们都知道,但还是简单地解释一下哈希。
1. 哈希的理论基础
▍什么是「哈希」、「哈希值」?
哈希定义:
英文为「Hash」,也翻译作“散列”,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法(哈希算法),变换成固定长度的输出,该输出就是哈希值。
Wendy版暴力解释:
1.「哈希」是一种算法;
2. 这种算法会把「任意内容」变成一串长度固定的字符;
3. 那串字符就是「哈希值」;
一句话的MD5哈希值
继续对哈希性质的解释:
4. 「哈希算法」是一类算法,都有“解释2”的特性;
5. MD5、SHA-1等都是「哈希算法」,只不过算法不同,「哈希值」的固定长度也不同;
6. “解释2”中的「任意内容」可以是任何电子数据,如一串数字、一句话、一个图片、文档、音频、压缩文件……
7. 任何文件的「哈希值」都是唯一的,输入的「任意内容」哪怕有一丝丝修改,都会导致输出的「哈希值」有很大的不同。
多种不同的哈希算法对比
▍什么是哈希库?
这个很好理解,就是已知的「哈希值」的集合。
建立哈希库,顾名思义就是把计算出来的一些文件的哈希值保存到一起,不就是哈希库吗?(机智脸)
形象来说,如果你把哈希库打开一看,会发现里面全是长度一样的字符串,而每一个字符串都将指向一个文件。
But!并非见到一个哈希值就往里头拉,哈希库的建立也是有分类的,如:图片的哈希库、密码的哈希库,等等。
NSRL哈希库非常有名,美国国家标准研究所出的库,包含2000年之后至今的各种软件、操作系统等相关文件的MD5和SHA1值
2. 哈希的花式用法
▍你以为的哈希用途
当然是校验镜像文件~
Wendy在《镜像,镜像,谁在世上和我一样?》一文中讲过,镜像是为了保证源文件不被破坏,在电子数据取证中,分析镜像和分析源文件是一样的。但如何证明你拷贝的镜像文件与源文件是一模一样的呢?
创建镜像计算哈希值
这就是哈希的作用了,我们都知道。正是由于每个文件的哈希值唯一,所以只要哈希值相同,就能证明镜像文件没有被修改过,与源文件一致,因此我们每次创建镜像文件都得计算哈希值。
校验哈希值
▍我学到的高阶用法
首先,再次强调一遍,一个文件只有一个哈希值,一般不同的文件不会出现相同哈希值。记住并利用这一点,我们就能在电子数据取证中省力不少。
1. 重复的文件,只看一份!
分析一个盘,经常会遇到这样的情况——文件名不同,但内容可能一样。
要是一个个地打开看很头疼,不看又怕错过了重要信息,如下图:
都是12KB,要不要一个个点开看?
这时候,利用哈希值就能过滤掉内容相同的文件。
找到并过滤重复的文件
名字不一样?没关系!只要内容一样,哈希值就一样,我只看一份就好~
当当!重复的文件变成浅色隐藏了
方法总结:计算所选范围内文件的哈希值,隐藏哈希值重复的文件。
2. 与案件无关的系统文件,走开!
分析嫌疑人的硬盘,我们重点关注的是他的操作痕迹,但电脑里总是有很多系统自动生成的文件,如果能把这些文件过滤掉,只看嫌疑人产生的文件,岂不事半功倍?
各种类型系统的文件哈希库
一般来说,同型号的电脑或程序产生的这类文件是相同的,如果把这些文件的哈希值集合到一起建立一个“系统文件哈希库”,那么用这个库去过滤,剩下的就是用户个性化差异的文件了。
方法总结:建立系统相同文件的哈希库,用这个哈希库过滤。
3. 有哪些硬盘被感染?一键查到!
还有一种情况,就是在查找恶意程序感染了哪些硬盘或分区时,也能用哈希值迅速找出来。
各类程序的文件哈希库
恶意的程序文件也有哈希值,只要先计算出来,再和其他分区或硬盘所有文件的哈希值进行比对,只要在相应分区找到相同哈希值文件,即可证明该分区或硬盘含有恶意代码文件,说明已经被感染。
方法总结:计算恶意代码文件的哈希值,在所有盘里跑一遍对比哈希值。
4. 彩虹表——密码字典库
哈希是个不可逆的算法,因此很多时候会用来保存密码口令,这样他人即便能拿到保存的哈希值,也无法猜到原始密码是什么。
但,偏偏有人还是有办法找到原始密码——用「彩虹表」。
彩虹表是一个用于加密散列函数逆运算的预先计算好的表, 为破解密码的哈希值(或称散列值、哈希密文)而准备,说白了彩虹表就是一个为了破解密码的哈希库。
举个例子,我把6位数的纯数字密码全部列举出来,然后计算每一个对应的哈希值,这样建成了一个库。
如果你的密码哈希值已知,虽然不能通过算法可逆出来,我可以输入到库里去查找,比对成功就知道你的原始密码是多少了!
当然,彩虹表也分很多种,一串哈希值输入到不同的表中,对应结果不同,毕竟算法不一样嘛。
好,本期哈希知识均已分享完毕,你学会了吗?
从哈希的学习中,我明白了一个道理:“知道”与“运用”之间,隔着鸿沟,需要综合思考能力去跨越它。任何东西的用途都很多,不在于告诉你怎么用,而在于从根本上理解其特性,再联系实际去寻找运用的途径。
完
训练营的学习还在继续,学员们的积极性很高,虽然训练密度很大,从早上9点到晚上8点满满当当,但Wendy看到不少人一直钻研到晚上9点多,真是比你帅还比你努力啊……