分享
 
 
 

网络安全教程-密码与Crack工具研究(2)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1.2.1 蛮力攻击与字典攻击构造一个Crack程序,有两种方法可选择,一种是使用蛮力攻击,另一种是字典攻击。下面,分别估算一下它们的效率。

Unix一共是 [0x00~0xff] 共128个字符,小于0x20 的都是控制符,不能输入为 口令, 0x7f 为转义符, 不能输入。 那么总共128- 32 - 1 = 95 个字符可作为口令的字符。 即10(数字)+33(标点符号)+26*2(大小写字母) = 95个。

首先估算蛮力攻击的尝试次数。很显然,该值为m的n次幂。其中,基数m为可能使用的字符集的大小;幂次n为口令的长度。分下面几种情形讨论:

仅使用字母的组合序列,则m = 26*2 = 52.使用字母数字的组合序列,则m = 52 + 10 = 62.使用字母数字以及特殊字符的组合序列,则m = 95

表1.3列举几个例子,计算所需的尝试次数K,对其数值大小得到一个较确切的印象。

表1.3 不同字符集与长度的口令尝试次数M N K 52 5 38,0204,032

52 6 19,770,609,664

52 7 1,028,071,702,528

62 5 916,132,832

62 6 56,800,235,584

62 7 3,521,614,606,208

95 5 7,737,809,375

95 6 735,091,890,625

95 7 69,833,729,609,375

从该表中可以看出,随着字符集的扩大与口令长度的增大,所需的尝试次数明显增加。选择尽量大的字符集和较长的口令,能获得较高的口令安全。

但如果5个字母是一个常用汉字的拼音或英文单词,估算一下设常用词10000条, 从10000个常用词中取一个词与任意一个数字字符组合成口令,即:10000* 10 = 100000 (10万种可能性)。因此,借助于资料字典的帮助,可以使Crack的效率大大提高。

1.2.2 数据字典目前,在因特网上,有一些数据字典可以下载,包含的条目从1万到几十万条。数据字典一般囊括了常用的单词。

也许有人认为:我的口令毫无规律可言,字典中不会有,因此,计算机是破译不了的,那就大错特错了。有很多专门生成字典的程序,比如:Dictmake、txt2dict等等。以dictmake为例:启动程序后,计算机会要求输入最小口令长度、最大口令长度、口令包含的小写字符、大写字符、数字、有没有空格、含不含标点符号和特殊字符等一系列的问题。当回答完了计算机提出的问题后,计算机就会按照给定的条件自动将所有的组合方式列出来并存到文件中,而这个文件就是资料字典。

1.2.3 读写口令文件的一组子程序为了对/etc/passwd文件进行方便的存取,我编写了一组访问/etc/passwd文件的子程序。可读取文件的用户条目入口项或写入新的用户条目等。这组子程序可用于编写Crack程序。

Getpwuid()函数即可从/etc/passwd文件中获取指定的UID的用户条目。Getpwnam()函数则对于指定的登录名,在/etc/passwd文件检索用户条目。getpwent(),setpwent(),endpwent()等函数则可对口令文件作后续处理。

Getpwuid()与Getpwnam()返回一指向passwd结构的指针,该结构定义如下:

