当前位置:萝卜系统 > 网络技术教程 > 详细页面

网络安全图文详细教程-密码与Crack工具研究(4)

网络安全图文详细教程-密码与Crack工具研究(4)

更新时间:2021-12-02 文章作者:未知 信息来源:网络 阅读次数:

网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。
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 */
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程序的具体实现有差异,它们运用了不同的规则,使得它们破译口令的所需时间不一样。

网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html