Windows NT/NTLM 加密

Hash,一般翻译为“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

一、MD5 和 SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。那么他们都是什么意思呢?这里简单说一下:

(1)MD4

MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD是 Message Digest的缩写。它适用在32位字长的处理器上用高速软件实现,它是基于 32 位操作数的位操作来实现的。

(2) MD5

MD5(RFC 1321)是 Rivest于1991年对MD4的改进版本。它仍以512位分组来输入,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好

(3)SHA1 及其他

SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。

二、Windows系统下的hash密码格式

Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如:Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示

用户名称为:Administrator

RID为:500

LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
    NT-HASH值为:683020925C5D8569C23AA724774CE6CC

(1)Windows下LM Hash值生成原理

假设明文口令是“Welcome”,首先全部转换成大写“WELCOME”,再做将口令字符串大写转后后的字符串变换成二进制串: “WELCOME” -> 57454C434F4D4500000000000000

技巧:可以将明文口令复制到UltraEdit编辑器中使用二进制方式查看即可获取口令的二进制串。

说明:如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加0x00补足14字节。然后切割成两组7字节的数据,分别经str_to_key()函数处理得到两组8字节数据:

57454C434F4D45 -str_to_key()-> 56A25288347A348A
    00000000000000 -str_to_key()-> 0000000000000000

这两组8字节数据将做为DESKEY对魔术字符串“[email protected]#$%”进行标准DES加密

"[email protected]#$%" -> 4B47532140232425

56A25288347A348A -对4B47532140232425进行标准DES加密-> C23413A8A1E7665F

0000000000000000 -对4B47532140232425进行标准DES加密-> AAD3B435B51404EE

将加密后的这两组数据简单拼接,就得到了最后的LM Hash

LM Hash: C23413A8A1E7665FAAD3B435B51404EE

(2) Windows下NTLM Hash生成原理

从IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自己的挑战响应机制,NTLM Hash应运而生。假设明文口令是“123456”,首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节

"123456" -> 310032003300340035003600

从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian序,ntoh*()、hton*()函数不宜用在SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成0x00??。此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值,

16字节310032003300340035003600 -进行标准MD4单向哈希-> 32ED87BDB5FDC5E9CBA88547376818D4

就得到了最后的NTLM Hash

NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4

与LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"[email protected]#$%"。MD4是真正的单向哈希函数,穷举作为数据源出现的明文,难度较大。

三、总结一下:

两种加密算法分别是LanManager(LM)和NTLM,LM只能存储小于等于14个字符的密码hash,如果密码大于14个,windows就自动使用NTLM对其进行加密了,(这个在LC5里有两种破解方式,所以破解不出来的时候可以换种思路,基本是NTLM的)一般情况下使用PwDump或其他一些hash导出工具(如Cain)导出的hash都有对应的LM和NTLM值,也就是说这个密码位数<=14,如果大于14位那么就只有对应的NTLM hash可用了,这时LM也会有值,但对我们来说没用,不能靠他来查LM彩虹表。 
      操作系统:对于XP、win2k和win2k3来说,系统默认使用LM进行加密(也可人为设置成NTLM),之后的win2008、win7和Vista禁用了LM,默认使用NTLM,所以不要拿着LM生成的rainbow table去找NTLM的hash值,但是反过来却可以,因为使用LM方式的加密往往会存在一个对应的NTLM hash(如果密码位数<=14的话,系统同时对这个密码使用NTLM加密并存储了NTLM的hash),这时候使用ophcrack的NTLM表查找的就是这个NTLM的hash了,而不是LM的hash。

时间: 2024-12-15 05:43:05

Windows NT/NTLM 加密的相关文章

第一章 Windows NT System Components

Page 3. The focus(焦点) of this book is Windows NT file system and the interaction(交互) of the file system with the other core(核心) operating system components(组件,部分).If you are interested   in providing(提供) value-added(增值) software for the Windows NT pl

