BetaMao

密码破解

字数统计: 10.5k阅读时长: 45 min
2016/04/20 Share

旧文迁移,本文的密码破解是一般意义上的破解,如暴力破解,不含密码算法弱点利用,部分工具作用重叠。

字典


由于本篇全是猜解,好的字典是成功的关键,可以按用途直接在网上下载字典,这里介绍三类字典生成方法。

社工字典

这是最实用的字典,首先需要收集社工数据,不多说收集方法,主要含:

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
1.姓名
2.性别
3.职位
4.照片
5.兴趣爱好
6.实际出生日期
7.身份证出生日期
8.身份证号码
9.身份证家庭住址
10.家庭成员
11.社会关系
12.快递收货地址
13.教育经历
14.QQ
15.微信
16.邮箱
17.手机号(曾用与现用)
18.银行卡
19.电子邮箱
20.支付宝
21.各社交平台主页(QQ空间,微博,人人网,百度贴吧,校友网,facebook,twitter等)
22.常用ID
23.常用密码
24.常用密码组合
25.性格素描

参考社会工程学概念与达到要求参考
接着使用字典生成器生成,这里介绍两个工具

cupp

kali默认没有安装它,下载地址:https://codeload.github.com/jeanphorn/common-password/zip/master
解压后,进入目录,执行

1
./cupp.py –i


按照提示输入信息即可【没有找到的就直接回车】

即可生成信息,不过感觉问的信息太少了

ncphpass

Windows下的,直接填值就好了:

更多内容:密码破解与心理学

普通字典

kali自带

先来介绍下kali自带的字典,在这里面

/usr/share/wordlist
/usr/share/wfuzz/wordlist

也可以看自带的目录看
1:位置:application,password attacks,wordlists

2:看到详细的文件位置

以后需要密码字典可以去这些地方找自带的用,这里面密码很多,需要自己去看看每个密码的内容,清楚有哪些密码,它适用于干嘛,以后使用才能找到,例如

这里面的是一般的,admin下的就是破解网站后台的,这里不举例了,没意义,需要自己一个一个的看

crunch生成

一个很灵活的字典生成工具,先看参数,不明白也不要紧,后面会以实例解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-o <文件位置>    #指定输出字典文件的位置
-b <KB / MB / GB> #指定输出文件的最大体积
-c 指定输出的每个字典的行数
-d 同一字符连续出现次数
-s 从哪一个字符串开始生成
-q 读取文件的一行作为单个字符
-p 123456789 将后面的字符串排列组合
-t 使用匹配生成字典
@ 匹配小写字母
, 大写字母
% 数字
^ 符号
-z 7z 将字典压缩成7z格式
-p sss aaa ddd 将词排列组合

crunch <min-len> <max-len> [<charset string>] [options]
crunch [最小长度] [最大长度] [含有的字符] [参数]

下面是实例了:

1
crunch 1 3 123456abc -o /root/1.txt #输出最短为1,最长为3,含123456abc的密码,存到/root/1.txt里

有时我们并不需要从123456abc开始破解,已经确定了第一位是大于8了再这样生成就没必要了,可以这样

1
crunch 1 3 123456abc –s 811 -o /root/1.txt

就是从811开始生成字典
看上面会感觉如果要讲26个字母的大小写全部敲进去很麻烦,于是就可以使用一个配置文件,里面已经将可能用到的字符写好了,只需要用它的名字就可以使用了【此命令不能兼容-s】

1
cat /usr/share/crunch/charset.lst        #查看配置文件


可以看到内容

1
2
crunch 6 7 charset.lst mixalpha-numeric –b 1Gb –o 1.txt
crunch 6 7 charset.lst mixalpha-numeric –c 10000 –o 1.txt

第一个的是生成长度为6-7,含有所有字母大小写,数字(mixalpha-numeric)的字典,每个文件1G,也可以用Mb,b等单位,第二个是每个文件里面有10000行

1
crunch 6 7 charset.lst mixalpha-numeric –d 3 –o 1.txt

这句就是同上,然后最大连续出现的字符不会超过3个,例如不加会有aaaaaa加了后只能有aaabcd,bcaaam等等,连着的a不会出现4次及以上,这里已经有一个文件了,里面有这些内容

1
crunch 6 7 –q hia.txt –o 1.txt

这样就是将hia里面的文件,以每一行作为一个字符去排列组合,需要注意:前面那个6,7不再生效,他是按照文件里的行数决定长度的,例如这里面是4行就只会生成的每个文件长度是四,但是不是4个字符,因为他是将一行作为一个字符,所以就叫做4个长度吧,还有,他是一行作为一个字符,不是一个空格分隔的作为一个

1
crunch 6 7 –o 1.txt–p 123456789

这个的意思是将后面的123456789排列组合,前面的6,7也会失效,只起占位的作用,另外-p参数只能用到最后,不兼容-s

1
crunch 6 6 -t @,^%,% –o 1.txt

这是使用通配来生成,注意最大长度和最小长度须长度一致且和后面通配的字符数相等,例如这里@,^%,%有六个前面就是6

1
crunch 6 6 -t @,^%,% –o 1.txt	-z 7z

这条意思同上,加了个参数就是将字典压缩成7z,7z是固实压缩,压缩文本文件最厉害,可以将几G的压缩到几M的大小,推荐存储时使用!

1
crunch 6 7 charset.lst mixalpha-numeric –d 3@ –o 1.txt

这里与上面相比在-d 3后加了一个@,意思就是只限制小写字母连续出现的次数不大于3次

1
crunch 6 7 –o 1.txt–p 123 456 789

这也是-p,但是意思有点变化,前面的依然是占位,将后面的123 当做一个字符,456当做另一个字符,,,排列组合,这里的长度就是3

1
crunch 4 4 abcdf GHIJK + -t @, ,% –o 1.txt

这样就是规定了小写@只能在abcdf中取,逗号大写字母只能在GHIJK中取,+号是为%数字占位的,注意,如果规定了符号,前面需要使用\转意,否则会出错

离线破解


John

john the ripper:著名的密码破解工具,用于帮助用户发现弱密码的工具,它支持多种密码破解格式,也支持多种加密算法,理解多种密文格式,并且支持强大的规则,本文简要记录他的简单使用方式(不含规则)
简述:
要使用john,你需要一个密码文件,然后选择性的使用更多参数,若是不指定破解模式,他将会以single模式,wordlist模式,incremental模式的顺序开始破解。
一旦破解出一个密码,他将会把它显示在终端,同时保存在/.john/john.pot文件中,当john重启的时候将会读取这个文件,所以不要去尝试破解已经破解的密码。
你可以使用这个命令查看已经被破解的密码:
john -show passwd
当在破解过程中,按任何键可显示当前破解状态,按Ctrl+C去中断此破解并将破解信息保存在一个文件里( 默认是 ~/.john/john.rec ),当然,按两次Ctrl+C他将直接退出并且不保存状态信息。
值得注意的是,为了防止崩溃导致信息丢失,john默认会10分钟保存一次状态,也可以去配置文件更改这个时间(
/.john/john.ini 或 ~/.john/john.conf)
要想继续这个会话,就可以直接使用:
john -restore
配置文件:

