一、背景

本文的主要介绍Windows创建和存储密码哈希(Hash)的方式,以及这些哈希的破解方式。

我们使用的Windows的计算机使用两种方法对用户密码创建哈希,这两种方法在本质上有着不同的安全意义。这两种方法分别是LAN Manager (LM)以及NT LAN Manager第二版(NTLMv2)。哈希是一种加密算法,通过对加密对象字符串计算得出一个字符串,这种加密需要获取任意大小的字符串数据,并用算法对其进行加密,然后返回一个固定大小的字符串。

其中,早期的LAN Manager哈希是Windows操作系统最早使用的密码哈希算法之一,并且在Windows 2000、XP、Vista和7中使用了更先进的NTLMv2之前,这也是唯一可用的版本。这些新的操作系统虽然可以支持使用LM哈希,但主要是为了提供向后兼容性,不过在Windows Vista和Windows 7中,该算法默认是被禁用的。

LAN Manager哈希需要使用下列六个步骤计算获得:

●将用户的密码全部转换为大写字母

●给密码添加空(null)字符,直到密码长度等于14个字符

●将新获得的密码拆分为两组7位的字符值组

●使用这些值创建两个DES加密密钥,并为每一组添加一个奇偶校验位,这样即可创建出64位的密钥

●使用每个DES密钥加密一个预定义的ASCII字符(KGS!@#$%),这样即可获得两个8字节Ciphertext值

●这两个8字节的Ciphertext值结合组成一个16字节的值,也就是最终获得的LM哈希。

但是LM存储的密码有一些明显的不足。

首先,加密工作是基于数据加密标准(DES)的,DES最初来源于IBM在二十世纪七十年代的一个项目,该项目最终被NIST进行了改进,并获得了NSA的支持,于1981年作为一项ANSI标准发布。多年以来,DES都被认为是足够安全的,但由于这种小型密钥只有56位,因此从九十年代开始,已经变得不那么安全。到了1998年,Electronic Frontier Foundation只需要大概23小时即可破解DES。因此,DES开始变得不够安全,并逐渐被三重DES(Triple-DES)以及AES所取代。简单来说,这些都属于其他加密标准,但由于现代计算机的强大性能,很快也被破解。

LM哈希最大的弱点可能就是DES密钥的创建过程。在这个过程中,用户提供的密码会被自动转换为全部大写,并通过补充变为14个字符(这也是LM哈希密码的最大长度),随后会被分为两组7位字符的值。对于由14个可印刷的ASCII字符组成的密码,有95的14次方种可能性,而一旦将其腰斩为两组7位的字符,可能性就降低为95的7次方种,而如果您只允许使用大写的ASCII字符,可能性将进一步降低为69的7次方种。因此从本质上将,就算您使用不同的大小写字符,并使用长密码,一旦密码被保存成LM哈希,所有的努力都将付诸东流,在暴力破解面前,LM哈希将不堪一击。

基于这种风险,微软推出NT LAN Manager (NTLM)哈希,用于取代LM的身份验证协议。最终通过改进,从Windows NT 4开始,NTLMv2被用作全新的身份验证方法。

更多参见官方文档

二、NTLMv2哈希加密

NTLMv2哈希的创建在操作系统实际参与的工作上更加简单,并需要使用MD4哈希算法,通过一系列数学计算创建哈希。MD4算法需要使用三次,这样才能产生NTLMv2哈希。

MD4通常比DES更加健壮,可以接受更长的密码,可允许同时使用大写和小写的字母,并且并不需要将密码拆分为更小,更易于破解的片段。

对于使用NTLMv2创建的哈希,可能最大的不足在于Windows无法使用一种名为Salting的技术。Salting这种技术可以用于生成随机数,并将该随机数用于计算密码的哈希。这意味着完全相同的密码可能会具有完全不同的哈希值,这才是最理想的情况。

在这种情况下,用户就可以创建所谓的Rainbow Table。Rainbow table并不是指五颜六色的咖啡桌,实际上是一种表格,其中包含了由某一数量的字符所能组成的每一种可能密码的每一个哈希值。通过使用Rainbow table,我们就可以从目标计算机提取密码的哈希值,并在表中进行检索。一旦在表中找到相同的内容,就等于知道了密码。正如您所想的,就算由很少字符组成的Rainbow table,整个表也会非常庞大。这意味着此类表的创建、存储,以及检索都是很麻烦的工作。

三、NTLM密码策略及风险

在此介绍了影响 NTLM 密码更改的新行为以及如何使用注册表来更改此行为。

自Microsoft Windows Server 2003 SP1开始及之后的版本中,NTLM 网络身份验证行为发生了变化。域用户在修改密码后一小时内仍可以使用旧密码访问网络。这是因为基于使用 Kerberos 进行身份验证的现有组件不受此更改的影响。

此更改的目标是允许后台进程(例如服务)继续运行一段时间,直到管理员有机会/时间更新新密码的凭据。

为了在分布式环境中可靠地支持 NTLM 网络身份验证的网络访问,NTLM 网络身份验证设计有如下行为:

1)域用户使用 NTLM 成功更改密码后,旧密码仍可在用户可定义的时间段内用于网络访问。此行为允许在密码更改传导生效这段时间内,某些账户(例如服务帐户)可登录到多台计算机访问网络。

