针对网络协议的暴力破解
弱口令与字典
弱口令的定义
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的互联网账号受到他人控制,因此不推荐用户使用。
弱口令产生原因
这个应该是与个人习惯相关与意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。相关的安全意识不够,总认为不会有人会猜到我这个弱口令的,相关的安全意识不够,总认为不会有人会猜到我这个弱口令的。
弱口令的危害
通过系统弱口令,可被黑客直接获得系统控制权限。
弱口令解决办法
强制对所有的管理系统账号密码强度必须达到一定的级别。不可在使用简单的admin、123456等弱密码了,修改密码为复杂密码并加密保存,建议密码包含大小写字母,数据和特殊符号,密码长度不低于八位,如果网站存在数据泄漏漏洞(如sql注入漏洞),务必修复漏洞。。
设置密码通常遵循以下原则:
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
(2)口令长度不小于8 个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。
弱口令分类
公共弱口令
公共弱口令就是常见的密码,公共弱口令也就是根据大量的密码数据统计得出的出现频率较高弱口令,关于这方面的弱口令统计结果有很多。
下列举例了10个全球最常用的弱口令(由安全公司NordPass公布):
1 | 123456 |
其中,位居其三的picture1和位居其十的senha(在葡萄牙语中是密码的意思)均是2020年新上榜的密码。
完整榜单:https://nordpass.com/most-common-passwords-list/
对于网站后台而言,一般为:
1 | admin |
具体来说,不同的后台类型拥有不同的弱密码:
数据库(phpmyadmin):账号:root,密码:root、root123、123456
tomcat:账号:admin、tomcat、manager,密码:admin、tomcat、admin123、123456、manager
jboss:账号:admin、jboss、manager,密码:admin、jboss、manager、123456
weblogic:账号:weblogic、admin、manager,密码:weblogic、admin、manager、123456
条件弱口令
个人弱口令往往与这个人的个人信息(姓名,生日,手机号,特殊昵称,爱好,社交软件账号,常用username,邮箱…),关系成员(家庭成员,男女朋友…),所处环境(车牌号,公司信息比如公司名称,公司成立时间或地点,公司domain等…),还有特殊的指定字符(数字,单词…),在这里我也列举一些经常出现的组合:我们可以使用一些工具来生成弱口令字典。
弱口令字典生成工具
Pydictor
pydictor 是一款轻量级字典生成工具,使用 python 语言开发,遵循 GPLv3 协议的开源命令行工具,主要用来帮助安全研究人员生成称心如意的暴力破解字典。
以功能强大、简洁实用、适用场景多、自定义程度强为开发目标。
项目地址:https://github.com/LandGrey/pydictor
cupper
基于国外的一款社工字典生成工具(cupp)进行改进。因为cupp多年不更新而且密码生成习惯和汉语还是有很大差异的,在渗透测试环节存在许多问题。因此最初为了be better than cupp,社工密码生成器命名为cupper。但是现在这款工具的目标不仅仅是be better than cupp,而是力求达到国内最好的社工密码猜解效果。
项目地址:https://github.com/Saferman/cupper
PassGAN
基于深度学习,来训练PassGAN模型来生成密码。是第一个利用生成对抗网络(GANs)来增强密码破译的新方法。
(虽然我也没用过,感觉很NB的样子)
项目地址:https://github.com/brannondorsey/PassGAN
Crunch
Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。由其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
Crunch为kali自带工具之一。
使用教程:https://www.freebuf.com/sectool/170817.html
Kali Linux自带的字典
Kali默认自带了一些字典,在 /usr/share/wordlists 目录下