/etc/john/john.conf
       主配置文件,所有的密码破解相关配置都在这里面

/etc/john/john-mail.msg
       配置发邮件,告知攻击者密码破解成功

/etc/john/john-mail.conf
       配置发邮件,告知被攻击者,他们的密码已经被被破解,提醒更改密码

支持的破解模式:

wordlist:基于字典的破解(可以对字典再添加规则)
single crack :默认被首先执行,使用login /GECOS信息尝试破解
incremental :给定字符及长度的暴力破解
external :需要在主配置文件中使用C语言子集编程

支持的加密种类:

descrypt, bsdicrypt, md5crypt, bcrypt, scrypt, LM, AFS, tripcode, dummy, 
dynamic_n, bfegg, dmd5, dominosec, dominosec8, EPI, Fortigate, FormSpring, 
has-160, hdaa, ipb2, krb4, krb5, KeePass, MSCHAPv2, mschapv2-naive, mysql, 
nethalflm, netlm, netlmv2, netntlm, netntlm-naive, netntlmv2, md5ns, NT, osc, 
PHPS, po, skey, SybaseASE, xsha, xsha512, agilekeychain, aix-ssha1, 
aix-ssha256, aix-ssha512, asa-md5, Bitcoin, Blackberry-ES10, WoWSRP, 
Blockchain, chap, Clipperz, cloudkeychain, cq, CRC32, sha1crypt, sha256crypt, 
sha512crypt, Citrix_NS10, dahua, Django, django-scrypt, dmg, dragonfly3-32, 
dragonfly3-64, dragonfly4-32, dragonfly4-64, Drupal7, eCryptfs, EFS, eigrp, 
EncFS, EPiServer, fde, gost, gpg, HAVAL-128-4, HAVAL-256-3, HMAC-MD5, 
HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512, hMailServer, 
hsrp, IKE, keychain, keyring, keystore, known_hosts, krb5-18, krb5pa-sha1, 
kwallet, lp, lotus5, lotus85, LUKS, MD2, md4-gen, mdc2, MediaWiki, MongoDB, 
Mozilla, mscash, mscash2, krb5pa-md5, mssql, mssql05, mssql12, mysql-sha1, 
mysqlna, net-md5, net-sha1, nk, nsldap, o5logon, ODF, Office, oldoffice, 
OpenBSD-SoftRAID, openssl-enc, oracle, oracle11, Oracle12C, Panama, 
pbkdf2-hmac-md5, PBKDF2-HMAC-SHA1, PBKDF2-HMAC-SHA256, PBKDF2-HMAC-SHA512, 
PDF, PFX, phpass, pix-md5, plaintext, pomelo, postgres, PST, PuTTY, pwsafe, 
RACF, RAdmin, RAKP, rar, RAR5, Raw-SHA512, Raw-Blake2, Raw-Keccak, 
Raw-Keccak-256, Raw-MD4, Raw-MD5, Raw-SHA1, Raw-SHA1-Linkedin, Raw-SHA224, 
Raw-SHA256, Raw-SHA256-ng, Raw-SHA3, Raw-SHA384, Raw-SHA512-ng, Raw-SHA, 
Raw-MD5u, ripemd-128, ripemd-160, rsvp, Siemens-S7, Salted-SHA1, SSHA512, 
sapb, sapg, saph, 7z, sha1-gen, Raw-SHA1-ng, SIP, skein-256, skein-512, 
aix-smd5, Snefru-128, Snefru-256, LastPass, SSH, SSH-ng, Stribog-256, 
Stribog-512, STRIP, SunMD5, sxc, Sybase-PROP, tcp-md5, Tiger, tc_aes_xts, 
tc_ripemd160, tc_sha512, tc_whirlpool, VNC, vtp, wbb3, whirlpool, whirlpool0, 
whirlpool1, wpapsk, ZIP, NT-old, crypt

命令行语法:

直接使用john将会输出简单的使用帮助,使用格式:john [OPTIONS] [PASSWORD-FILES](你可以只指定要破解的密码文件,他将会使用默认的破解方式进行破解,如上所述)所有参数大小写不敏感,只要简写是不含歧义的可以简写,参数能以– 或是- 来被给,也能使用=或是:来赋值(根据环境的不同):

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
--single[=SECTION]		指定使用哪个规则,例如section=1:[List.Rules:Single],section=2:[List.Rules:Single_2]关于规则可以去官方查手册,规则都在john.conf里面

--wordlist[=FILE] 指定字典文件
--stdin 这样可以从标准输入设备输入字典(默认是键盘)

--loopback[=FILE] 使用pot文件作为字典

--rules[=SECTION] 对字典添加使用一些规则,默认是使用[List.Rules:Wordlist],支持的可在配置文件里面查看(当然也可以自定义)

--incremental[=MODE] 使用incremental(理解为暴力破解吧),可在配置文件(john.conf)里面查看,修改,添加配置,指定字符集及范围

--restore[=NAME] 恢复会话

--session=NAME 在破解时自己指定一个会话名

--show[=left] 默认显示所有被破解的密码,若加left将显示未被破解的,后接含账号的密码文件。

--test[=TIME] 将对所有支持的hash算法进行速度测试(可使用--format来限制算法种类),可以不指定时间,也可以使用--test=0来做快速的自我测试(当然他不会产生任何速度数据)

--users=[-]LOGIN|UID[,..] 限制破解指定用户的密码(可以是指定要破解的用户也可以是指定要排除的用户)

--groups=[-]GID[,..] 限制破解指定组的密码(可以限制在GID内或是排除指定GID)

--shells=[-]SHELL[,..] 用来指定shell(-为排除)

--pot=NAME 指定成功破解,保存的文件名,不指定就是默认的。

--save-memory=LEVEL 当你没有足够内存或是不想john占用太多资源可以使用此选项,有三个级别,效果依次变得明显(将降低破解速度,慎用)。

--format=NAME 默认是自动探测hash类型,可以自己指定(当一个文件存在多种hash时,他一次只能破解一种)

--mem-file-size=SIZE 这样将会把字典预先载入内存而非一行一行的读取,这在有大量规则时效率提升尤为明显,它使用的默认大小是5000000bytes,可以通过此选项设置为更大(请不要超过物理内存限制,而且设置过大将会使系统运行缓慢)
有个特殊的值:--mem-file-size=0代表着将文件全部载入内存。

--stdout[:LENGTH] 在wordlist中限制密码长度?

--status[=NAME] 显示一个被中断或正在运行的会话的状态信息(在使用时最好先终止正在运行的会话)。
--test 做速度测试

