当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 网络安全教程-密码与Crack工具研究(4)

安全基础
入侵常用TCP端口作用及其操作建议之二十九
玩转XP系统中的一些另类卸载
移动硬盘常见问题的解决(1)
移动硬盘常见问题的解决(2)
使用RSS能做的十六件事
Win XP系统19例常见问题(1)
Win XP系统19例常见问题(2)
Win XP系统19例常见问题(3)
Win XP系统19例常见问题(4)
企业安全管理从IP地址开始
计算机取证常识
深入剖析EFS
WinXP另类垃圾的清理(1)
WinXP另类垃圾的清理(2)
WinXP另类垃圾的清理(3)
WinXP另类垃圾的清理(4)
给Windows XP标题栏瘦瘦身
体验Windows XP的网络视频会议(1)
体验Windows XP的网络视频会议(2)
交换网络中的嗅探和ARP欺骗

安全基础 中的 网络安全教程-密码与Crack工具研究(4)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 83 ::
收藏到网摘: n/a

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成功