Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深入了解MD4,MD5,SHA哈希密码算法与破解技术

深入了解MD4,MD5,SHA哈希密码算法与破解技术

作者头像
HACK学习
发布于 2019-08-07 01:14:20
发布于 2019-08-07 01:14:20
2.8K00
代码可运行
举报
文章被收录于专栏:HACK学习HACK学习
运行总次数:0
代码可运行

密码(password)是最广泛使用的认证系统之一,防止未经授权的用户访问系统,无论是离线还是在线。在大多数系统中,密码是通过加密存储的,以便为每个用户提供安全性。然而,在这些密码的加密之内,仍然存在漏洞。本文将回顾关于密码哈希(hash)函数的学术和出版文献,特别指出MD4,MD5,SHA算法以及在Linux操作系统中使用Salt字符串。

在此之后,洞察密码破解的方法为检验(reviews),确定字典攻击,暴力攻击和彩虹表(Rainbow Table)的使用。本次审查将允许更深入地了解安全功能和可能的漏洞在此机制内进行调查后。调查将使用UNIX开发的软件John Ripper和RainbowCrack来查看最常见的密码破解方法之一。

John Ripper是一个密码破解器,它将多密码密码破解技术组合到一个程序中,更具体地说,利用字典攻击和强力方法来识别用户的密码,并且可以针对各种密码加密算法运行。暴力和字典攻击生成所有可能的明文密码,因为它处理和比较哈希与目标哈希,一旦匹配的密码可以识别。彩虹表攻击是一种以空间换时间的黑客攻击方法,它将进行预计算,并把结果存储在所谓的彩虹表中。

彩虹表(彩虹表如何工作? )包含目标密码哈希运行直到它达到匹配的纯文本/散列链的列表。调查将首先主要在Linux操作系统中使用John Ripper ; 对该系统中的密码文件运行字典/强力攻击,其使用SHA512算法。在Windows操作系统将调查Rainbow攻击,以从MD5哈希函数提取密码。我们将调查这两个软件,以允许解释哈希函数和密码破解技术在现代操作系统及其中的文件系统。下列调查突出并解释了使用破解技术作为访问用户系统的手段突出显示了在入侵方法和计算机取证中的使用。此外,这将提供对密码哈希算法的安全功能的进一步了解,并识别关键计算机网络安全中的漏洞,允许我们批判性地评估,理解和部署这些方法。

哈希函数(MD4,SHA,MD5和DES)和Salt字符串

所有系统通常都需要使用用户名和密码进行身份验证。解释了获得访问的典型实例分为两个阶段:

认证(Authentication) - 这是系统检查标识符的地方; 这可能是一个电子邮件地址或用户名。然后它将根据系统的密码文件检查密码,如果匹配正确,则允许访问。

授权(Authorisation) - 这是系统根据其数据库检查标识符或密码,以识别用户在该系统中的权限级别。

所以大多数系统都以加密格式存储和发送密码,以最大限度地防御潜在的攻击和漏洞。大多数系统包含使用输入字符串创建输出字符串的单向函数。

哈希算法是加密口令的最受欢迎的方法。当用户以明文形式创建密码时,它通过散列算法运行以产生存储在文件系统中的密码文本。三种最广泛使用的算法是MD5,SHA和RIPEMD; 然而所有算法都来自MD4的格式

总结了所使用的主要算法:

·MD4:具有3轮16步,输出位长度为128位。

·MD5:具有4轮16步,输出位长128位。

·SHA-1:具有4个20阶的步长和160位的输出位长度。

·RIPEMD-160:具有5轮16步,输出位长160位。

·SHA-256:具有64轮单步,输出位长度为256位。

·SHA-384:实际上与SHA-512相同,除了输出被截断为383位。

·SHA-512:具有80个单步的轮数和512位的输出位长度。

Linux和Windows之间的安全特性的主要区别是UNIX系统使用Salt Strings。如(Whitaker和Newman,2005)所述,salt字符串生成随机生成的值,该值随着使用密码哈希处理的每个密码存储。这允许为系统中的每个密码提供额外的安全性,特别是对于简单密码或重用密码。

调查字典和彩虹攻击密码哈希

首先,我们将使用John The Ripper来研究 Linux内字典攻击和暴力攻击的功能。大多数Linux系统可以选择使用哪个哈希函数来存储密码,在Linux系统中,使用的哈希算法在文件/etc/login.defs中定义,以查看我们可以执行的算法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ grep -A 18 ENCRYPT_METHOD /etc/login.defs