例如:
首先使用最简单的方式,只跟密码:

可看到它自动识别出了多种可能,其实应该是nt,而他使用的是nt-old,下面显示3/3表示进入了第三阶段(三面介绍过,如果不指定方式,将默认使用single,wordlist和incremental),其实字典里面有正确的密码,因为识别错误所以没有破解成功。现在可以终止它,然后用-restore来恢复

可见自己指定格式还是有必要的,大码的地方就是破解出的密码:

对于Linux系统密码破解:

补充:
对于第一种的GECOS即用户个人信息,可通过cat /etc/passwd查看:

当没有指定字典时,默认使用的是配置文件指定的:

还有图形化的Johnny一看就懂:

hashcat

GPU驱动要求:

AMD users      require AMD drivers 14.9 or later (recommended 15.12 exact)

Intel users      require Intel OpenCL Runtime 14.2 or later (recommended 16.1 or later)

NVidia users      require NVidia drivers 346.59 or later (recommended 367.27 or later)

优点:

世界上最快的密码破解软件(来自官方文档。。。)

World's first      and only in-kernel rule engine
免费,开源

跨系统 (Linux,      Windows and OSX)

跨平台 (CPU,      GPU, DSP, FPGA, etc., everything that comes with an OpenCL runtime)

支持多种hash算法(可在下面的参数手册查看) (可在同时破解多种hash)

支持多种驱动器 (可在同一系统多种设备中生效)

支持多种驱动器类型 (可在同一系统混合使用多种不同的设备)

支持分布式破解

支持暂停/重新开始

支持会话与恢复

支持从密码文件读取hash值或是直接输入

支持16进制字符集(包括盐)

支持自动性能调优

支持markov-chains

內建标杆测试

集成热watchdog

等等

总之,是离线破解单向密码的好工具(第一选择是网络,但是网上不支持一些“小众”的密码类型,就只能使用它来碰碰运气咯)!

它支持的攻击模式:

Brute-Force Attack

所有攻击中最简单的一种,指定字符集和密码长度范围即可。

Mask Attack

尝试所有被给的来自键盘空间的字符组合(就像是暴力破解,只是需要指定得更加清楚)

相对于Brute-Force的优点

他不像传统的暴力破解,减少了排列的可能性,例如破解这个密码: Julia1984

在传统的暴力破解中,它是9位,每一位可能是大小写或是数字,也就是 “mixalpha-numeric”字符集。于是可迭代出62^9 (13.537.086.546.263.552)种可能,以100M/s的速率破解,需要超过4年的时间。

但是在mask attack攻击中,因为传统都只是首字母大写,为了缩短长度,可以在每一位指定特定类型的字符,于是就是522626262610101010 (237.627.520.000)种组合,同样的速度就只需要40分钟。

相对于Brute-Force的缺点

没有!可能有人说上面的例子不恰当,因为不一定能知道密码的构造信息,那么,你可以把他的字符集设置广点,换句话说它的最低效率情况就和暴力破解一样。

Masks(掩码)

每一个密码位都需要一个掩码占位,例如密码有8位,就需要8个掩码(就像正则表达式里面的通配符)。

一个mask是一个被配置给密码破解引擎使用的占位字符串。

这个占位符可以是定制的字符集,內建字符集,或者是纯字符(字符本身)

一个变量(跟在一个?后面代表一个字符集),例如內建的(?l,?u,?s,?a,?d)和定制的(?1,?2,?3,?4)

注意,如果想要表示?这个纯字符,就需要使用??

输出

由于反向算法优化,输出将是如下这种顺序(就是并非简单的字母序):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
aaaaaaaa
aaaabaaa
aaaacaaa
.
.
.
aaaaxzzz
aaaayzzz
aaaazzzz
baaaaaaa
baaabaaa
baaacaaa
.
.
.
baaaxzzz
baaayzzz
baaazzzz
.
.
.
zzzzzzzz

內建字符集

1
2
3
4
5
6
?l =      abcdefghijklmnopqrstuvwxyz
?u =      ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d =      0123456789
?s =      «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 
?a = ?l?u?d?s
?b = 0x00 -      0xff

自定义字符集:所有的hashcat衍生版都有四个命令行参数用来自定义字符集

1
2
3
4
--custom-charset1=CS
--custom-charset2=CS
--custom-charset3=CS
--custom-charset4=CS

你可以直接在命令行中使用-1,-2,-3,-4来指定字符集并且直接使用?1,?2,?3,?4来调用,也可以在配置文件(***.hcchr)中指定。在指定时,可以直接使用內建字符集组合,也可以使用纯字符组合甚至是混合的组合。

例如

指定?1代表的字符时,可以使用下面这些方式(他们效果一样):

1
2
3
4
5
-1 abcdefghijklmnopqrstuvwxyz0123456789
-1 abcdefghijklmnopqrstuvwxyz?d
-1 ?l0123456789
-1 ?l?d
-1 loweralpha_numeric.hcchr # file that contains all digits + chars (abcdefghijklmnopqrstuvwxyz0123456789)

下面是在指定“0123456789abcdef”这个字符集时:

1
-1 ?dabcdef

下面是指定7位ASCII码全字符(“mixalpha-numeric-all-space”)时:

1
-1 ?l?d?s?u

下面是指定为特殊语言字符集时:

1
-1 charsets/special/Russian/ru_ISO-8859-5-special.hcchr


例如

下面的命令是创建如下的密码(-a 3表示暴力破解攻击):

1
2
3
4
5
6
7
8
9
10
11
12
command: -a 3 ?l?l?l?l?l?l?l?l
keyspace: aaaaaaaa - zzzzzzzz
command: -a 3 -1 ?l?d ?1?1?1?1?1
keyspace: aaaaa - 99999
command: -a 3 password?d
keyspace: password0 - password9
command: -a 3 -1 ?l?u ?1?l?l?l?l?l19?d?d
keyspace: aaaaaa1900 - Zzzzzz1999
command: -a 3 -1 ?dabcdef -2 ?l?u ?1?1?2?2?2?2?2
keyspace: 00aaaaa - ffZZZZZ
command: -a 3 -1 efghijklmnop ?1?1?1
keyspace: eee - ppp

密码长度增量

默认情况下,使用8位的掩码只能破解8位的密码,不能破解低于8位更不能破解高于8位的,但可以使用increment来实现破解低于8位的(他可以设置最小位数和最大位数,但最大位数不能超过掩码位数)

1
2
3
4
5
6
7
8
?l
?l?l
?l?l?l
?l?l?l?l
?l?l?l?l?l
?l?l?l?l?l?l
?l?l?l?l?l?l?l
?l?l?l?l?l?l?l?l

字符集文件

可以将常用的字符集保存为***.hcchr格式的纯文本文件,以后就可以直接调用(像上面例子中使用的charsets/special/Russian/ru_ISO-8859-5-special.hcchr一样)回顾用法:

