NTLM||LM算法&&lsass&&winlogon进程

来填坑了,这篇blog我们就来讲一下mimikatz能抓到开机的密码的原理

1.lsass&&winlogon

不知道大家有没有好奇过,我们每次开机输入密码之后,电脑又怎么知道我们是否输入正确呢?

NTLM||LM算法&&lsass&&winlogon进程_第1张图片:这就要的得益于我们的两个进程了 lsass 和 winlogon

作死的可以试一下吧你们电脑的这两个关掉,看你电脑崩不崩就完事了

下面是正经的:我们来讲一下电脑开机的原理!!

当然,这是在Windows的一些早期电脑的图片,现在的Windows一般不会将密码保存在内存中

NTLM||LM算法&&lsass&&winlogon进程_第2张图片

我们输入密码验证开机密码如下

  1. 先运行winlogon.exe程序,并且获取用户的密码,传给lsass.exe进程
  2. 然后lsass进程再对传来的密码进行加密和 C://windows/system32/config下的SAM文件对比
  3. 如果一样,则登录成功,否则则登录失败

而 Mimikatz的sekurlsa模块用于从lsass.exe进程中提取各种凭据信息,包括NTLM哈希、Kerberos票据等。这使得攻击者能够获取用户的凭据,从而进行后续攻击!

但是对于win11,做法可不太一样

2.Mimikatz抓取Win11的密码,但是NTLM

对于一些Win10的版本以及Win11 你会发现,就算以管理员身份敲上这行代码,也是抓不到的

ERROR kuhl_m_sekurlsa_acquireLSA ; Logon list

 你会收获如上报错!!但是是不是就是没有办法了呢???

那肯定不!!!道高一丈,魔高一尺       NTLM||LM算法&&lsass&&winlogon进程_第3张图片 下面我就来演示一下

先以管理员身份运行mimikatz 接着输入 privilege::debug 命令 

NTLM||LM算法&&lsass&&winlogon进程_第4张图片

 然后正常来说你是会看到这样的报错的

于是可以输入以下命令

token::elevate

NTLM||LM算法&&lsass&&winlogon进程_第5张图片

最后一步指令,这样就能抓到了

lsadump::sam

NTLM||LM算法&&lsass&&winlogon进程_第6张图片

这样就能抓到你的电脑的HTLM值了!! 不信?? 用你的python运行一下这个脚本

from Crypto.Hash import MD4
import binascii

password = "你的电脑密码".encode("utf-16le")
md4_hash = MD4.new(password).digest()
print(binascii.hexlify(md4_hash).decode())

 看看你运行的结果和你抓到的ntlm值一不一样就是了

3.NTLM和LM的hash算法加密过程

 先说一下NTLM,这个算法直到现在的Windows版本都还在被使用

NTLM的编码可以分为以下几步

  1. 先对明文进行hex编码
  2. 再对上一步进行Unicode编码 (每两个数字之后加两个0)
  3. 再对上一步结果进行md4单向hash加密结果的16进制就是NTLM的值

虽然这么说但是我自己去试,发现结果是不一样的,很奇怪

于是我就尝试了另外一种py的脚本方法,也就是上面的py脚本

from Crypto.Hash import MD4
import binascii

password = "admin".encode("utf-16le")   # 将字符串 "admin" 进行Unicode编码
md4_hash = MD4.new(password).digest()
print(binascii.hexlify(md4_hash).decode())    # 将二进制的 MD4 哈希值转换为十六进制,并打印出来

这样跑出来的结果就是NTLM的hash值

然后就是lm的计算过程

NTLM||LM算法&&lsass&&winlogon进程_第7张图片

NTLM||LM算法&&lsass&&winlogon进程_第8张图片

由于LM算法的种种弱点,如密码限制、弱密钥、单向函数等,它在安全性上存在很大的问题,因此在现代系统中已经被更安全的方法所替代。

以上就是对于相关知识的一些普及和概述了    NTLM||LM算法&&lsass&&winlogon进程_第9张图片

你可能感兴趣的:(网络安全)