暴力破解网络协议工具
Hydra
介绍
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。
目前该工具支持以下协议的爆破: AFP,Cisco AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM- GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle Listener,Oracle SID,Oracle,PC-Anywhere, PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP / R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth ,VNC和XMPP。
对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。
由于Kali中自带Hydra,所以怎么安装就不讲了,下面直接讲如何用它。
常见参数
- -R:继续从上一次进度接着破解
- -S:大写,采用SSL链接
- -s <PORT>:小写,可通过这个参数指定非默认端口
- -l <LOGIN>:指定破解的用户,对特定用户破解
- -L <FILE>:指定用户名字典
- -p <PASS>:小写,指定密码破解,少用,一般是采用密码字典
- -P <FILE>:大写,指定密码字典
- -e <ns>:可选选项,n:空密码试探,s:使用指定用户和密码试探
- -C <FILE>:使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数
- -M <FILE>:指定目标列表文件一行一条
- -o <FILE>:指定结果输出文件
- -f :在使用-M参数以后,找到第一对登录名或者密码的时候中止破解
- -t <TASKS>:同时运行的线程数,默认为16
- -w <TIME>:设置最大超时的时间,单位秒,默认是30s
- -v / -V:显示详细过程
- server:目标ip
- service:指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等
- OPT:可选项
破解SSH
1 | hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t 5 192.168.11.93 ssh |

破解FTP
1 | hydra -L user.txt -P passwd.txt -o ftp.txt -vV -t 8 192.168.11.93 ftp |

破解3389远程登录
1 | hdra -L user.txt -P passwd.txt -vV -t 16 192.168.14.198 rdp |

Medusa
介绍
medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登陆,可以同时对多个主机,用户或是密码执行强力测试,medusa和hydra一样,同样属于在线破解工具,不同的是,medusa的稳定性相较于hydra要好很多但是支持的模块相对于hydra少一些。
常见参数
- -h 目标主机名称或是IP地址
- -H 包含目标主机名称或是IP地址文件
- -u 测试用户名
- -U 包含测试用户名文件
- -p 测试用户名密码
- -P 包含测试用户名密码文件
- -C 组合条件文件
- -O 日志信息文件
- -e[n/s/ns] n代表空密码,s代表为密码于用户名相同
- -M 模块执行mingc
- -m 传递参数到模块
- -d 显示所有模块名称
- -n 使用非默认TCP端口
- -s 启用ssl
- -r 重试时间,默认3秒
- -t 设定线程数量
示例
- 破解ftp服务
1 | medusa -u root -P comon.lst -h 192.168.200.243 -M ftp |
- 破解ssh
1 | medusa -u root -P comon.lst -h 192.168.200.244 -e ns -M ssh |
Sparta
介绍
Sparta是一个Nmap、Nikto、Hydra等工具的集合,利用各个工具的优秀功能,完成信息收集、扫描和爆破等一体化的工具流。
Sparta主要包含以下功能:
端口扫描,程序自动调用nmap进行扫描,根据nmap的扫描结果,nikto自动加载结果,展开更精确的扫描。
针对扫描的结果,特定使用,如:使用dirbuster目录爆破,利用webslayer进行web指纹识别。
针对可爆力破解的端口,可调用hydra进行暴力破解。
安装
1 | git clone https://github.com/secforce/sparta.git |
破解加密明文
John the Ripper
介绍
John the Ripper是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。除了在各种Unix系统上最常见的几种密码哈希类型之外,它还支持Windows LM散列,以及社区增强版本中的许多其他哈希和密码。它是一款开源软件。Kali中自带John。
1 | 可执行文件位置: /usr/sbin/john |
John the Ripper支持字典破解方式和暴力破解方式
破解Linux系统密码
破解Linux用户密码需要使用到两个文件(包含用户的信息和密码hash值)
1 | /etc/passwd 包含用户信息的文件 |
创建一个 abc 用户,密码设置为 password ,用来测试

使用 unshadow 命令组合 /etc/passwd 和 /etc/shadow ,组合成 test_passwd 文件。其他 test_passwd 就是 /etc/passwd 和 /etc/shadow 的简单组合:
1 | unshadow /etc/passwd /etc/shadow > test_passwd |

然后用 John 破解密码了。我们可以使用 John 自带的密码字典,位于 /usr/share/john/password.lst ,也可以使用我们自己的密码字典。用John自带的密码字典为例:
1 | john test_passwd |
若使用自己的密码字典:
1 | john --wordlist=字典路径 test_passw |
如图,john 已经把abc用户的密码给破解出来了

查看破解信息:
1 | john --show test_passwd |
这里root和yjx的密码是之前破解的,则一共破解了3个用户的密码

在线MD5破解网站
- CMD5:https://www.cmd5.com/
- SOMD5:https://www.somd5.com/
- 查MD5啦:https://cmd5.la/