当前位置:
首页 > 杂文分享 > 黑客教材系列——口令的攻击术

黑客教材系列——口令的攻击术

口令的攻击术



黑客攻击目标时常常把破译普通用户的口令作为攻击的开始.先用

"finger 远端主机名"找出主机上的用户帐号,然后就采用字典穷举法进

行攻击.它的原理是这样的:网络上的用户常采用一个英语单词或自己的

姓氏作为口令.通过一些程序,自动地从电脑字典中取出一个单词,作为用

户的口令输入给远端的主机,申请进入系统.若口令错误,就按序取出下一

个单词,进行下一个尝试.并一直循环下去,直到找到正确的口令,或字典的

单词试完为止.由于这个破译过程由计算机程序来自动完成,几个小时就可

以把字典的所有单词都试一遍.这类程序的典型是 LetMeIn version 2.0

若这种方法不能奏效,黑客就会仔细寻找目标的薄弱环节和漏洞,伺机夺

取目标中存放口令的文件shadow或passwd.因为在现代的Unix操作系统中,用

户的基本信息存放在passwd文件中,而所有的口令则经过DES加密方法加密后

专门存放在一个叫shadow(影子)的文件中,并处于严密的保护之下.老版本的

Unix没有shadow文件,它所有的口令都存放在passwd文件中.一旦夺取口令文

件,黑客们就会用专解DES加密法的程序来解口令.好,首先先让我们把
Unix

口令的可能值统计一下:



Unix一共是 [0x00~0xff]共128个字符,小于 0x20 的都算是控制符,不能

输入为 口令, 0x7f 为转义符, 不能输入.那么总共有

128 - 32 - 1 = 95 个字符可作为口令的字符.



也就是 10(数字)+33(标点符号)+26*2(大小写字母)=95个



如果passwd取任意5个字母+1位数字或符号(按顺序)

可能性是52*52*52*52*52*43=16,348,773,000(163亿种可能性)



但如果5个字母是一个常用词,估算一下设常用词5000条,

从5000个常用词中取一个词与任意一个字符组合成口令,即

5000*(2*2*2*2*2)(大小写)*43=6,880,000 (688万种可能性)

注:实际情况下绝大多数人都只用小写字符,可能性还要小.



但这已经可以用微机进行穷举了,在Pentium 200上每秒可算3,4万次,

象这样简单的口令要不了3分钟. 如果有人用P200算上一周,将可进行200

亿次攻击,所以6位口令是很不可靠的,至少要用7位.



可惜很多用户确实是这么设passwd的.以上只是粗略估算常见的一种情况,

实际情况还要复杂,主要是根据用户取口令格式的变化而变化.那些hacker

并不需要所有人的口令,他们得到几个用户口令就能获取系统的控制权,所

以取口令过于简单是对系统安全的不负责.





以下举个解密码程序的例子:





John The Ripper 1.4

这个软件由著名的黑客组织--UCF出的,它支持Unix,Dos,Windows,速度超快,

可以说是目前同类中最杰出的作品.对于老式的passwd档(就是没shadow的那种,

任何人能看的都可以把 passwd密文存下来),John可以直接读取并用字典穷举击破.

对于现代的passwd+shadow的方式,John提供了UNSHADOW程序直接把两者合成出

老式passwd文件.





John 的用法简介:

(1)

JOHN -P:PASSWD -W:WORDLIST

WORDLIST是字典文件.

PASSWD是你拿到的密码文件.







(2)

没有字典档时,

在John的配置文件-->john.ini里,有密码长度和字母、数字、符号的设置,设好

后就自动在内存里生成密码去找。这样你用软盘也可以,但机器的速度一定

要快。





(3)

用暴力法破密码时使用参数-i:all

格式为JOHN -I:ALL -P:PASSWD

就可破象5e5t56e6这样的密码了。

这样可以产生A----ZZZZZZZZ的密码,不过时间...嘿嘿....



(4)

当破解到一半因种种原因需要暂时停止破解,按ctrl+c,

下次破解不必从新来过,只要john -restore:restore即可接着破。

john在纯dos下要比在win95下快,用unix更快,





(5)

对于象a2e4u7的密码是很难破出的,但JOHN的INCREMENTAL(渐进)方式的密码组合

引入了一些字母的频率统计信息,即“高频先试”的原则,倒是有些启发

意义。





在JOHN.INI中INCREMENTAL中的B,M,E各行意思如下:





B...Begin M...Middle E...End



如想要加一种方式, 比如字母加数字, 可以设成

[Incremental:a1]

CharCount = 36 (字符的个数,这儿是26个字母+10个数字)

MinLen = 8 (passwd的最小长度)

MaxLen = 8 (passwd的最大长度)

CharsetB = 1203984567smcbtdpajrhflgkwneiovyzuqx

CharsetM = 1203984567eaiornltsuchmdgpkbyvwfzxjq

CharsetE = 1203984567erynsatldoghikmcwpfubzjxvq



加在john.ini里, 执行是incremental参数选a1就行了.





(6)

按Ctrl-C中止运行时,输出是这样:

v: 18 c: 1295458688 t: 1:14:28:08 9% c/s: 11036 w: oentl - obftl

v: 0 c: 5424000 s: 862 c/s: 6292 w: fbymgf



V:是Victory,是破解成功的个数,因为俺运行一段后,破解了2个密码,显示

了V:2,后来又破了几个,V后面的数字也相应变化。

C:Compare,是比较的次数,

T:time,程序已运行了多长时间.

9%: 当前完成度.至100%即全部完成.

c/s:是每秒比较的次数,随机器性能的高低而变化.

W:是当前正在试的一个word,这个word可能位于你的字典中(如果你用字典的话)

或是john产生的。根据W所报告的数字可以估计破解到什么地方了。





(7)

运行需要的字典可以在internet上下载别人已做好的,如:



ftp.cads.com.tw 在 /pub/security下的DICT.ZIP

ftp.uni-koeln.de /pub/dictionaries/

ftp.ox.ac.uk /pub/wordlists

也可以自己做,用txt2dict或pass2dic等专用工具可自动把英语文件转换成字典.





防范的办法

防范的办法很简单,只要使自己的口令不在英语字典中,且不可能被别人猜测出

就可以了. 一个好的口令应当至少有7个字符长,不要用个人信息(如生日,名字

等),口令中要有一些非字母(如数字,标点符号,控制字符等),还要好记一些,

不能写在纸上或计算机中的文件中,选择口令的一个好方法是将两个不相关的词

用一个数字或控制字符相连,并截断为8个字符.例如我以前的口令是me2.hk97





保持口令安全的要点如下:

*不要将口令写下来.

*不要将口令存于电脑文件中.

*不要选取显而易见的信息作口令.

*不要让别人知道.

*不要在不同系统上使用同一口令.

*为防止眼明手快的人窃取口令,在输入口令时应确认无人在身边.

*定期改变口令,至少6个月要改变一次.

最后这点是十分重要的,永远不要对自己的口令过于自信,也许就在无意当

中泄露了口令.定期地改变口令,会使自己遭受黑客攻击的风险降到了一定

限度之内.一旦发现自己的口令不能进入计算机系统,应立即向系统管理员报

告,由管理员来检查原因.



系统管理员也应定期运行这些破译口令的工具,来尝试破译shadow文件,若有

用户的口令密码被破译出,说明这些用户的密码取得过于简单或有规律可循,应尽

快地通知他们,及时更正密码,以防止黑客的入侵.



yjbin

CopyLeft



分享生活点滴,内容问题可与我联系。 斜杆青年:资深产品经理/网站工程师/科技爱好者/新媒体运营/自媒体写作人