LM Hash && NTLM Hash
Windows操作系统通常使用两种方法对用户的明文进行加密处理,在域环境中,用户信息存储在ntds.dit中,加密后为散列值。Windows操作系统中的密码一般由两部分组成,一部分为LM Hash,另一部分为NTLM Hash。在Windows操作系统中,Hash的结构通常如下:
username:RID:LM-HASH:NT-HASH
LM Hash的全名为“LAN Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的散列值加密算法,其本质为DES加密算法。LM Hash的生成原理在这里就不再赘述(密码不足14字节将用0补全)。尽管LM Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了。LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用LM Hash,将用的密码设置为14位以上就可以了。如果LM Hash被禁用了,攻击者通过工具抓取的LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash为空值或者被禁用了)
NTLM Hash是微软为了提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash是基于MD4加密算法进行加密的。
一.单机密码抓取与防范
要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System。本地用户名、散列值和其他安全验证信息都保存在SAM文件中。lsass.exe进程用于实现Windows的安全策略(本地安全策略和登录策略)。可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。
在Windows操作系统中,SAM文件的保存位置是C:\Windows\System32\config。该文件是被锁定,不允许复制。在渗透测试中,可以采用传统方法,在关闭Windows操作系统之后,使用PE盘进入文件管理环境,直接复制SAM文件,也可以使用VSS等方法进行复制。
1.GetPass
打开GetPass工具所在的目录。运行该程序后,即可获得明文密码。
2.PwDump7
在命令行环境中运行PwDump7程序,可以得到系统中所有账户的NTLM Hash
3.QuarksPwDump
在命令行环境中输入“QuarksPwDump.exe --dump-hash-local”,导出三个用户的NTLM Hash
4.通过SAM和System文件抓取密码
(1)导出SAM和System文件
无工具导出SAM文件,命令如下
通过reg的save选项将注册表中的SAM、System文件导出到本地磁盘
(2)通过读取SAM文件和System文件获得NTLM Hash
(3)运行Cain读取SAM文件
(4)使用mimikatz直接读取本地SAM文件,导出Hash信息
通过远程下载目标及的SAM文件,然后通过在本机运行mimikatz来获取HASH,
privilege::debug //提升权限
token::elevate //将权限提升至System
lsadump::sam //获取本地SAM文件,获得NTLM Hash
5.使用mimikatz在线读取SAM文件
在mimikatz目录下打开命令行环境,输入以下命令,在线读取散列值及明文密码
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
6.使用mimikatz离线读取lsass.dmp文件
(1)导出lsass.dmp文件
(2)使用Procdump导出lsass.dmp文件
(3)使用mimikatz导出lsass.dmp文件中的密码散列值
加载成功
导出散列值
7.使用powershell对散列值进行Dump操作
NiShang的Get-PassHashs.ps1脚本可用于导出散列值
以管理员权限打开Powershell环境,进入Nishang目录,将Get-PassHashes.ps1脚本导入,命令如下
Import-Module .\Get-PassHashes.ps1
Get-PassHashes
8.使用Powershell远程加载mimikatz抓取散列值和明文密码
未完,,,,,,,