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

安全基础
IE浏览器防黑十大秘籍,黑客也没招
网络工程师讲解系统安全漏洞的形成和防治
清除导致XP系统反复重启的新网银木马
识破QQ欺骗网络地址的几种方法汇总
安全基础知识 细说暴库的原理与方法
排除无线突然中断故障实例
强搜天线 搜出WiFi世界的安全漏洞
网管应用技巧 内网安全十大策略说明
如何修改局域网内部打印机的IP地址
如何找出IIS中隐藏的网站
EFS加密技术的概念分析及一次解密经过
提高Windows XP系统安全性要关闭的10种服务
PHPBB 2.0.22 MOD版最新注入漏洞
修复Windows系统忘记密码的9个高招
用SockOnline软件轻松突破端口限制
安全基础知识 最强0到33600端口详解
执行文件方式加密FLASH文件的解密方法
网吧被入侵后的应对解决方法
网页“黑手”如何攻击你的Windows系统
不要让别人读了你的信 谈私密数据保护

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 29 ::
收藏到网摘: 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成功