1
-1 charsets/standard/German/de_cp1252.hcchr

(可以使用iconv或类似的工具将文件转换到指定语言编码 )

掩码文件

同样可以将掩码直接保存为一个文件,以后使用时直接调用,它是一行一行的纯文本文件,以.hcmask为扩展名,格式如下:

1
 [?1,][?2,][?3,][?4,]mask

本来在命令行中,我们要使用自定义的字符集,需要使用如下格式:

1
-1 ?l?s -2 ?dhjg -3 ?u?d -4 ?s987 ?1?2?3?4?s?l

那么在掩码文件中就可以直接这样写:

1
?l?s,?dhjg,?u?d,?s987, ?1?2?3?4?s?l

当然,在没有使用自定义字符集时就不需要前面的部分了,直接写掩码即可,使用方法如下:

1
-a 3 hash.txt mask_file.hcmask

其他:

  • 可以在每一行的开头使用#来注释掉那一行,可以写入多行,每一行互相独立
  • 当掩码中存在 ,(逗号)时,需要,来转义
  • 同样,掩码文件也可以支持增量参数

Example

下面是些例子,看看能不能看懂是什么意思

1
2
3
4
?d?l,test?1?1?1
abcdef,0123,ABC,789,?3?3?3?1?1?1?1?2?2?4?4?4?4
company?d?d?d?d?d
?l?l?l?l?d?d?d?d?d?d

16进制字符

可以使用“–hex-charset”参数

Combinator Attack

给定两个字典文件,他们将会组合成一个字典来进行破解:

1
./hashcat64.bin -m 0 -a 1 hash.txt dict1.txt dict2.txt

这里例如

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
Dict1.txt:

Hia

Hiaa

Hiaaa

Dict2.txt:

Bb

Cc

结果为:

HiaBb

HiaCc

HiaaBb

HiaaCc

HiaaaBb

HiaaaCc

可以使用参数来对某个字典进行“在开始出添加字符”,“在结尾处添加字符”的操作:

1
2
  -j,  --rule-left=RULE              左边添加
  -k,  --rule-right=RULE             右边添加

Dictionary Attack
即straight mode,使用字典攻击

Hybrid Attack
混合攻击,即用暴力攻击来修饰字典文件,分为:

mask + dict    即掩码在字典前
dict + mask    掩码在字典后

例如
字典文件是example.dict:

1
2
password
hello

命令为:

1
$ ... -a 6 example.dict ?d?d?d?d

生成的字典是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
password0000
password0001
password0002
.
.
.
password9999
hello0000
hello0001
hello0002
.
.
.
hello9999

另一种情况,命令是:

1
$ ... -a 7 ?d?d?d?d example.dict

生成的字典是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0000password
0001password
0002password
.
.
.
9999password
0000hello
0001hello
0002hello
.
.
.
9999hello

(可以使用规则模式来创建混合攻击)

Toggle-Case Attack

尝试所有的大小写组合:

例如pass1234会产生:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pass1234
Pass1234
pAss1234
PAss1234
paSs1234
PaSs1234
pASs1234
PASs1234
pasS1234
PasS1234
pAsS1234
PAsS1234
paSS1234
PaSS1234
pASS1234
PASS1234

Rule-based Attack

这是功能最强大,也最复杂的一种模式,就像变成一样设置密码规则!他的语法很多部分和john和passwordPro互通,这里是语法:

* 当N超过9就用A-Z表示

+ 表示只在hashcat里面有效

# 版本升级后出现的:oclHashcat v1.37 → v1.38 and hashcat v0.51      → v0.52

下面是拒绝规则,即密码符合规则才执行,否则跳过:

这是hashcat特有的语法:

生成规则的方式:

使用专门的软件:Using maskprocessor to create rules.

使用随机规则:
规则文件里面已有一些规则,使用

1
2
3
--generate-rules=NUM 创造NUM个随机的规则
--generate-rules-func-min=NUM 指定规则中函数的最小个数(默认一个)
--generate-rules-func-max=NUM  指定规则中函数的最大个数(默认四个)

下面是命令帮助文件:
用法:

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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
cudaHashcat [options]... hash|hashfile|hccapfile [dictionary|mask|directory]...
=======

Options

=======
* General:
 
  -m,  --hash-type=NUM               参照下面支持的hash类型
  -a,  --attack-mode=NUM             参照下面的攻击类型
  -V,  --version                     显示版本
  -h,  --help                        显示帮助
       --quiet                       安静模式
 
* Benchmark:
 
  -b,  --benchmark                   运行速度测试
       --benchmark-mode=NUM          参照下面的测试级别
 
* 杂项:
 
       --hex-charset                 假定以16进制格式给定字符集
       --hex-salt                    假定以16进制格式给定盐
       --hex-wordlist                假定以16进制格式给定字典
       --force                       忽略警告
       --status                      自动更新破解状态
       --status-timer=NUM            设置更新时间间隔
       --status-automat              以机器可读的形式显示状态
       --weak-hash-threshold=NUM     weak-hash,空密码,对于无盐或是盐少的时候检查效率很高,但是盐多了就可能浪费时间了,所以这里可以设置最多有多少个不同的salts时做此检查
 
* Markov:///完全不懂这个
 
       --markov-hcstat=FILE          Specify hcstat file to use, default is hashcat.hcstat
       --markov-disable              Disables markov-chains, emulates classic brute-force
       --markov-classic              Enables classic markov-chains, no per-position enhancement
  -t,  --markov-threshold=NUM        Threshold when to stop accepting new markov-chains
 
* 会话:
 
       --runtime=NUM                 软件最长运行时间
       --session=STR                 制定会话名
       --restore                     从指定会话名恢复会话
       --restore-disable             不写恢复文件
 
* 文件:
 
  -o,  --outfile=FILE                制定成功破解的输出文件
       --outfile-format=NUM          参照下面支持的输出文件格式
       --outfile-autohex-disable     Disable the use of $HEX[] in output plains
       --outfile-check-timer=NUM     输出文件检测间隔
  -p,  --separator=CHAR              指定hash列表和输出的分隔字符
       --show                        只显示被破解的密码
       --left                        只显示没有被破解的
       --username                    忽略hash文件中的用户名
       --remove                      一旦破解就讲hash移除
       --remove-timer=NUM            没多少秒更新一次(移除)
       --potfile-disable             不将结果写入文件
       --debug-mode=NUM              参考下面的调试模式
       --debug-file=FILE             debug输出文件
       --induction-dir=FOLDER        指定induction目录,默认是:$session.induct
       --outfile-check-dir=FOLDER    指定输出目录,默认是:$session.outfiles
       --logfile-disable             禁用日志
       --truecrypt-keyfiles=FILE     使用的密钥文件,以逗号分隔
 
