logo资料库

kali-hydra暴力破解ssh实战(字典很大的情形,包含排障过程).docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
一.环境
二.现象
三.解决方法
四.疑惑
一.环境 一台 kali linux,版本如下: ssh 版本如下(ssh 默认安装,未作任何配置,全是默认配置): 二.现象 命令如下: ###暴力破解 127.0.0.1 的 ssh 协议,-l root 表示用户为 root,-P big.txt 密码字典使用 big.txt, -t 64 线程数为 64,-w 3 每次密码尝试的超时时间为 3s 。 -vV 显示详细过程 , -f 找到正确密码即刻停止,-o successful1a 把暴力破解的结果放入这个文件。
big.txt 是从 hydra 的默认字典中(路径/usr/share/wordlists/dirb/)复制过来的,大约 2 万行,为了测试效果,我把我的正确密码“123456”改到了 big.txt 的最后几行。 1:当我使用的字典很小的时候,比如只有几十行,很快就破解成功了。 2:当我使用上面的 big.txt(2 万行)的时候,正确密码如果在该文件的前几十行,或者 前 400 行的样子,也很快就破解成功了(命令不变,只是修改密码字典的内容)。 3:当使用 big.txt(2 万行),并且正确密码放到比较靠后的时候,该命令跑到大约 400 行 的时候屏幕的输出就会卡顿一会儿,过一会儿又继续输出,如下(总共 19732 行的字典, 下面的进度是跑到了 446 行): 4: 我同时查看 ssh 服务的日志信息(tail –f /var/log/auth.log)和执行上面的暴力破解命 令,发现前 446 行都是有这种报错命令的,类似于报“认证失败”,说明上面前 446 次的暴力 破解服务端是有反应的:
但是 446 次之后的破解,ssh 服务端的日志出现了不一样的提示信息,并且再之后就是 空白的了,没有新的信息输出了(此时 hydra 暴力破解还在运行,hydra 那儿有输出信息), 这就表示虽然我还在暴力破解,但是服务端的某个策略已经使得我得暴力破解失效了(日志 后面是空白了就表示不再理会之后的 ssh 登陆请求) 百度搜索了这个报错,大约的意思就是:PAM 被设置为”retry=3”,他将忽略同一会话 中来自 sshd 的任何进一步的身份验证请求。---这句话的意思好像是同一会话密码验证不能 超过 3 次,否在就不再处理后面的请求。但是实际现象是 ssh 暴力破解尝试了约 446 次之后 才会卡住,并且这里的会话也不知道指的什么意思。 注:ssh 服务端配置文件/etc/ssh/sshd_config 里面可以设置验证方式(配置文件里面有 个 UsePam yes 就是设置 PAM 的),貌似有三种,并且优先级为 公私钥认证>PAM 认证>密 码认证 5 由于这里 446 次之后就卡住了,也就是说 auth.log 没有输出信息了,于是我就 ctrl+C 结束了 hydra 暴力破解进程,然后我再次执行和上一次同样的暴力破解命令,auth.log 又有 输出信息了,说明 ssh 服务端又开始处理我的请求了,依然是到 446 次那儿就不再处理请求。 这就很奇怪了,同样的源 IP 和目的 IP,并且我抓包看了,前 446 次用的源端口都是不同的 (端口依次加 1,但是 IP 会话只有一百多条,不知道为什么),不知道它这个安全策略到底 是怎么样子的,也无法理解第 4 步中的报错信息的解释,但是我只关心结果,能破解成功就 行。
三.解决方法 1 通过上面现象大约可以猜测到,默认安装 ssh 服务端时,由于某种安全策略,使得我 暴力破解时密码字典不能超过大约 446 行。 2 于是我自己新建了一个 300 行左右的密码文件(行数更小更加保险),把正确密码放 在最后几行的位置,暴力破解成功。 3 但是实际环境中,密码字典肯定很大,于是我的解决思路为:将 big.txt 这个大的密码 字典拆分为小的 txt 文件,然后针对每一个文件执行一次如下的命令,只是将-P(密码字典) 后面跟的文件名改一下就行了。 我将 big.txt 拆分到了/root/tmp/这个目录下,拆分的命令为: 将 big.txt 按照每 300 行拆分一次,拆分后的文件名为前缀为 1(文件名以 1 开头),拆 分后的文件如下: 再写个脚本 1.sh,内容如下: 写了个循环,对于拆分后的每个字典文件,都执行一次 hydra 命令,linux 脚本中的代 码语法比较奇怪,和 java/c 语言什么的区别很大,比如上面的读取 tmp 目录下的所有文件: $(ls $folder) ,$folder 符号表示取 folder 的值,也就是”/root/tmp”,左边那个$也表示取值, 但是当后面跟 linux 命令的时候,必须要用小括号括起来。
4 执行脚本之后,又发现了新问题,脚本卡在那儿了。为了排查,我执行了如下命令, 也就是对拆分后的密码文件 1aa 单独执行 hydra 命令,该文件 300 行,并且该文件中没有正 确的 ssh 密码。 命令执行到 299 行的时候,hydra 这个进程就一直卡在那儿了,不会自动结束,之前做 过测试,如果文件里面有正确密码,即使正确密码在最后一行,找到正确密码之后进程就会 自己结束。如下,行数记错了,1aa 密码文件一共是 362 行。 5 为了解决以上 hydra 进程不自己结束的问题,我大约估计了一下时间,每个密码文件 大约需要 20s 就能破解完,于是脚本文件改成了下面的: 加了一个 timeout 命令,这个命令格式如下: timeout 时间 命令 --上面就表示 20s 内该 hydra 命令将被强制 kill 掉。 再次执行脚本,密码破解成功!现在就只需要一个强大的密码字典,就能成功暴力破解 默认安装的 ssh 服务。 查看 success 这个文件,框选部分就是成功的密码,不知为何会出现多次,下面的那些 行就是没有成功的那些密码字典的显示信息,仅显示执行了哪条命令。
四.疑惑 1 这个报错到底是什么意思: 我的疑惑如下两张图:
2 为什么 hydra 执行到倒数第二行的时候进程不会自己结束,对于我上面的解决方法,还有 没有其他的更好的方式,希望有一个老师可以教我,自己摸索又难效率又低,主要是想利用 工具进行攻击渗透(这里是指的实际环境,不是什么 dvwa 之类的靶机)。
分享到:
收藏