在这里我们已经确定这个系统使用SHA512如上所述。在此系统上,所用的用户可以访问/ etc / shadow文件

其中包含每个用户密码的哈希值。

我们可以看到,我们现在可以访问密码的String值和Hash值。这里的字符串值是$ 6 $,它再次标识为SHA512散列算法

这里,这使我们可以看到如何存储哈希函数和盐串。例如,如果散列与$ 1 $一起存储在它的前面,我们将知道它使用MD4算法来生成散列。为了运行字典攻击,我们必须在文本文件中具有目标密码哈希。这可以通过复制密码哈希值,只要你有权限,但也可以使用功能,如Linux中的Unshadow命令,在我们安装了John

运行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $ sudo unshadow / etc / passwd / etc / shadow> passwd.1

这现在创建一个文本文件,密码哈希/ etc / shadow到文件passwd.1,我们需要对字典运行

在John中,存储了用于攻击的词典字典,需要更大的词典以允许更快的解密和对更复杂的密码的攻击

包含已保存的哈希值的密码文件现在通过John运行。John从之前显示的字典中获取字符串,并计算每个可能的值,直到找到与目标哈希的完全匹配,识别密码。我们现在通过发出以下命令来执行此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $ sudo / usr / bin / john passwd.1

可以看出,我们现在已经加载了6个密码散列(因为这个系统上有6个用户)。出于本调查的目的,我们只想识别dfluser的密码。之后john运行字典攻击,它就会识别匹配

并将其存储

根据密码的复杂性,这可能需要不同的时间。正如你可以看到,在Linux中运行使用John的字典攻击对于简单的密码是相对有效的,并且使用这种字典攻击方法可以很容易地在Windows和Linux文件系统上使用。例如,如果被攻击者想要从另一个系统(如Windows)或SQL文件

中查找散列值,则攻击者只需创建一个带有散列的文本文件(或可能是密码文件转储)值并通过john的字典攻击运行。然而,显然,密码的复杂性和字典的大小将决定处理匹配所需的时间。

引用RainbowCrack软件利用时间存储器权衡技术来加速密码破解的过程。它通过使用彩虹表来做到这一点; 预先计算的明文和散列。为了做到这一点,必须首先创建彩虹表,以加快攻击者的密码破解过程。基本上这允许攻击者做的是在预先计算的表中存储每个可能生成的哈希,类似于John实时生成的哈希。

构建彩虹表需要相当长的时间,但是一旦创建,它允许密码破解数百次比标准字典攻击。解释了Rainbow Tables包括散列函数和缩减函数; 在这里,散列函数将明文处理为像操作系统那样的哈希。减少将散列处理为明文。彩虹表允许这种快速处理的地方在于它包括这些单向散列和缩减函数的链。从

我们可以看出,该表由明文字符串组成,每个密码通过它们的起点和终点。

安装RainbowCrack 后,我们看到我们有许多不同的组件组成软件

Rtgen.exe允许我们根据我们想要的要求生成彩虹表。一旦我们创建了这个,表需要被排序链以允许前面讨论的过程,这是使用rtsort.exe完成。最后,rcrack_gui.exe是GUI,它允许我们根据目标密码哈希查找排序的Rainbow表。要开始调查如何操作,创建彩虹表。

详细介绍了命令行语法rtgen.exe如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index

为了这个调查的目的,我们将创建一个彩虹表集与6张彩虹表,以允许更快的计算时间。

以下命令用于生成彩虹表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\ md5 loweralpha-numeric 1 7 0 3800 33554432 0

由于我们使用密码中具有较低字母数字的MD5算法,这是我们需要破解此密码。然而,对于更复杂的密码,可能需要具有不同密码散列函数的更复杂的彩虹表。CPU现在将计算表中的所有彩虹链

该表由33,554,432个链组成。创建的彩虹表大约需要6个小时在普通处理器上完成,这突出了文件的复杂性,考虑到这是破解非常简单的密码的最基本的表。一旦彩虹表的计算完成

一旦加载,密码哈希就被添加到rcrackGUI

我们之前上传的MD5 LowerAlpha数字彩虹表。

一旦完成,密码以纯文本和十六进制格式显示,

完成需要1.51秒。这突出显示,尽管彩虹表最初可能需要大量的时间来创建,一旦创建,密码破解可以根据攻击者可能具有的表格轻松和快速地完成。

结论