2)密码生存期的延长仅适用于使用 NTLM 的网络访问交互式登录行为不受影响。也不适用于托管在独立服务器或成员服务器上的帐户。只有域用户受此行为影响。

3)可以通过编辑域控制器上的注册表来配置旧密码的生命周期。此注册表更改无需重新启动即可生效。

注:仅当域控制器上的有效密码策略将“强制密码历史记录”设置为指定将记住两个或更多密码的值时,才会出现上文中描述的行为。密码策略应在域级别设置。可以使用 Secpol.msc 管理单元来确定该策略是否已在域控制器上生效。

【更改域用户旧密码的生命周期】:

要更改旧密码的生命周期,请将名为 OldPasswordAllowedPeriod 的 DWORD 条目添加到域控制器上的以下注册表子项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

在其下,新建:DWORD值:OldPasswordAllowedPeriod ,创建完成后,将项值的值配置为要过期的时间,0为立即生效。

生命周期以分钟为单位设置。如果未设置此注册表值,则旧密码的默认生命周期为 60 分钟。


注:此注册表设置不需要重新启动即可生效。且此行为不会导致安全漏洞。只要只有一个用户知道新旧两个密码,用户仍然可以使用任一密码安全地进行身份验证。如果已知用户的密码被泄露,管理员应为该用户及时重置密码并配置为“用户必须在下次登录时更改密码”。管理员应要求用户在下次登录时更改密码,以尽快使旧密码失效。

