Kali测试:散列密码破解(一)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Kali渗透测试:散列密码破解(一)

Kali渗透测试:散列密码破解
某些网站的安全机制设置有缺陷,导致自身的关键数据库被渗透。很多用户在不同网站使用的是相同的用户名和密码,因此黑客可以通过获取通过获取用户在A网站的用户名和密码从而尝试登录B网站,这就是“撞库攻击”。 如2014年12月25日开始在互联网上“疯传的”12306网站用户信息,就是黑客通过撞库攻击所获得的。

被泄漏的数据库中的数据大都是明文,不过,现在的数据库大都采用了散列加密的方式保存。如Windows操作系统就采用散列加密的方式保存登录密码。这些密码都是经过了散列加密后保存到数据库中的,密码的散列值就是对口令进行一次性的加密处理而形成的杂乱字符串。这个加密过程被认为是不可逆的,也就是说,从散列值中是不可能还原出原口令的。如密码“999999”经过散列加密(MD5)之后就变成了“52C69E3A57331081823331C4E69D3F2E”。这个散列值保存在了数据库中,在进行验证的时候,我们只需要将输入的值经过散列加密之后再与保存的值进行比较,就可以知道密码是否正确。即使黑客获得了“52C69E3A57331081823331C4E69D3F2E”,也不能逆向还原出原来的密码“999999”。这样就保证了保存密码的数据库即使被攻破,也不会导致密码被泄露。

由于各种攻击手段的出现,散列加密也并非是安全的。下面介绍一些散列加密的破解方法。

1.1 对基本的LM散列加密密码进行破解
Windows XP操作系统可以说是Microsoft影响力最大的产品之一。虽然这款操作系统在大多数人眼里已经“老迈不堪”,就连Microsoft自己也已经在2014年宣布放弃了对其的支持,但是由于软件兼容性的问题,目前很多机构仍然在使用Windows XP。即使现在,我们仍然有必要来研究一下Windows XP的安全性问题。

首先我们来研究的就是Windows XP的密码安全。我们对于Windows XP开机时或者远程连接时的登录界面并不陌生,我们需要在这个界面输入用户名和密码,操作系统会将我们输入的信息与保存的信息进行对比,如果相同,就可以登录到系统。那么我们是不是趁着计算机的主人离开计算机的时候,就可以偷偷地将里面保存的密码找出来“偷走”呢?事实上,这个想法并非天方夜谭,因为Windows XP中确实保存了密码,而且这个密码也确实可以找到。这个密码就保存在C:\Windows\System32\config\SAM中。在Windows XP和Windows 2003中,我们可以通过工具来抓取完整的LM散列加密密码。我们可以使用一款名为SAMInside的工具来完成这个工作,其工作界面如下图所示。
image.png

SAMInside 是一款Windows密码恢复工具,支持Windows NT/2000/XP/Vista操作系统,主要用来恢复Windows操作系统的用户登录密码。需要注意的是,SAMInside需要依靠读取破解的操作系统中SA M、System两个文件破解出用户密码。这两个文件均位于C:\Windows\System32\config目录。但是在操作运行时这两个文件时受到保护的,无法进行读取操作。因此我们需要在DOS操作系统下,或者WindowsPE操作系统下使用这个工具来查看SAM文件。

执行这个工具后,SAMInside中就会显示出WindowsXP中的密码。那么Windows XP是如何对密码进行加密的呢?这个操作系统采用了一种名为LM散列的加密模式。下面我们就给出加密过程。

◆ 输入的密码值最多位14个字符

◆ 将输入的密码转为大写字符

◆ 将密码转换为大写字符之后转换为十六进制字符串

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

◆ 固定长度的密码被分成两个长度为7个字节的部分

◆ 将每一组7个字节的十六进制转换为二进制,每7位一组末尾加0,再转成十六进制组成得到两组8字节的编码

◆ 将两组8字节的编码,分别作为DES key为”KGS!@#$% ”进行加密

◆ 将两组DES加密后的编码拼接,得到最终的LM散列值