SharePoint 创建SSP时出现异常,信息如 设置失败: 找不到 Windows NT 用户或组 &#39;【

1.安装完sharepoint后,使用"sharepoint产品和技术配置向导"配置时,中间有连接sql server时输入的用户名和信息,(如果域是test.com)切记只能输入test/administrator的用户名格式.   2.如果还有这样的问题,可以打上sharepoint的补丁包,参考网址:    http://support.microsoft.com/kb/953471 SharePoint 创建SSP时出现异常,信息如 设置失败: 找不到 Windows NT 用

SQLServer 错误: 15404,无法获取有关 Windows NT 组/ 用户 &#39;WIN-8IVSNAQS8T7\Administrator&#39; 的信息,错误代码 0x534。

在自动清理日志的作业中,执行过程出现如下问题:"SQLServer 错误: 15404,无法获取有关 Windows NT 组/ 用户 'WIN-8IVSNAQS8T7\Administrator' 的信息,错误代码 0x534." 解决方法:打开作业的常规界面,把这个"WIN-I556UB3ODG2\Administrator"改成:"可以操作的用户(比如 sa)". 自动清理日志的代码: ALTER DATABASE 数据库名称 SET RE

Windows NT WinLogon Notify

在NT系列Windows操作系统中,恶意软件可以通过关联Winlogon特定的事件来使自身被启动,如Lock,Logoff,Logon,Shutdown,StartScreenSaver,StartShell,Startup,StopScreenSaver,Unlock等,这甚至能够使得恶意软件在安全模式下被加载.WinLogon的通知事件在注册表的位置是: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlo

Windows NT

---------siwuxie095 Windows NT,全称 Microsoft Windows New Technology (无关小贴士:NTFS 全称 New Technology File System) 查看操作系统名称: @echo off echo %OS% pause>nul sublime中: 运行一览: 仅仅一个 Windows_NT,还是无法判断具体是什么操作系统, 截止目前 2017/2/6,微软已推出的 Windows NT 操作系统, 分别是: Microsof

开源并兼容Windows NT的操作系统ReactOS简介

*************************************************************************************************************************** 作者:EasyWave                                                               时间:2014.10.06 类别:开源Windows NT系统-ReactOS操作系统简介      声

windows下dbca删除OracleserviceXXX时遇到错误:dim-00014 Cannot open the Windows NT Service Control Manager

windows下dbca删除OracleserviceXXX时遇到错误:dim-00014 Cannot open the Windows NT Service Control Manager  O/S-Error: (OS 5) Access is denied. 截图如下: 经过查询mos,发现如下文章与该报错匹配: How To Create a Service using oradim in Windows Vista (文档 ID 432713.1) 下面截取该mos文章的内容: Ap

Windows NT 的历史

Windows NT 的版本历史 https://blog.csdn.net/flyingpig2016/article/details/53282895/ 按照自己找到的资料:windows NT 是 MS与IBM 闹掰了之后 自己研发的 是从 DEC 请来了 大拿 微软自己投钱研发的新一代曹组系统. 因为 微软当时负责 OS/2 3.X的版本. 所以 NT最初的版本就是NT 3.1了 (自己瞎猜的) 注意 这里面windows NT和 windows 95 windows 98 不一样 wi

[转帖]windows7/windows NT介绍

windows7/windows NT介绍 原文应该是IT168发布的 但是一直没找到 感觉看了之后 明白了很多 技术都是互相融合的 没有严格意义上的对立直说. Windows 7/Windows Server 2008 R2发布已经有近一个月了,加上RC/beta阶段,相信很多人都已经接触或者使用过了.很多人都已经知道在界面,以及DirectX.图形架构上的改进,然而却很少有清晰.令人信服的资料,说明操作系统 变得更快强.更强.更稳定,有的只是功能变的更加复杂了.有没有最基本.最核心的改动,可