安全科普:详解Windows Hash与破解

考虑到网络应用数据的安全性时,建立一个渗透测试方法变得越来越重要。我们越来越依赖于网络通信与基于云的数据系统,这些系统潜在的安全漏洞是我们所不知道的。

设计和维护一个系统的安全已成为标准,你怎么确定这些系统的安全性?答案在于如何通过渗透测试来保护你的信息资产安全。

概述

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

常用hash算法的介绍:

(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) SHA-1及其他

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

Hash算法在信息安全方面的应用主要体现在以下的3个方面:

文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

数字签名

Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

鉴权协议

如下的鉴权协议又被称作挑战–认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。以上就是一些关于hash以及其相关的一些基本预备知识。

windows hash

Windows hash由二部分组成,分别是LM HASH&NT HASH。Windows系统关于hash的组成如下:

用户名称:RID:LM-HASH值:NT-HASH值

1

Windows下LM HASH生成原理

LM HASH生成规则如下:

用户的密码被限制为最多14个字符。

用户的密码转换为大写。

系统中用户的密码编码使用了OEM内码页

密码不足14字节将会用0来补全。

固定长度的密码被分成两个7byte部分。每部分转换成比特流,在分7bit为一组末尾加0,组成新的编码

上步骤得到的8byte二组,分别作为DES key为“KGS!@#$%”进行加密。

将二组DES加密后的编码拼接,得到最终LM HASH值。

实例演示:

假设明文口令是“admin”,首先全部转换成大写“ADMIN”,

密码字符串大写后变换成十六进制串:41444D494E

转换后的十六进制字符串按照二进制计算只有40bit,为了满足14字节的要求,所以需要补全72bit的二进制0,得最终补全后十六进制为:

41444D494E000000000000000000

将上述编码(41444D494E000000000000000000)分成2组7byte的数据,分别为:

41444D494E0000

00000000000000

将每一组7byte的十六进制转换为二进制,每7bit一组末尾加0,在转换成十六进制组成得到2组8byte的编码:

41444D494E0000—>40A212A894700000

00000000000000—>0000000000000000

利用上面计算出来的2组编码,作为DES加密key分别对“KGS!@#$%”(换算成十六进制:4B47532140232425)字符,进行DES加密,如下:

40A212A894700000—-DES加密—-F0D412BD764FFE81

0000000000000000—-DES加密—-AAD3B435B51404EE

将二组值拼接,最终得到LM HASH值为:

F0D412BD764FFE81 AAD3B435B51404EE

验证如下图:

2

Windows下NTLM HASH生成原理

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

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

NTLM Hash:32ED87BDB5FDC5E9CBA88547376818D4。

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

验证如下:

开始破解

抓取Windows hash

在windows中分别用了LM HASH和NTLM HASH对密码进行了加密,所以抓取任意一个HASH都可以破解密码,只不过如果二个HASH都可以抓到,密码的破译成功率会大大提升。经常使用抓windows hash的工具很多,像SAMInside,gethash等等。个人比较倾向于使用SAMinside工具,该工具不仅可以在线抓取windows hash 还可以导入存储windows hash的 sam等文件获取hash值。

文件位置:C:\windows\system32\config\SAM在windows xp,server2003之前包括xp&2003的系统都可以通过工具抓取到完整的LM HASH&NT HASH的。这样就可以直接通过在线的破译网站进行密码破解。但是之后的系统可以改变一些设置让操作系统存储LM HASH值到SAM文件中方便我们的抓取。

xp下hash抓取及破解(略)

win 7下hash抓取及破解

步骤:导入本地的用户hash值

看不清图片,用户名为nic的NT HASH为:209C6174DA490CAEB422F3FA5A7AE634

可以看到只能抓取到NT HASH值,我们也可以通过NT HASH去破解windows密码的,因为LM HASH和NT HASH只是二种不同的加密方式,针对同一个密码。

看到了吧,没有LM HASH照样可以破密码的哟,只是有了LM HASH破解成功率会多点。

但是当通过NT HASH无法破译密码的时候,我们就要想办法把LM HASH给搞出来,通过更改本地安全策略设置,具体步骤如下:

但是这个法子有点局限就是,必须下一次更改密码后才生效。唉~

改完密码后再抓:

LMHASH:A0A9F8A5B5510FFDE72C57EF50F76A05

NT HASH: 6097374CDF87C142A7F98798EBF4B402

我们先针对每一个生成的HASH进行破解:

LM HASH破解:

只有LM,破解出来的是大写。

NT HASH破解:(ps: 换个长一点的密码就付费了)

双剑合璧,LM HASH&NT HASH破解:

输入格式, LM HASH:NT HASH,正确密码就出来了


本文作者:小螺号(点融黑帮),点融网高级安全工程师,网络白帽子。主要从事应用漏洞挖掘,入侵事件监控及防御等工作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • (1)Windows系统下的Hash密码格式 Windows系统下的Hash密码格式为:用户名称:RID:LM-H...
    SaveNull阅读 1,956评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,947评论 1 13
  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 12,727评论 2 17
  • 要如何形容, 诗人笔下的常客——菩提花? 或许是, 这是寄宿制高中的盛夏? 周五补课的傍晚, 两排梧桐树间, 女学...
    沈公子的北京话阅读 444评论 0 0
  • 亲爱的自己,不管怎么样,记得笑,记得看看窗外的风景,你会发现世界很美。有不一样的天空。不管自己有多差劲,只要心怀希...
    艾晓义阅读 203评论 0 0