* 资源:
 
  -c,  --segment-size=NUM            设置字典文件的缓存大小(MB)
       --bitmap-min=NUM              Minimum number of bits allowed for bitmaps
       --bitmap-max=NUM              Maximum number of bits allowed for bitmaps
       --cpu-affinity=STR            Locks to CPU devices, seperate with comma
       --gpu-async                   Use non-blocking async calls (NV only)
  -d,  --gpu-devices=STR             指定GPU设备,逗号分隔
  -w,  --workload-profile=NUM        Enable a specific workload profile, see references below
  -n,  --gpu-accel=NUM               Workload tuning: 1, 8, 40, 80, 160
  -u,  --gpu-loops=NUM               Workload fine-tuning: 8 - 1024
       --gpu-temp-disable            Disable temperature and fanspeed readings and triggers
       --gpu-temp-abort=NUM          Abort session if GPU temperature reaches NUM degrees celsius
       --gpu-temp-retain=NUM         Try to retain GPU temperature at NUM degrees celsius (AMD only)
       --powertune-enable            Enable automatic power tuning option (AMD OverDrive 6 only)
       --scrypt-tmto=NUM             Manually override automatically calculated TMTO value for scrypt
 
* 分布式:
 
  -s,  --skip=NUM                    Skip number of words
  -l,  --limit=NUM                   Limit number of words
       --keyspace                    Show keyspace base:mod values and quit
 
* 规则:
 
  -j,  --rule-left=RULE              在词典左边添加
  -k,  --rule-right=RULE             在词典右边添加
  -r,  --rules-file=FILE             指定规则文件,可混合使用: -r 1.rule -r 2.rule
  -g,  --generate-rules=NUM          生成随机规则数
       --generate-rules-func-min=NUM 
       --generate-rules-func-max=NUM 
       --generate-rules-seed=NUM     Force RNG seed to NUM
 
* 自定义字符集:
 
  -1,  --custom-charset1=CS          
  -2,  --custom-charset2=CS          
  -3,  --custom-charset3=CS          
  -4,  --custom-charset4=CS          
 
* 增量:
 
  -i,  --increment                   激活增量模式
       --increment-min=NUM           最少多少位
       --increment-max=NUM           最多多少位


 

==========

参考

==========

 

* Workload Profile:
 
    1 = Reduced performance profile (low latency desktop)
    2 = Default performance profile
    3 = Tuned   performance profile (high latency desktop)
 
* 测试设置:
 
    0 = 手动调优
    1 = 性能模式,默认
 
* 输出文件格式:
 
    1 = hash[:salt]
    2 = plain
    3 = hash[:salt]:plain
    4 = hex_plain
    5 = hash[:salt]:hex_plain
    6 = plain:hex_plain
    7 = hash[:salt]:plain:hex_plain
    8 = crackpos
    9 = hash[:salt]:crackpos
   10 = plain:crackpos
   11 = hash[:salt]:plain:crackpos
   12 = hex_plain:crackpos
   13 = hash[:salt]:hex_plain:crackpos
   14 = plain:hex_plain:crackpos
   15 = hash[:salt]:plain:hex_plain:crackpos
 
* debug模式的输出格式 (只在混合模式使用规则时生效):
 
    1 = 将匹配的规则保存为一个文件
 
* 內建字符集:
 
   ?l = abcdefghijklmnopqrstuvwxyz
   ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
   ?d = 0123456789
   ?s =  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
   ?a = ?l?u?d?s
   ?b = 0x00 - 0xff
 
* 攻击模式:
 
    0 = Straight
    1 = Combination
    3 = 暴力破解(可使用掩码)
    6 = Hybrid dict + mask
    7 = Hybrid mask + dict
 
* 哈希类型:
 
[[ 原始hash ]]
 
    900 = MD4
      0 = MD5
   5100 = Half MD5
    100 = SHA1
  10800 = SHA-384
   1400 = SHA-256
   1700 = SHA-512
   5000 = SHA-3(Keccak)
  10100 = SipHash
   6000 = RipeMD160
   6100 = Whirlpool
   6900 = GOST R 34.11-94
  11700 = GOST R 34.11-2012 (Streebog) 256-bit
  11800 = GOST R 34.11-2012 (Streebog) 512-bit
 
