PTH 是 Pass the hash, 哈希传递攻击 的缩写。其原理是通过直接找到与账户相关的密码 Hash 值(通常是 NTML Hash),由于域环境中,域管理员与本地管理员的账户大概率都是相同的,利用这种场景,使用 Hash 传递,不需要破解密码明文,直接使用密文就可以横向移动。通常配合 mimikatz 工具使用。
1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
在Windows中,用户登录的明文密码并不会直接存储在计算机中,而是存储密码的hash值以确保安全性。当用户尝试登录时,输入的密码会经过相同的哈希算法处理,并与存储的哈希值进行比较。如果两者匹配,用户就被认为是合法的。
这个哈希值通常保存在安全账户管理器(SAM)数据库中。在Windows系统中,SAM数据库文件通常位于C:\Windows\System32\config\SAM
然而,这个SAM文件是一个二进制文件,并且受到Windows系统的保护,普通用户无法直接打开或查看其内容。即使具有管理员权限的用户,也需要使用特定的工具或方法才能访问SAM文件。这是为了保护用户的密码安全,防止未经授权的访问和恶意利用。
因此,无法直接打开SAM文件并查看其中的密文。如果你需要重置或恢复Windows登录密码,建议使用合法的、官方支持的方法,如使用Windows安装介质进行密码重置或联系系统管理员寻求帮助。
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
通过hashdump抓取出所有用户的密文主要分为两个模块:LM Hash和NThash。
LM Hash,全名为“LAN Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管LM Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista和Windows Server 2008版本开始,Windows操作系统默认禁用LM Hash)。如果LM Hash被禁用了,攻击者提高工具抓取的LM Hash通常为“aad3b435b51404eeaad3b435b51404ee”。
至于NThash,它同样是Windows中用于存储密码哈希的一个模块,相比LM Hash,它提供了更高的安全性。
3. 为什么第一个模块 永远是一样的aad3
因为LMhash容易被破解,为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista和Windows Server 2008版本开始,Windows操作系统默认禁用LM Hash),但仍然会生成LMhash并且是固定值aad3b435b51404eeaad3b435b51404ee
4. 这两个模块的加密算法有什么不同,如何加密的
我们使用的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,整个表也会非常庞大。这意味着此类表的创建、存储,以及检索都是很麻烦的工作。