什么是暴力破解?有哪些预防手段?(暴力破解密码是什么意思)
暴力破解?
见名知其意,就是利用非常暴力的使用方法进行破解想要的东西(如账号密码等);
暴力破解工作原理:
就是通过穷举各个密码,进行一次次破解尝试,如果成功,就找到了对应的密码,并成功提示,找不到,则继续尝试下一次。
暴力破解的优缺点:
优点:破解成功率100% (利用密码全集尝试);
缺点:非常耗时间,甚至有些不人性化。
但是在常规工作和具体测试环境中从不会那么搞,大都是通过从全集挑选出一些常用的或者常见的密码进行组合的方式来尝试破解,这种成功率也很高,也叫“字典攻击”。是否能成功破解的条件:就是密码字典里边一定包含有一个正确的密码,否则再大再多的密码都失败。
注:所以说,破解的速度和成功率关键不是取决于你的技术水平,而是取决于 [字典的密码耦合度] 问题。
或者通过上一篇文章介绍的,通过信息收集扫描等方式收集到的重要敏感信息进行筛选提取当中一些“可疑”为是密码的并进行组合,这种成功率一样很高。
使用工具:
这里使用的是 [ hydra ](多头蛇怪)。
hydra命令有以下参数:
-l msfadmin: 指定用户名msfadmin-L 用户名字典: 指定用户名字典(用户名也要猜)-p 单个密码: 尝试单个密码-P passwd.txt: 指定字典文件passwd.txt-e nsr: 额外检查,n 代表空口令, s 代表用户名, r代表用户名称逆序(反向)如: s -> root : root r -> root : toor -vV: 显示详细过程-o ssh_ok.log: 输出login/passwd 对到ssh_ok.log靶机IP地址
整个的命令可以是这样的:
hydra-lmsfadmin-Ppasswd.txt-ensr-vV-ossh_ok.log指定靶机IP地址 ssh
ssh: 指被攻击的协议。
这里多开了一台靶机,手动添加了密码文件,对这台及其破解,结果找到一条对的密码,绿色标识部分,即输出1 of 1 target successfully completed, 1 valid password found(成功完成一个目标,找到1个有效密码):
同时也保存了一份执行记录日志,包括hydra版本信息,执行时间,命令,以及破解到的账号和密码。
目前hydra支持的协议有:
adam6500 afp 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(v4) mysql5 ncp nntp oracle oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp radmin2 redis rexec rlogin rpcap rsh rtsp s7-300 sapr3 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp
字典的获取方式:
这里有两种获取方式,分别是手工添加,另一种是网上找现成的。
1、手动添加的密码字典:
属于较笨拙的方法,在某些使用场景要求最简便的时候可以用到,比如密码只有abc三个字符的组合,共有27个密码只有一个是正确的等等这种简单的。
一般用][crunch]命令来创建即可,格式有:
crunch最小长度 最大长度 字符集
这里得到了27个abc字符的任意排列组合:
2、找现成的:
(1)、可以Kali默认自带的字典:
在这个文件目录下:
/usr/share/wordlists/rockyou.txt
(2)、可以从网上去下载一些公开的字典,GitHub网站上比较多,比如可以在Kali终端上输入:
cupp -l从仓库去下载一些字典;
根据数字提示下载对应的字典:
cupp -i跟用户做问答最后去生成一个字典
暴力破解如何防御:
因为暴力破解的成功率是百分百的,又该谈什么防御?其实不然,虽然爆破的成功率是百分百,但是对方想爆破也是需要付出时间和精力的成本代价。所以防御做得好,也不怕被人爆破,具体防御如下,分为账号和密码上的防御:
账号防御:
前提账号不要泄露,尤其是尽量不要使用那种最常用的账户名,如test,admin,或者公司名称作为账号名称等。很多人会说,不是还有一个root最高管理权限的用户名吗?没错,这个用户是肯定存在的,但可以通过一些设置来解决,比如通过修改配置:
sudovim/etc/ssh/sshd_configPermitRootLoginyes改为:PermitRootLoginno
或者改为:
prohibit-password
不允许root用户使用密码进行登录,但是可以使用证书进行登录
甚至可以添加以下选项来控制哪些用户可以登录或者不允许登录的操作:
AllowUsers用户1用户2 ......DenyUsersroot 用户1 用户2 ......
以及控制每个TCP连接尝试次数,客户端重新连接之后还可以继续进行尝试,如:
MaxAuthTries3
密码防御:
密码的防御顶多就是延长被破解的时间,可以锁定账户,加上扩大密码全集,比如:
加大密码长度,字母大小写,特殊符号,空格,下划线,数字等组合的较强密码。
总结:
暴力破解就是通过自身构建字典和网上找现成的密码全集,用工具实现对某个目标进行破解的方法,这种方法百分百的成功率,但关键取决于字典本身。防御包括账号和密码的防御,账号则通过修改配置和不要暴露账户名等方有效法,密码则通过复杂的字符数字等组合,达到加大被破解的难度和拉长被破解的时间,消耗加大对方攻击的成本,以此让对方不攻自破。
最后郑重声明:这些方法是用来学习和测试用的,不能拿来搞破坏。