struct passwd { char * pw_name; /* 登录名 */ char * pw_passwd; /* 加密后的口令 */ uid_t pw_uid; /* UID */ gid_t pw_gid; /* GID */ char * pw_age; /* 代理信息 */ char * pw_comment; /* 注释 */ char * pw_gecos;char * pw_dir; /* 主目录 */ char * pw_shell; /* 使用的shell */

首次调用getpwent(),可打开/etc/passwd文件并返回指向文件中第一个用户条目的指针,并保持调用之间文件的打开状态,再调用getpwent()便可顺序地返回口令文件中的各用户条目。而调用setpwent() 又可把口令文件的指针重新置为文件的开始处,最后使用完口令文件后调用endpwent() 可关闭口令文件。

1.2.4 构造Crack程序综上所述,构造一个Crack工具只需以下步骤:

1、下载或自己生成一个字典文件。

2、取出字典文件中的每一条目,对每个单词运用一系列规则。规则可以多种多样,典型的规则包括:3、使用几个单词和数字的组合。

4、大小写交替使用。

5、把单词正向、反向拼写后,接在一起。

6、在每个单词的开头或结尾加上一些数字。当然,使用的规则越多,破译所需时间就越长。但是,规则越多,破译成功的可能性也越大。

7、调用系统的crypt() 函数对使用规则生成的字符串进行加密变换。

8、再用上述的一组子程序打开口令文件,取出密文口令,与crypt() 函数的输出进行比较。

循环重复2-3步,直至口令破解成功。

1.3口令Crack实验分析目前,最著名的口令Crack 工具是John the Ripper 与L0pht Crack.其中,John the Ripper用来破解Unix 系统口令,L0phtCrack 破解NT系统口令,它们有运行于不同平台的多个版本。我获取了运行于Windows 98/NT的最新版本:John the Ripper 1.6和L0phtCrack 2.5.并分别进行了口令Crack 的实验,因为实验方案基本相同,所以仅做John the Ripper 口令Crack 实验的分析。

首先,使用Turbo Linux 4.2 建立了三个用户组,每组4个用户帐号,总共12个帐号;分别是:A5,A6,A7,A8;B5,B6,B7,B8;C5,C6,C7,C8.其中,A代表该用户的口令只包含字母,B代表该用户的口令包含字母与数字,C代表该用户的口令包含字母、数字及特殊字符。5-8代表该用户的口令长度是5-8个字符。这些帐号的GID均被设为500.

实验用的计算机配置为:PentiumIII 500,128M内存,操作系统为Windows98第二版。先进行系统测试,运行"John -test",结果显示如下:

Benchmarking: Standard DES [48/64 4K]…… DONE Many salts: 18581 c/s Only one salt: 30792 c/s

Benchmarking: BSDI DES (x725) [48/64 4K]…… DONE Many salts: 1054 c/s Only one salt: 971 c/s

Benchmarking: FreeBSD MD5 [32/32]…… DONE Raw: 732 c/s

Benchmarking: OpenBSD Blowfish (x32) [32/32]…… DONE Raw: 41.2 c/s

Benchmarking: Kerberos AFS DES [48/64 4K]…… DONE Short: 32540 c/s Long: 92064 c/s

Benchmarking: NT LM DES [48/64 4K]…… DONE Raw: 230855 c/s

可以看出,使用标准DES加密变换的速率为:18581 字符/秒(使用多个Salt时)与30792 字符/秒(使用单个Salt时),这是实验运行时的加密变换速率。

John the Ripper 的使用方法为:Usage: file://D/HACKER/CRACK/JOHN-16/RUN/john [OPTIONS] [PASSWORD-FILES]它有多个使用选项,参见表1.4.表1.4 John the Ripper使用选项含义选项 意义-rules 破解规则

-wordfile:FILE 字典文件

-incremental 增量方式

-restore[:FILE] 恢复已存储的进度

-session:FILE 存储当前进度

-show 显示当前进度

-makechars:FILE 字符集

-users:[-]LOGIN|UID[,……] 指定想破解的用户

-groups:[-]GID[,……] 指定想破解的用户组

由于Turbo Linux使用了Shadow文件,得先进行Unshadow处理:Unshadow passwd shadow pass

得到Unshadow的口令文件pass,再输入:John -groups:500 -show pass

开始Crack过程。进行10个小时后,得到如表5.5所示的结果。其中,单位精确到分,没有Crack成功的标为"NO".

表1.5 使用John the Ripper的Crack实验结果

花费时间? 花费时间? 花费时间A5 00:12 B5 02:16 C5 NO A6 02:25 B6 NO C6 NO A7 01:38 B7 05:21 C7 NO A8 04:54 B8 NO C8 NO

可以看出,A组的成功率为:100%,B组的成功率为:50%,C组的成功率为:0%.因此,随着字符集的扩大,破解的难度明显增大。所以,安全的口令必须包含特殊字符。

还有一点值得注意,即在整体上口令越长,破译所需的时间越多,但A7比A6的破译时间短,这说明John the Ripper并不是先尝试完n个字符的口令,再尝试长为n+1的口令;而是运用了复杂的规则进行匹配。各个Crack程序的具体实现有差异,它们运用了不同的规则,使得它们破译口令的所需时间不一样。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有