[[ 迭代/加盐哈希 ]]
 
     10 = md5($pass.$salt)
     20 = md5($salt.$pass)
     30 = md5(unicode($pass).$salt)
     40 = md5($salt.unicode($pass))
   3800 = md5($salt.$pass.$salt)
   3710 = md5($salt.md5($pass))
   2600 = md5(md5($pass)
   4300 = md5(strtoupper(md5($pass)))
   4400 = md5(sha1($pass))
    110 = sha1($pass.$salt)
    120 = sha1($salt.$pass)
    130 = sha1(unicode($pass).$salt)
    140 = sha1($salt.unicode($pass))
   4500 = sha1(sha1($pass)
   4700 = sha1(md5($pass))
   4900 = sha1($salt.$pass.$salt)
   1410 = sha256($pass.$salt)
   1420 = sha256($salt.$pass)
   1430 = sha256(unicode($pass).$salt)
   1440 = sha256($salt.unicode($pass))
   1710 = sha512($pass.$salt)
   1720 = sha512($salt.$pass)
   1730 = sha512(unicode($pass).$salt)
   1740 = sha512($salt.unicode($pass))
 
[[ Roll-your-own: 认证哈希 ]]
 
     50 = HMAC-MD5 (key = $pass)
     60 = HMAC-MD5 (key = $salt)
    150 = HMAC-SHA1 (key = $pass)
    160 = HMAC-SHA1 (key = $salt)
   1450 = HMAC-SHA256 (key = $pass)
   1460 = HMAC-SHA256 (key = $salt)
   1750 = HMAC-SHA512 (key = $pass)
   1760 = HMAC-SHA512 (key = $salt)
 
[[ Generic KDF ]]
 
    400 = phpass
   8900 = scrypt
  11900 = PBKDF2-HMAC-MD5
  12000 = PBKDF2-HMAC-SHA1
  10900 = PBKDF2-HMAC-SHA256
  12100 = PBKDF2-HMAC-SHA512
 
[[ 网络协议, 挑战-应答 ]]
 
     23 = Skype
   2500 = WPA/WPA2
   4800 = iSCSI CHAP authentication, MD5(Chap)
   5300 = IKE-PSK MD5
   5400 = IKE-PSK SHA1
   5500 = NetNTLMv1
   5500 = NetNTLMv1 + ESS
   5600 = NetNTLMv2
   7300 = IPMI2 RAKP HMAC-SHA1
   7500 = Kerberos 5 AS-REQ Pre-Auth etype 23
   8300 = DNSSEC (NSEC3)
  10200 = Cram MD5
  11100 = PostgreSQL Challenge-Response Authentication (MD5)
  11200 = MySQL Challenge-Response Authentication (SHA1)
  11400 = SIP digest authentication (MD5)
 
[[ 论坛,内容管理系统,电子商务,框架,维基,博客,中间件等 ]]
 
    121 = SMF (Simple Machines Forum)
    400 = phpBB3
   2611 = vBulletin < v3.8.5
   2711 = vBulletin > v3.8.5
   2811 = MyBB
   2811 = IPB (Invison Power Board)
   8400 = WBB3 (Woltlab Burning Board)
     11 = Joomla < 2.5.18
    400 = Joomla > 2.5.18
    400 = Wordpress
   2612 = PHPS
   7900 = Drupal7
     21 = osCommerce
     21 = xt:Commerce
  11000 = PrestaShop
    124 = Django (SHA-1)
  10000 = Django (PBKDF2-SHA256)
   3711 = Mediawiki B type
   7600 = Redmine
 
[[ 数据库服务 ]]
 
     12 = PostgreSQL
    131 = MSSQL(2000)
    132 = MSSQL(2005)
   1731 = MSSQL(2012)
   1731 = MSSQL(2014)
    200 = MySQL323
    300 = MySQL4.1/MySQL5
   3100 = Oracle H: Type (Oracle 7+)
    112 = Oracle S: Type (Oracle 11+)
  12300 = Oracle T: Type (Oracle 12+)
   8000 = Sybase ASE
 
[[ HTTP, SMTP, LDAP 服务]]
 
    141 = EPiServer 6.x < v4
   1441 = EPiServer 6.x > v4
   1600 = Apache $apr1$
  12600 = ColdFusion 10+
   1421 = hMailServer
    101 = nsldap, SHA-1(Base64), Netscape LDAP SHA
    111 = nsldaps, SSHA-1(Base64), Netscape LDAP SSHA
   1711 = SSHA-512(Base64), LDAP {SSHA512}
 
[[ 校验和 ]]
 
  11500 = CRC32
 
[[ 操作系统 ]]
 
   3000 = LM
   1000 = NTLM
   1100 = Domain Cached Credentials (DCC), MS Cache
   2100 = Domain Cached Credentials 2 (DCC2), MS Cache 2
  12800 = MS-AzureSync PBKDF2-HMAC-SHA256
   1500 = descrypt, DES(Unix), Traditional DES
  12400 = BSDiCrypt, Extended DES
    500 = md5crypt $1$, MD5(Unix)
   3200 = bcrypt $2*$, Blowfish(Unix)
   7400 = sha256crypt $5$, SHA256(Unix)
   1800 = sha512crypt $6$, SHA512(Unix)
    122 = OSX v10.4
    122 = OSX v10.5
    122 = OSX v10.6
   1722 = OSX v10.7
   7100 = OSX v10.8
   7100 = OSX v10.9
   7100 = OSX v10.10
   6300 = AIX {smd5}
   6700 = AIX {ssha1}
   6400 = AIX {ssha256}
   6500 = AIX {ssha512}
   2400 = Cisco-PIX
   2410 = Cisco-ASA
    500 = Cisco-IOS $1$
   5700 = Cisco-IOS $4$
   9200 = Cisco-IOS $8$
   9300 = Cisco-IOS $9$
     22 = Juniper Netscreen/SSG (ScreenOS)
    501 = Juniper IVE
   5800 = Android PIN
   8100 = Citrix Netscaler
   8500 = RACF
   7200 = GRUB 2
   9900 = Radmin2
 
[[ 企业应用软件 (EAS) ]]
 
   7700 = SAP CODVN B (BCODE)
   7800 = SAP CODVN F/G (PASSCODE)
  10300 = SAP CODVN H (PWDSALTEDHASH) iSSHA-1
   8600 = Lotus Notes/Domino 5
   8700 = Lotus Notes/Domino 6
   9100 = Lotus Notes/Domino 8
    133 = PeopleSoft
 
[[ 包文件 ]]
 
  11600 = 7-Zip
  12500 = RAR3-hp
 
[[ 全磁盘加密 (FDE) ]]
 
   62XY = TrueCrypt 5.0+
     X  = 1 = PBKDF2-HMAC-RipeMD160
     X  = 2 = PBKDF2-HMAC-SHA512
     X  = 3 = PBKDF2-HMAC-Whirlpool
     X  = 4 = PBKDF2-HMAC-RipeMD160 + boot-mode
      Y = 1 = XTS  512 bit (Ciphers: AES or Serpent or Twofish)
      Y = 2 = XTS 1024 bit (Ciphers: AES or Serpent or Twofish or AES-Twofish or Serpent-AES or Twofish-Serpent)
      Y = 3 = XTS 1536 bit (Ciphers: All)
   8800 = Android FDE < v4.3
  12200 = eCryptfs
 
[[ 文档 ]]
 
   9700 = MS Office <= 2003 MD5 + RC4, oldoffice$0, oldoffice$1
   9710 = MS Office <= 2003 MD5 + RC4, collider-mode #1
   9720 = MS Office <= 2003 MD5 + RC4, collider-mode #2
   9800 = MS Office <= 2003 SHA1 + RC4, oldoffice$3, oldoffice$4
   9810 = MS Office <= 2003 SHA1 + RC4, collider-mode #1
   9820 = MS Office <= 2003 SHA1 + RC4, collider-mode #2
   9400 = MS Office 2007
   9500 = MS Office 2010
   9600 = MS Office 2013
  10400 = PDF 1.1 - 1.3 (Acrobat 2 - 4)
  10410 = PDF 1.1 - 1.3 (Acrobat 2 - 4) + collider-mode #1
  10420 = PDF 1.1 - 1.3 (Acrobat 2 - 4) + collider-mode #2
  10500 = PDF 1.4 - 1.6 (Acrobat 5 - 8)
  10600 = PDF 1.7 Level 3 (Acrobat 9)
  10700 = PDF 1.7 Level 8 (Acrobat 10 - 11)
 
[[ 密码管理软件 ]]
 
   9000 = Password Safe v2
   5200 = Password Safe v3
   6800 = Lastpass
   6600 = 1Password, agilekeychain
   8200 = 1Password, cloudkeychain
  11300 = Bitcoin/Litecoin wallet.dat
  12700 = Blockchain, My Wallet

下面使用几个例子:

1
cudaHashcat64.exe -a 3 -m 1000 b4b9b02e6f09a9bd760f388b67351e2b ?a?l?l?l?l?l?l

可以用来破解WPA、WPA2的密码:
首先对aircrack等抓下来的包含握手包的***.cap文件进行清洗(可使用在线清洗,最简单,不放心可以本地清洗,也有脚本。。。)得到***.hccap包

1
cudaHashcat64.exe -m 2500 -a 0 C:\Users\Beta\Desktop\hashcat.hccap G:\渗透工具\密码破解\WPA破解工具\字典\WPA字典\WPA.txt

如果想要做练习,可以使用官方提供的测试hash:https://hashcat.net/wiki/doku.php?id=example_hashes

如果使用过程中遇到什么问题可以在这里看看有没有说明:https://hashcat.net/wiki/doku.php?id=frequently_asked_questions

opcrack

生成彩虹表

Rainbowcrack:利用彩虹表破解密码的工具,给予时间记忆权衡技术生成的彩虹表,提前计算密码的hash值,通过比对hash值破解密码。此软件可以用来生成彩虹表并用来破解密码:
生成彩虹表:
对彩虹表,需要先了解下这个结构,百度一下,然后才能动下面的命令代表什么意思:
当然实在不懂按样例生成也可:
语法:

1
2
rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index
rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index -bench

支持的哈希算法,在alglib0.so里:

lm, plaintext_len limit: 0 - 7
ntlm, plaintext_len limit: 0 - 15
md5, plaintext_len limit: 0 - 15
sha1, plaintext_len limit: 0 - 20
sha256, plaintext_len limit: 0 - 20

例如:

1
2
rtgen md5 loweralpha 1 7 0 1000 1000 0
rtgen md5 loweralpha 1 7 0 -bench (速度测试)

其实自己生成彩虹表是很费时间的,可以直接下载彩虹表(百度一下,网站很多),例如:
https://www.freerainbowtables.com/en/download/
http://rainbowtables.shmoo.com/
对彩虹表进行排序:

1
rtsort rt_files [rt_files ...]


进行密码破解:
用法:

1
2
3
4
5
6
7
8
9
rcrack rt_files [rt_files ...] -h hash
rcrack rt_files [rt_files ...] -l hash_list_file
rcrack rt_files [rt_files ...] -f pwdump_file
rcrack rt_files [rt_files ...] -n pwdump_file
rt_files: path to the rainbow table(s), wildchar(*, ?) supported
-h hash: load single hash
-l hash_list_file: load hashes from a file, each hash in a line
-f pwdump_file: load lanmanager hashes from pwdump file
-n pwdump_file: load ntlm hashes from pwdump file

例如:

1
2
rcrack *.rt -h 5d41402abc4b2a76b9719d911017c592
rcrack *.rt -l hash.txt


破解失败。。。。

破解密码

一般都不是自己生成彩虹表而是直接在网上下载,彩虹表下载地址(需要翻墙):
http://ophcrack.sourceforge.net/tables.php
软件下载地址:
http://ophcrack.sourceforge.net/
介绍:Ophcrack基于彩虹表,它是一个免费的破解Windows密码表的软件。它有一个图形用户界面并且能运行在多个平台上。
对于不同的系统需要不同的面表,需下载清楚


1:载入哈希值,可以是单个,也可以是文件表
2:选择表
3:开始破解
4:查看帮助信息

选tables,点击安装,找到刚下载的解压缩后的文件,他会自动识别是什么表

表安装并启动完成(若为黄色可选中点击左下角的绿色按钮)

这里选择单个的哈希吧

键入哈希值,注意,这里提示有支持的格式,任选其一就可以

还可以再做一些设置,然后点击crack

可以看到用了56s就破解完成了,密码时123456

换了个pentestxx123这种小写+数字的用了47s
可见速度是很快的,而且下载的表还是普通的小表。注意到nt一直提示为空不是真的为空,是因为没有输入值

其他杂项

压缩与办公文件

1:Advanced_Archive_Password_Recovery_Professional_4.54.48

支持rar,zip,arj,ace,axr文件破解,用的是暴力猜界,可以调速度,平均速度能上千万每秒(我的电脑)使用很简单就不演示了。
2:Advanced_Office_Password_Breaker_Enterprise_3.02.579

他可以突破密码的限制,在有限的时间破解成功,不过对文件版本的限制很大,可以拿去鹏鹏运气
3:Advanced_Office_Password_Recovery_Professional_5.50.477

支持几乎所的office文件解密,支持GPU加速,速度也可以达到千万次每秒。特别的,对于有写权限的可以直接移除权限。

4:万能密码查看器
针对微软系统密码,包括登录密码,预令牌,宽带账号,无线密码,星号密码查看等等

5:浏览器密码读取
好东西总要留到最后,感觉这个最实用了

这个支持读取谷歌,IE,火狐,opera的密码

LaZagne

命令行下获取包括但不限于一下应用存储的密码:

项目地址:https://github.com/AlessandroZ/LaZagne

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
|====================================================================|
| |
| The LaZagne Project |
| |
| ! BANG BANG ! |
| |
|====================================================================|


########## User: BetaMao ##########

------------------- Chrome passwords -----------------

Password found !!!
URL: https://time.xctf.org.cn/
Login: lalalalallal
Password: TTTTTTTTTTT

------------------- Firefox passwords -----------------
Password found !!!
URL: https://time.xctf.org.cn/
Login: lalalalallal
Password: TTTTTTTTTTT

------------------- Tortoise passwords -----------------

Password found !!!
URL: <https://10.21.5.15:8443> VisualSVN Server
Login: wxj
Password: 123

------------------- Credential manager passwords -----------------

Password found !!!
URL: git:https://github.com
Login: Personal Access Token
Password: affffffffffffffffffffffffffffffffffffff5e5e

Password found !!!
URL: MicrosoftAccount:user=wxjiilili@outlook.com
Login: wxjiilili@outlook.com
Password:

------------------- Vault passwords -----------------

Password not found !!!
URL: Domain:target=TERMSRV/10.21.5.15
Username: wxj-sec

Password not found !!!
URL: Domain:target=betamao-PC
Username: betamao

[+] 99 passwords have been found.
For more information launch it again with the -v option


elapsed time = 0.0429999828339

破解Windows系统密码

1:取得hash:(须提升至系统权限)

1
run post/windows/gather/hashdump	#meterpreter下执行获取哈希值

2:使用findmyhash破解哈希

1
2
findmyhash				#查看帮助
findmyhash LM -h 哈希值 #破解特定类型的哈希,可以输入文件

3:使用john破解哈希

1
/usr/sbin/john hash.txt --format=nt	#破解哈希

4:使用smb psexec 绕过哈希

1
2
3
use exploit/windows/smb/psexec		#meterpreter下使用该模块
set 变量 值
exploit

5:mimikatz获取明文(简单)
情况i:已经登录正常的系统后,用管理员权限运行cmd

mimikatz
privilege::debug            #执行提升权限
sekurlsa::logonpasswords                #执行抓取密码

情况ii:渗透测试中,已经取得系统权限

load mimikatz                #在meterpreter下载入该模块
kerberos                #执行获取密码

破解Linux系统密码

1:破解哈希

unshadow /etc/passwd /etc/shadow >/tmp/1.txt #将密码哈希合并
john --format=crypt --show /tmp/1.txt         #破解哈希

2:暴力猜解

sucrack                         #查看帮助
sucrack -w 2 -s 6 -a /usr/share/wordlist.txt #样例,不设定用户默认为root
                         #2线程,6秒间隔,允许转义码,密码字典

3:直接改密:
开机读秒时按e进入编辑模式

在kernel 那一行的最后添加 single,按enter确定后按b进入单用户维护模式,输入passwd改密码

在线破解


hydra

hydra密码攻击
说明:在线密码爆破攻击,支持ftp,http(s),mysql,mssql,oracle,cisco,imap,vnc等
打开:命令行模式 hydra
图形化模式 application->password attacks->online attacks->hydra-gtk
(图形化下面也有对应的命令)
1:打开软件

2:填写目标

Single target:单一目标的IP地址
Target list:目标列表文件
Port:端口
Protocol:协议
勾选显示细节


3:设置可能的用户名和密码等

Username:设置单一的账号
Username list:选择用户名列表文件
Password:同上
勾选尝试用账号做密码和空密码


4:设置相关

线程数
超时都随意
选择是否要找到全局的第一个密码退出或者一台主机的一个密码就退出那台主机
是否使用代理


5:点击开始
(最下方就是这些操作的命令)

6:显示尝试过程

当然也可以直接使用命令行参数

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
  -R        恢复上次终止|崩溃的任务
-S 使用SSL连接
-s PORT 当服务使用了非默认端口时用这个参数指定端口
-l LOGIN or -L FILE 用l指定用户名或者L指定用户名文件
-p PASS or -P FILE 用p指定密码或者用P指定密码文件
-x MIN:MAX:CHARSET 使用暴力破解时,字符的长度,字符集
-e nsr n表示尝试空密码,s表示使用相同的账号作为密码,r表示反过来尝试用账号作为密码,密码作为账号
-u loop around users, not passwords (effective! implied with -x)
-C FILE 将以“账号:密码”这种格式的文件来替代-l-p登录
-M FILE 目标主机,如有必要加端口就用hostname:port格式,一个一行
-o FILE 将结果输出到文件
-f / -F -f当一台主机一个密码被破解就换下一台,-F表示全部主机中有一个被破解就结束
-t TASKS 设置线程数,默认一次16个连接
-w / -W TIME 等待响应的时间/ 每个线程的间的连接等待时间
-4 / -6 使用的是ipv4还是6的地址
-v / -V / -d 显示详细信息,详细度逐渐加深
-q 安静模式,不输出错误信息
-U service module usage details
server 设置目标,如地址,网段等,也可以用-M。。
service 设置目标的服务,协议
OPT some service modules support additional input (-U for module help)

例如:
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh

medusa

已经介绍了hydra,但是hydra存在一些缺点:稳定性较差,程序容易崩溃,速度控制不好,容易被锁死,大量目标时性能较差。
medusa的特点:稳定性较好,速度控制得当,基于线程,但是支持破解的协议少于hydra,在网页表格支持上存在不足。
先来介绍下它的参数,不理解后面还有实例:

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
Syntax: 
Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M modue
[OPT]
-h [TEXT] : 目标的主机名或是IP地址
-H [FILE] : 包含目标的主机名或是IP地址列表的文件
-u [TEXT] : 指定用户名
-U [FILE] : 用户名文件
-p [TEXT] : 指定密码
-P [FILE] : 指定密码文件
-C [FILE] : File containing combo entries. See README for more information.
-O [FILE] : 输出日志信息
-e [n/s/ns] : 添加额外的尝试s表用账号当密码,n表示空密码
-M [TEXT] : 要使用的协议,可用-d查看(不加.mod)
-m [TEXT] : 在有的协议中,还需要再去指定特殊的参数,就用这个(-m 参数1 –m 参数2........)
-d : 显示所有可用的协议
-n [NUM] : 当是非默认的端口时指定端口号(TCP的)
-s : 支持ssl
-g [NUM] : 连接多少次失败后就放弃(default 3)
-r [NUM] : 重新尝试要间隔多少秒(default 3)
-R [NUM] : 重试多少次失败才放弃
-c [NUM] : Time to wait in usec to verify socket is available (default 500 usec).
-t [NUM] : Total number of logins to be tested concurrently
-T [NUM] : Total number of hosts to be tested concurrently
-L : 线程数
-f : 在每台主机上找到一个密码停止那一台主机的审计.
-F : 在任何主机上找到一个密码就停止.
-b : Suppress startup banner
-q : 显示正在使用的模块
-v [NUM] : 详细度水平[0 - 6 (more)]
-w [NUM] :错误详细度水平 [0 - 10 (more)]
-V : 显示版本
-Z [TEXT] : Resume scan based on map of previous scan

现在可以先看下支持哪些协议模块

再来几个实例

1
2
3
medusa -M smbnt -h 192.168.99.105 -u username -P word.lst -e ns -F
medusa -M ssh -h 192.168.99.200 -u ubuntu -P word.txt -e ns -F
medusa -M mysql -h 192.168.99.200 -u root -P word.txt -e ns -F

这里面难点应该就是破解网页登录的账号,先来看下怎么能够知道协议模块下是否还需要其他参数?
例如:

1
2
3
4
5
6
7
8
9
Available module options:
USER-AGENT:? 设置user-agent的值. Default: "I'm not Mozilla, I'm Ming Mong".
FORM:? 表单会被提交到哪里去. 默认是: "/"
DENY-SIGNAL:? 如果登录失败会有什么特征字符,用来判断是否成功,默认t: "Login incorrect"
CUSTOM-HEADER:? 习惯的http头信息,可多次使用这个参数去指定多种头
FORM-DATA:<METHOD>?<FIELDS>
提交的方法,有get和post,?后面先是用户名=&密码== 默认是: "post?username=&password="
样例: "-M web-form -m USER-AGENT:"g3rg3 gerg" -m FORM:"webmail/index.php" -m DENY-SIGNAL:"deny!"
-m FORM-DATA:"post?user=&pass=&submit=True" -m CUSTOM-HEADER:"Cookie: name=value"

这些信息怎么找?。。。又要延伸出去,在浏览器里面按f12,在源代码里面去找form标签

如图,看到方法是post,用户名是username。。。。。。。。。都能找到

来源


安全牛-kali-linux
CATALOG
  1. 1. 字典
    1. 1.1. 社工字典
      1. 1.1.1. cupp
      2. 1.1.2. ncphpass
    2. 1.2. 普通字典
      1. 1.2.1. kali自带
      2. 1.2.2. crunch生成
  2. 2. 离线破解
    1. 2.1. John
    2. 2.2. hashcat
    3. 2.3. opcrack
      1. 2.3.1. 生成彩虹表
      2. 2.3.2. 破解密码
    4. 2.4. 其他杂项
      1. 2.4.1. 压缩与办公文件
      2. 2.4.2. LaZagne
      3. 2.4.3. 破解Windows系统密码
      4. 2.4.4. 破解Linux系统密码
  3. 3. 在线破解
    1. 3.1. hydra
    2. 3.2. medusa
  4. 4. 来源