网络技术是从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程序的具体实现有差异,它们运用了不同的规则,使得它们破译口令的所需时间不一样。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
温馨提示:喜欢本站的话,请收藏一下本站!