我是如何破解你的WINDOWS密码的 ?(1)
我是如何破解你的WINDOWS密码的 ?(1)
密码可以看作我们主要,甚至某些情况下唯一可用于防范入侵的防线。就算入侵者无法在物理上接触到计算机,对于对外的Web应用,他们依然可以通过远程桌面协议或身份验证功能访问到服务器上的服务。 本文的主要是为了告诉您Windows创建和存储密码哈希(Hash)的方式,以及这些哈希的破解方式。在介绍了如何破解Windows密码后,我还将介绍一些技巧,帮助您防范此类攻击。
介绍
密码可以看作我们主要,甚至某些情况下唯一可用于防范入侵的防线。就算入侵者无法在物理上接触到计算机,对于对外的Web应用,他们依然可以通过远程桌面协议或身份验证功能访问到服务器上的服务。
本文的主要目的是为了告诉您Windows创建和存储密码哈希(Hash)的方式,以及这些哈希的破解方式。在介绍了如何破解Windows密码后,我还将介绍一些技巧,帮助您防范此类攻击。
Windows是如何存储密码的
运行Windows的计算机使用两种方法对用户密码创建哈希,这两种方法在本质上有着不同的安全意义。这两种方法分别是LAN Manager (LM)以及NT LAN Manager第二版(NTLMv2)。哈希是一种加密功能所获得的结果,这种加密需要获取任意大小的字符串数据,并用算法对其进行加密,然后返回一个固定大小的字符串。
LM密码哈希
LAN Manager哈希是Windows操作系统最早使用的密码哈希算法之一,并且在Windows 2000、XP、Vista和7中使用了更先进的NTLMv2之前,这也是唯一可用的版本。这些新的操作系统虽然可以支持使用LM哈希,但主要是为了提供向后兼容性,不过在Windows Vista和Windows 7中,该算法默认是被禁用的。
密码的LM哈希需要使用下列六个步骤计算获得:
将用户的密码全部转换为大写字母
给密码添加空(null)字符,直到密码长度等于14个字符
将新获得的密码拆分为两组7位的字符值组
使用这些值创建两个DES加密密钥,并为每一组添加一个奇偶校验位,这样即可创建出64位的密钥
使用每个DES密钥加密一个预定义的ASCII字符(KGS!@#$%),这样即可获得两个8字节Ciphertext值
这两个8字节的Ciphertext值结合组成一个16字节的值,也就是最终获得的LM哈希
举例来说,如果使用“PassWord123”作为密码,在上述操作中这个密码会被分别转换为:
PASSWORD123
PASSWORD123000
PASSWOR和D123000
PASSWOR1和D1230001
E52CAC67419A9A22和664345140A852F61
E52CAC67419A9A22664345140A852F61
图1: 将密码转换为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哈希将不堪一击。
NTLMv2密码哈希
NT LAN Manager (NTLM)是由微软开发,用于取代LM的身份验证协议。最终通过改进,从Windows NT 4开始,NTLMv2被用作全新的身份验证方法。
NTLMv2哈希(下文简称为NT哈希)的创建在操作系统实际参与的工作上更加简单,并需要使用MD4哈希算法,通过一系列数学计算创建哈希。MD4算法需要使用三次,这样才能产生NT哈希。举例来说,“PassWord123”这个密码的MD4哈希就可以表示为“94354877D5B87105D7FEC0F3BF500B33”。
图2: 将密码转换为NTLMv2哈希
MD4通常比DES更加健壮,因为可以接受更长的密码,可允许同时使用大写和小写的字母,并且并不需要将密码拆分为更小,更易于破解的片段。
对于使用NTLMv2创建的哈希,可能最大的不足在于Windows无法使用一种名为Salting的技术。Salting这种技术可以用于生成随机数,并将该随机数用于计算密码的哈希。这意味着完全相同的密码可能会具有完全不同的哈希值,这才是最理想的情况。
在这种情况下,用户就可以创建所谓的Rainbow Table。Rainbow table并不是指五颜六色的咖啡桌,实际上是一种表格,其中包含了由某一数量的字符所能组成的每一种可能密码的每一个哈希值。通过使用Rainbow table,我们就可以从目标计算机提取密码的哈希值,并在表中进行检索。一旦在表中找到相同的内容,就等于知道了密码。正如您所想的,就算由很少字符组成的Rainbow table,整个表也会非常庞大。这意味着此类表的创建、存储,以及检索都是很麻烦的工作。
结论
在本文的第一部分中,我们介绍了密码哈希的概念,以及Windows用于创建和存储这些数值的机制。另外我们还介绍了每种方法的局限性,以及可以用于破解这些密码的可能途径。在后续的内容中,我们将介绍获取和破解这些哈希的方法,并证明局限性的存在。在介绍完之后,我还将提供一些技巧,让您获得更进一步的保护,并创建满足所需强度的密码。
这篇是网上找的,但是译者只翻译了第一篇,我接下来会翻译第二篇
我是如何破解你的WINDOWS密码的 ?(1)的更多相关文章
- 我是如何破解你的WINDOWS密码的 ?(2)
介绍 在这个系类的第一部分中,我们揭示了windows创建和储存密码的机制.我们也涉猎了一点两种加密方法的弱点和破解的方法.在这系列的第二篇也是最后一篇文章中,我会实战用网上免费的工具一步一步的来破解 ...
- Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码
Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...
- [转帖]利用hydra(九头蛇)暴力破解内网windows登录密码
利用hydra(九头蛇)暴力破解内网windows登录密码 https://blog.csdn.net/weixin_37361758/article/details/77939070 尝试了下 能够 ...
- Windows密码破解工具ophcrack
Windows密码破解工具ophcrack Windows用户密码都采用哈希算法加密进行保存.Kali Linux内置了专用破解工具ophcrack.该工具是一个图形化界面工具,支持Windows ...
- Windows密码获取和破解(初探)
Windows密码获取和破解 本文只是简单的讲明密码获取和破解 具体的操作细节均以模糊或具体代码混淆等方式避开 如有兴趣请自行研究,本文不做细说~~~ 获取思路: Windows密码一般是以" ...
- 基于HOOK和MMF的Windows密码渗透技术
随着计算机与网络的普及,信息安全越来越成为人们所普遍关心的大事.密码的渗透与反渗透在此领域表现的愈演愈烈.本文深入分析了各个版本Windows密码的特点,尤其是针对windws2K/XP安全性提高的情 ...
- 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...
- 教你破解隔壁妹子wifi密码,成功率高达90%
破解wifi密码听起来很复杂,实际上也不是非常的复杂,今天教大家如何破解隔壁妹子的wifi密码. 首先声明:本教程只用于技术交流,请勿用于非法用途.请严格遵循相关法律法规.为了保护本例中被破解密码者信 ...
- 破解ZIP加密文件密码fcrackzip
破解ZIP加密文件密码fcrackzip ZIP是最常见的文件压缩方式.由于其压缩算法开源,主流操作系统都支持这种压缩算法.ZIP压缩方式支持密码加密.加密的时候会在文件头部保存密钥相关信息.利用这个 ...
随机推荐
- Maven+ajax+SSM实现编辑修改
转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...
- 下载并搭建maven环境
1.下载maven 1.在官网下载maven http://maven.apache.org/download.cgi 2.将下载maven解压.复制路径. 2.搭建maven环境 1.新建M2_H ...
- 论文翻译:2020_FLGCNN: A novel fully convolutional neural network for end-to-end monaural speech enhancement with utterance-based objective functions
论文地址:FLGCNN:一种新颖的全卷积神经网络,用于基于话语的目标函数的端到端单耳语音增强 论文代码:https://github.com/LXP-Never/FLGCCRN(非官方复现) 引用格式 ...
- 《剑指offer》面试题11. 旋转数组的最小数字
问题描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的 ...
- 通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二)
通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二) 效果:默认一直隐藏导航栏,当滚动条滚到超过300px按钮出现,点击回 ...
- html,js 获取父窗口元素
$("#父窗口元素ID",window.parent.document) window.parent.document.getElementById("父窗口元素ID&q ...
- 【记录一个问题】cv::cuda::dft()比cv::dft()慢很多
具体的profile调用图如下: 可以看见compute很快,但是构造函数很慢. nvidia官网看到几篇类似的帖子,但是没有讲明白怎么解决的: opencv上的参考文档:https://docs.o ...
- python技巧一行命令搞定局域网共享
python超强玩法--一行命令搞定局域网共享 今天刷到python的一个新玩法,利用python自带的http服务,快速创建局域网共享服务,命令如下: python -m thhp.server ...
- golang中通过bufio和os包读取终端中输入的一行带空格的数据
1. 如果读取不带空格的数据可以使用fmt.Scan或fmt.Scanln读取一个或多个值,但是不能读取带空格的数据,可以使用bufio和os两个包结合 package main import ( & ...
- golang操作mysql
1. 安装mysql驱动库和sqlx基于官方sql库的扩展库 go get github.com/go-sql-driver/mysql go get github.com/jmoiron/sqlx ...