关于windows密码加密算法的说明相关推荐

  1. 使用Rainbow tables和Ophcrack的组合工具破解Windows密码

    本文为寻找人生的起点 (http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 . 从前面的两篇文章(得到WindowsXP管理员权限的有效方法 ,John/bkhiv ...

  2. 用 Ubuntu 重置 Windows 密码

    用 Ubuntu 重置 Windows 密码 5人收藏此文章, 我要收藏发表于2年前(2010-11-30 11:15) , 已有391次阅读 ,共1个评论 首先,你要做的事是创建一个装有 Ubunt ...

  3. 凯撒密码加密算法 (8 分)

    凯撒密码加密算法 (8 分) 编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母. 输入格式: 接收两行输入,第一行为待加密的明文,第二行为密钥 ...

  4. 如何使用Linux重置Windows密码

    如果您(或您认识的人)忘记了Windows密码,您将很高兴了解chntpw ,这是一个可用于重置Windows密码的简洁的Linux实用程序. 对于此方法,我创建了Windows虚拟机,并在我的用户帐 ...

  5. 计算机加密怎么设置方法,如何设置电脑密码?手把手教你如何设置电脑Windows密码...

    说到电脑密码,很多朋友都会选择设置密码来保护电脑安全.最近小编发现有小伙伴想知道,电脑怎么设置开机密码.所以,电脑店就整理了电脑Windows设置开机密码的资料,下面就手把手教你如何设置电脑Windo ...

  6. Windows取证——CHNTPW工具使用(可更改 Windows 密码)

    一.概述 chntpw是一个Kali Linux工具,可用于编辑Windows注册表,重置用户密码,将用户提升为管理员,以及其他几个有用的选项.使当您不知道Windows密码是什么时,可以利用chnt ...

  7. free rainbow 分布式破解 WINDOWS 密码的最好选择!

    我们虽然可以通过Rainbow Table与Ophcrack的组合以更加快速的方式暴力破解Windows密码.但是对于个人,下载或者自己制作几G,甚至几十G的Rainbow Table,结果只破解一. ...

  8. windows密码破解(哈希破解技术)

    一.windows密码与哈希 1.我们用于登录的windows密码,在windows系统中会进行加密.一般密码加密文件储存在c盘的windows\system32\config目录下,文件名是SAM文 ...

  9. 很方便的密码加密算法BCrypt

    摘要:用户表的密码一般都不是使用明文,使用明文坏处可以参考之前CSDN数据库被黑导致用户密码泄露造成的影响.虽然使用明文也有一定的方便之处(毕竟现在的加密都是单向的,比如客户打电话问密码.老大或者上级 ...

  10. 计算机密码是空的怎么重置,电脑忘记开机登录密码怎么办? Windows 密码重置 - 合一学院...

    [ 电脑忘记开机登录密码怎么办 ] 电脑很久没有用或者是刚设置好开机密码都很容易忘记,有些时候还会间歇性失忆会突然忘记密码,遇到这种情况重装系统又太麻烦,今天就就教大家怎样重置电脑的密码. 测试的系统 ...

最新文章

  1. 你知道Material Type(ROH,HALB,FERT…)为什么缩写是ROH,HALB,FERT吗?哈哈哈
  2. php ajax搜索,PHP 与AJAX
  3. Angular Universal 官网翻译
  4. wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox
  5. 知乎回应月饼问题:忽略了麦芽糖或致部分人不耐受,召回所有月饼
  6. Cocos2dx---------------------添加Admob广告
  7. 巧解汽车冬季病 启动无力别“轰油”热车
  8. find的详细用法及其例子
  9. 用代码排出自己的名字
  10. Atitit nlp 文本相似性计算 目录 1. 原理编 1 1.1. 4.1基于拼音相似度的汉语模糊搜索算法 2 1.2. (1)最长公共子串(基于词条空间) 2 1.3. 2 1.4. (2
  11. img标签图片自适应
  12. Win10电脑怎么取消开机密码?
  13. TFP与TFTP的联系与区别
  14. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(8月3日—8月9日)...
  15. WPS(word)中插入表格时怎么单独调整一个单元格子的大小
  16. [对话CTO]当当网熊长青:兴趣是成为优秀工程师的第一因素-CSDN.NET
  17. Python tkinter Text 多行文本框变化事件
  18. TP 框架解决Unknown column 'XXX' in 'where clause' 问题
  19. 与门非门在电子计算机中的应用,【E电路】数字电路基础:与门电路
  20. 写出HTML文档的基础结构,HTML文档的基础结构.ppt

热门文章

  1. GAN·生成对抗网络——札记2-读《生成式对抗网络 GAN 的研究进展与展望》
  2. java 万年历绪论_基于安卓Android的万年历的设计与开发(含录像)
  3. A-Z,所有汽车品牌完整json格式
  4. c语言文字表达式,【原创】化学方程式配平算法的设计与实现( 非Naylon版)
  5. 零基础新人如何转行做新媒体运营?
  6. [网络诈骗]奈几利亚(奈及利亚), E-Mail 骗术
  7. simulink enable嵌套问题
  8. 谈论机器学习中,哪种学习算法更好有意义吗?
  9. MER 音乐情感识别-论文笔记8
  10. 【整理向】老板让我用SPSS做A/Btest,我偏要用python