后来对这个加密过程进行了改进,目前的操作系统拥有多种加密方法,其中一种最为有效的方法是“Salting the password”。所谓加“Salt”值,就是加点“佐料”。当用户首次提供密码时(通常是注册时),由系统自动往这个密码里加一些Salt值,这值是由系统随机生成的,并且只有系统知道。然后进行散列。当用户登录时,系统为用户提供的代码加上两个用户使用了同一个密码,由于系统为它们生成的Salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具体特定密码的用户,但这个概率太小了(密码和Salt值都得和黑客使用的一样才行)。不过LM散列算法中并没有使用这个机制,所以虽然我们不能直接由散列值推导出密码,但是两个相同的密码进行LM散列加密之后的值是相同的,因此也为我们提供了破解LM散列加密密码的方法。

1.2 在线破解LM散列加密密码
现在很多网站都提供了破解LM散列加密密码的服务,也就是说你只需要在这些网站上提交找到散列值,这些网站就会在自己的数据库里进行比对,如果找到这个散列值,就可以得到对应的密码。这些网站大都是用一种名为<“彩虹表”的技术。你可以访问在线网站cmd5来实现在线破解LM散列和NTLM散列加密密码。如下图所示,为cmd5网站的界面,该网站可以实现密码散列加密的运算。

image.png

该网站可以实现密码散列加密的运算。可以先尝试一些常见的散列值破解,然后逐渐加大密码的难度。下面我们对一个已经加密的值“32ed87bdb5fdc5e9cba88547376818d4”(NTLM散列加密)进行破解,散列值的逆向运算结果如下图所示:

image.png

1.3 在Kali 中破解散列值
在线破解散列值十分简单,但是实际上散列值的加密方法有很多,常见的有MD5、LM、NTLM这3种加密方法,那么我们如何知道散列值是通过哪一种加密方法得到的呢?这一点很关键,因为不同的加密方法有不同的解密方式。同样Kali中提供了两种用来分辨不同加密方法的工具:一种是hash-identifier另一种是Hash ID。

hash-identifier的使用方法很简单。在Kali中,启动一个终端,输入hash-identifier命令即可启动该工具,命令如下:

┌──(kali㉿kali)-[~]
└─$ hash-identifier

如下图所示:

image.png

将加密之后的散列值输入, hash-identifier就会分析出该散列值的可能加密方法,如下图所示:完成以后使用Ctrl-c组合键退出即可。
image.png

另外,Hash ID也是一个十分有效的工具。打开一个终端,输入命令hashid,然后输入破解的散列值,按Enter键。

┌──(kali㉿kali)-[~]
└─$ hashid 32ed87bdb5fdc5e9cba88547376818d4

image.png

接下文 Kali渗透测试:散列密码破解(二) https://developer.aliyun.com/article/1618760

相关文章
|
6天前
|
安全 网络安全
Kali渗透测试:使用Armitage扫描网络
Kali渗透测试:使用Armitage扫描网络
20 3
|
6天前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
32 2
|
6天前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
27 2
|
6天前
|
Java 网络安全 Windows
Kali渗透测试:使用 Armitage生成被控端和主控端
Kali渗透测试:使用 Armitage生成被控端和主控端
25 2
|
6天前
|
安全 Linux Shell
Kali渗透测试:使用Metasploit对Web应用的攻击
Kali渗透测试:使用Metasploit对Web应用的攻击
35 4
|
6天前
|
网络协议 安全 Linux
Kali渗透测试:拒绝服务攻击(一)
Kali渗透测试:拒绝服务攻击(一)
35 2
|
6天前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
31 2
|
6天前
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
21 1
|
6天前
|
存储 网络协议 安全
Kali渗透测试:拒绝服务攻击(二)
Kali渗透测试:拒绝服务攻击(二)
53 0
|
6天前
|
安全 应用服务中间件 网络安全
Kali测试:散列密码破解(二)
Kali渗透测试:散列密码破解(二)
20 0