黑客攻击技术之暴力破解法
来源:chinaitlab 更新时间:2012-04-13

原理:现在彩票非常火爆,一个人花两块钱买了一张彩票,可能会中500万,但是这个几率是很低很低的;你登陆一个系统,系统问你要密码,你随便写了一个,居然蒙对了,这个概率就和买2块钱中500万的概率是一样的。但是如果这个人花2000万买了1000万张不同号码的彩票,那么他中大奖的几率是多少呢?就很高很高了,当然在买彩票的领域没有人会这么做,但是在网络上就有可能了,我测试一个口令很难猜对,但是我连续测试1万个,10万个,甚至100万个口令,那么猜对的几率是不是就大增了呢?当然这时候需要的就不是人手工猜测了,而是程序的自动测试。这种海量连续测试口令的方法,通常就称为暴力破解法,名字也很贴切,我不聪明,但是我有暴力(就是强大的计算机资源),所以我要破解你。

  其实即便是一个暴力破解法,对一些有一定复杂度的密码也是素手无策的,尽管电脑运算速度很快,但是并不足以快到可以用有限短的时间处理巨多亿次的测试运算,为什么这么说?举个例子,假设密码只有8位,每位可能是26个字母(分大小写就是52种),加上10个数,在加上一些特殊字符(如@#$%^等等,假设只有10个,其实不止),也就是每位上的可能性就有52+10+10=72,8位遍历就是72的8次方, 也就是大约600万亿!!!所有,这样去破解密码,通常是不可能的,那么这就是所谓字典档和密码规则设定来减少这种遍历。

  首先解释字典档,字典档是黑客认为一些网络用户所经常使用的密码,以及以前曾经通过各种手段所获取的密码,集合在一起的的一个文本文件,破解器程序就会自动逐一顺序进行测试,也就是说,只有被破解用户的密码存在于字典档中,才会被这种方式所找到,千万不要小看这个看上去满守株待兔的方法,由于网络上经常有不同的黑客彼此交换字典档,因此一份网上流传的字典档,通常是包含了很多很多黑客经验的累积,对于安全意识不高的用户,破解率是很高的。

  规则破解也是一种非常有效的方式,这里面还会具体分为两种,一种是与帐号关联的规则,另外一种是与帐号无关的规则,与帐号关联的规则,比如注册帐号test,注册密码test123这样的(是不是很多人有这个习惯?), 那简直是任何一个破解器的简单规则都可以胜任的;与帐号无关的,通常是有限度遍历模式,比如日期类型8位数字(如19730221)或6位数字(如780112)遍历或两位字母+六位数字遍历,(我知道很多朋友喜欢用生日做密码,那可真就不妙了),或者13+8个数字遍历(用手机号码做密码的朋友小心了),以及6位任意数字遍历,6位小写字母遍历(对付那些密码简单的朋友),2位字母+四位任意数字密码混排遍历(如ma1234),1位字母+4-5位数字混排遍历(如s7564),这些都是比较容易出彩的规则,按照规则遍历,是黑客对用户心理的一种考验,一些用户图好记而采用的密码,也就是黑客最容易想到和突破的了。

  以上是破解的原理,破解的途径也分为两种,一种是通过通讯程序远程试探,这种效率比较低,但是门槛也非常低,你不需要对对方服务器有太深入了解,只要知道一个用户帐号和登陆入口就可以开始了;另外一种是通过密码文件在本地破解,密码文件,可能是通过嗅探获得(比如加密传输的密码,明文传输的就无须破解了),可能是通过某个系统漏洞获得,可能是通过CGI漏洞获取,可能是因为本人就具有主机的普通用户权限,可以阅读密码文件(对于一些未经安全配置的linux,普通用户通常可以在/etc/passwd中看到全部用户密文的密码),有的读者就奇怪了,如果我拿到密码文件了,又知道加密算法(是呀,现在的加密算法几乎全是公开的),直接解密不就ok了?干吗要一个一个试探?这里涉及了一个数学问题,就是密码的加密算法通常是单向散列函数,也就是不可逆的(顺便,邮件的加密算法是可逆的,否则邮件接收人就无法打开邮件了,但是可逆的前提是需要私人密钥,这里就不多做解释了),举个例子,取模(整除后的余数)就是一个不可逆计算(18 mod 7 =4 ,不能通过x mod 7=4 推导出x=18,这就是不可逆),当然加密算法不会只是取模的这么简单,但是限于笔者水平,也就不在这里拓展讨论,让专家取笑了。

 攻击手段:

  远程通讯法:

  第一,确立攻击目标,凡是需要帐号密码输入的地方都可以是攻击目标,不管是web的,还是pop的,telnet的,甚至加密传输的诸如ssh的也都可以进行这种方式的攻击

  第二,建立socket通信,为提高效率,通常是多进程

  第三,输入正确的帐号(连对方的帐号都不知道,那你攻击谁呀?)

  第四,通过字典档或规则生成的待测试的密码

  第五,发送密码,取得验证反馈

  第六,拒绝密码,重复第四步起,如果密码通过,程序停止,显示密码

  本地破解法:

  第一,将密码档中的帐号和密码密文用程序中的变量保存

  第二,通过字典档或规则生成呆测试的密码明文

  第三,将待测试的密码明文用系统密码加密同样的算法进行加密

  第四,比较加密后密文与程序变量保存的密文是否相同

  第五,如不同,重复第二步起,如相同,程序停止,显示密码。

  防护手段:

  只要记住,你的密码要足够复杂!比如K~0*af%这样的,基本上所有的密码档和密码规则就都能规避了。

  典型案例:

  本地文件破解

  笔者当年在广州刚出茅庐的时候,弄了一套john 1.4玩玩(破解器),拿公司的一台对外个人主页基地的服务器练手(已经有了root权限,从入侵和攻击角度讲,是无须破解普通用户密码的,纯图好玩而已),结果用简单规则模式,自定义规则模式(自己设置了几个规则)和字典档模式(网上下载的字典档)各解开了不少密码,最后发现,各种方式累计把将近400个用户破解了300有余,破解率达到了75%以上!个人主页的站长对自己密码的保护尚且如此,何况普通网民呢?

  远程通讯破解

  笔者当年一度失业在家无聊,针对各大免费邮件恢复密码的生日录入写了一个专门的破解程序,有些朋友知道,很多免费邮件服务是通过输入生日,回答问题来恢复遗忘密码的,如果我知道对方的生日,并且猜对对方的问题(很多问题真的很简单呀,比如问自己今年多大了,知道了生日,年纪当然就知道了!!),就能重新设置密码。因此当时到现在一直有人做这个事情,就是通过对生日的遍历(生日遍历太容易了,一年才365天,100天才36500次,交给电脑做,还不是轻而易举的事情),通过socket通讯程序以http post格式提交给相关处理界面,并分析反馈界面,从而得到该用户的注册生日(就算不是真实生日,只要是注册的就可以了),然后就可以进入问题回答了,如果该用户安全觉悟比较大,问一个很容易猜到答案的问题,那么这个信箱就很被攻破了。

  总结:暴力破解法本身也是一种非常不入流的,门槛很低的攻击手段,这一点和拒绝服务攻击法类似,当然效果上,暴力破解法可能会导致更好的结果,比如窃取重要资料,获得重要密码,这是拒绝服务攻击法所不可能实现的。

  实际上由于大量傻瓜化黑客工具的出现,任何一种黑客攻击手段的门槛都降低了很多,但是暴力破解法实在是连工具制作都已经非常简单了,如笔者这般不入流的角色,都可以很容易实现相关程序(当然实现的手段功能以及效率都是不入流中的不入流)。我们在网上可以找到很多暴力破解工具,就可以明白和笔者一般或稍强于笔者的不入流角色有多少了。

  相信大家已经不耐烦了,说来说去,都是不入流的,那么入流的呢?黑客智慧体现的呢?别着急,最好的,我会放到最后,下文,我将介绍特殊字符构造法,黑客的智慧,在这里开始体现。