已经进行了大量研究来检查在系统中使用密码哈希所面临的有效性和漏洞。然而,重要的是要强调,为了成功破解操作系统中的密码,如本调查所示;攻击需要获得具有目标密码的哈希值的密码文件,或者通过在目标上实施分组嗅探。大多数讨论的文献回顾了这样的事实,即简单的密码哈希更容易破解,由于破解复杂密码的计算处理。正如我们从调查中看到的,使用的密码和散列算法(例如SHA526)越复杂,由于破解计算所需的时间长度,攻击者可能会变得越不切实际。在此调查中使用Dictionary和Rainbow攻击允许我们分析密码哈希的影响,并比较当密码破解时可以使用的替代方法。通过对密码哈希和破解技术的更深入分析,本调查强调,系统中密码安全的最佳方法是确保包含大写,小写,数字和特殊字符的强大的密码创建。虽然这不能完全防御这些攻击,但它确实对攻击者造成不切实际,可能会起到威慑作用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HACK学习呀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
十款最流行的密码破解工具
近年来,计算机编程者开发了大量密码破解工具,每一款工具都有缺点和优点,有时候选择起来非常让人困惑,以下安全牛为大家介绍十款目前最流行的密码破解工具:
知识与交流
2023/03/25
21.5K0
十款最流行的密码破解工具
破解密码的手段总结
黑客最常用的一个攻击方式,就是获取目标口令,有了对方密码口令,就相当于有了你家的入户门钥匙,那么接下来所面临的危险就可想而知了。
Power7089
2020/09/28
4.5K0
破解密码的手段总结
王小云院士真地破解了MD5吗
MD5(Message-Digest Algorithm 5)是一种被广泛使用的消息摘要算法,也称为哈希算法、散列算法或杂凑算法,可以产生出一个定长的128位(16字节)的散列值(Hash Value),一般用于数字签名以确保信息传输完整性与密码的加密存储。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
恋喵大鲤鱼
2019/03/11
14.1K0
一文读懂 MD5 算法
消息摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。消息摘要算法也被称为哈希(Hash)算法或散列算法。
阿宝哥
2020/02/17
4K0
[1045]彩虹表
彩虹表(Rainbow Table)是一种破解哈希算法的技术,是一款跨平台密码破解器,主要可以破解MD5、HASH等多种密码。它的性能非常让人震惊,在一台普通PC上辅以NVidia CUDA技术,对于NTLM算法可以达到最高每秒103,820,000,000次明文尝试(超过一千亿次),对于广泛使用的MD5也接近一千亿次。更神奇的是,彩虹表技术并非针对某种哈希算法的漏洞进行攻击,而是类似暴力破解,对于任何哈希算法都有效。
周小董
2021/08/24
2.3K0
转 (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
原文地址:http://blog.csdn.net/u011202334/article/details/50585777
仙士可
2019/12/19
7.4K0
转 (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
利用彩虹表破解Hash
另一款相对比较实用的hash破解工具,其本质是基于事先生成好的对应的各种散列类型的彩虹表,支持GPU[amd/英伟达]加速,通常自己都是专门用来跑windows系统用户密码hash[ntlm]的,想比之下,要比之前所介绍的两款hash工具弱很多,虽然没那么智能,但它使用非简单,极易上手,平台支持也相对比较好,此次暂以win平台为例进行简单演示
信安之路
2018/08/08
3K0
利用彩虹表破解Hash
Bcrypt 和密码哈希简史
翻译自 Bcrypt and a Short History of Password Hashing 。译者对这种历史很感兴趣。
云云众生s
2024/03/27
2310
Bcrypt 和密码哈希简史
深入浅出彩虹表原理
        一言以蔽之,彩虹表是一种破解用户密码的辅助工具。彩虹表以时空折中理论为基础,但并不是简单地“以空间换时间”,而是一种“双向交易”,在二者之间达到平衡。1980年,公钥密码学的提出者之一Hellman针对DES算法(一种对称加密算法)提出了一种时空折中算法,即彩虹表的前身:预先计算的散列链集。2003年瑞典的Philippe Oechslin在其论文Making a Faster Cryptanalytic Time-Memory Trade-Off(参考博客2)中对Hellman的算法进行了改进,并命名为彩虹表。当时是针对Windows Xp开机认证的LM散列算法。当然,目前除了破解开机密码,彩虹表目前还能用于SHA、MD4、MD5等散列算法的破译,速度快、破解率高,正如Philippe在论文中提到的:“1.4G的彩虹表可以在13.6s内破解99.9%的数字字母混合型的Windows密码“。实际上,Philippe所做的改进本质上是减少了散列链集中可能存在的重复链,从而使空间的有效利用率更高,关于这一点,后面会详述。
saintyyu
2021/11/22
5.6K0
深入浅出彩虹表原理
加密与安全_深入了解哈希算法
哈希算法是一种重要的加密算法,其核心思想是将任意长度的数据映射为固定长度的哈希值,这个哈希值通常用于验证数据的完整性、索引数据和加速数据查找。
小小工匠
2024/05/26
2740
加密与安全_深入了解哈希算法
常识一用户密码存储策略
升级方案就是对密码进行加密后存储,这样就避免了明文存储的问题。使用什么方式加密呢?比如我们常使用的MD5算法,但这样就是安全的了吗?此处需要再了解几个概念
码农戏码
2021/03/23
1.7K0
工具的使用|John the Ripper破解密码
John the Ripper是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。除了在各种Unix系统上最常见的几种密码哈希类型之外,它还支持Windows LM散列,以及社区增强版本中的许多其他哈希和密码。它是一款开源软件。Kali中自带John
谢公子
2022/01/19
5.4K1
工具的使用|John the Ripper破解密码
KALI LINUX密码安全工具
John the Ripper是一款广泛使用的密码破解工具,它可以帮助渗透测试工程师破解各种类型的密码,包括本地用户密码、网络认证密码、数据库密码等。在本文中,我们将从渗透测试工程师的角度,详细介绍John the Ripper的使用方法和技巧,以及它的一些局限性和应对措施。
ICT系统集成阿祥
2024/12/03
1860
KALI LINUX密码安全工具
如何破解Ubuntu磁盘加密和用户密码?
在Positive Hack Days V论坛上,我快速展示了eCryptfs和密码破解的过程。我在使用了Ubuntu的加密home目录功能后萌生了解密的想法,加密目录的功能可以在安装Ubuntu的时
FB客服
2018/02/06
4.4K0
如何破解Ubuntu磁盘加密和用户密码?
密码破解全能工具:Hashcat密码破解攻略
hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU),多哈希,多操作系统(Linux和Windows本地二进制文件),多平台(OpenCL和CUDA支持),多算法,资源利用率低,基于字典攻击,支持分布式破解等等,目前最新版本为4.01,下载地址https://hashcat.net/files/hashcat-4.1.0.7z,hashcat目前支持各类公开算法高达247类,市面上面公开的密码加密算法基本都支持!
知识与交流
2023/03/25
33.1K0
密码破解全能工具:Hashcat密码破解攻略
为什么说用 MD5 存储密码非常危险,这些你该清楚
很多软件工程师都认为 MD5 是一种加密算法,然而这种观点其实是大错特错并且十分危险的,作为一个 1992 年第一次被公开的算法,到今天为止已经被发现了一些致命的漏洞,我们在生产环境的任何场景都不应该继续使用 MD5 算法,无论是对数据或者文件的内容进行校验还是用于所谓的『加密』。
AlbertZhang
2021/02/25
1.2K0
深入解析MD5哈希算法:原理、应用与安全性
MD5(Message Digest Algorithm 5,信息摘要算法5)是一种广泛使用的哈希算法,它将任意长度的“字节串”映射为一个固定长度的大数,并且设计者寄希望于它无法逆向生成,也就是所谓的“雪崩效应”。MD5算法在信息安全领域具有重要地位,常用于数据完整性校验、密码存储等场景。然而,随着计算能力的提升和密码学研究的深入,MD5算法的安全性已经受到严重挑战。
公众号:码到三十五
2024/04/02
3.5K0
深入解析MD5哈希算法:原理、应用与安全性
写给开发人员的实用密码学 - Hash算法
说到Hash(哈希),开发人员应该不陌生,比如Hash表是一种非常常用的数据结构,通过Hash表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。
云水木石
2020/12/29
2.2K0
写给开发人员的实用密码学 - Hash算法
按照措施将密码安全等级划分为5层
相同:登陆成功 不同:登陆失败 使用哈希算法(可以是md5, sha1, sha256,sha512 结果长度依次增长):
用户8983410
2021/10/08
1K0
MD5加密算法
MD5信息摘要算法 (英语:MD5 Message-Digest Algorithm),一种被广泛使用的 密码散列函数 ,可以产生出一个128位(16 字节 )的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家 罗纳德·李维斯特 (Ronald Linn Rivest)设计,于1992年公开,用以取代 MD4 算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如 SHA-2 。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如 SSL 公开密钥认证或是 数字签名 等用途。
taoli
2022/09/30
1.3K0
MD5加密算法
相关推荐
十款最流行的密码破解工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验