网络安全教程-密码与Crack工具研究(1)
本文先介绍Unix 口令文件的格式以及口令加密的原理;接着讲述如何构造一个口令Crack程序;最后以John the Ripper做口令攻击的测试,分析实验结果,并给出口令安全的建议。
1.1 Unix 口令文件的格式及安全机制
/etc/passwd文件是Unix安全的关键文件之一,在不同的Unix系统中,它的存储路径略有不同,参见表5.1。该文件用于用户登录时校验用户的口令,仅对root权限可写。
表1.1 不同Unix系统中口令文件的存储路径
Unix系统
路径
UNICOS /etc/udb
Ultrix4 /etc/auth
SystemV Release 4.2 /etc/security
SystemV Release 4.0 /etc/shadow
SunOS 5.0 /etc/shadow
SCOUnix /tcb/auth/files/
OSF/1 /etc/passwd
Linux1.1 /etc/shadow
HP-UX /.secure/etc/passwd
BSD4.3 /etc/master.passwd
AIX3 /etc/security/passwd
IRIX5 /etc/shadow
口令文件中每行代表一个用户条目,格式为:
LOGNAME : PASSWORD : UID : GID : USERINFO : HOME : SHELL
每行的头两项是登录名和加密后的口令,后面的两个数是UID和GID,接着的一项是系统管理员想写入的有关该用户的任何信息,最后两项是两个路径名:一个是分配给用户的Home目录,第二个是用户登录后将执行的shell(若为空格则缺省为/bin/sh)。例如,在口令文件中,它的Root用户的条目为:
root : xyDfccTrt180x,M.y8 : 0 : 0 : admin : / : /bin/sh
则,它的含义如表1.2所示。
表1.2 /etc/passwd文件中各个域的含义
域
含义
Root用户名
XyDfccTrt180x,M.y8 加密的口令
0 用户ID(UID)
0 用户的组ID(GID)
Admin 用户的全名
/ 用户的主目录
/bin/sh 用户的Shell
在目前的多数Unix系统中,口令文件都做了Shadow变换,即把/etc/passwd文件中的口令域分离出来,单独存在/etc/shadow文件中,并加强对shadow的保护,以增强口令安全。因而,在破解时,需要做UnShadow变换,将/etc/passwd与/etc/shadow文件合二为一。
1.1.1 口令加密的机理
Unix系统使用一个单向函数crypt(),来加密用户的口令。单向函数crypt()从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的。当用户登录时,系统并不是去解密已加密的口令,而是将输入的口令明文字符串传给加密函数,将加密函数的输出与/etc/passwd文件中该用户条目的PASSWORD域进行比较,若匹配成功,则允许用户登录系统。
Crypt()的加密算法基于资料加密标准DES,它将用户输入的口令作为密钥,加密一个64bit的0/1串,加密的结果又使用用户的口令再次加密;重复该过程,一共进行25次。最后的输出为一个11byte的字符串,存放在/etc/passwd的PASSWORD域。
Morris和Thompson修改了crypt()函数的实现。现在Unix系统中使用的加密函数原型如下:
Char *crypt(char *salt, char *passwd)
Salt是一个12位长的数字,取值范围为0到4095。它略改变了DES的输出,4096个不同的salt值使同一个口令产生不同的输出。当改变口令时,系统选择当天的一个时间,得到一个salt数值。该salt被存放在加密口令的最前面。因此,passwd文件存放的密文口令是13位。一些Unix系统,例如:HP-UX,Ultrix和BSD4.4,使用了16位或更长的salt值,这种算法称为bigcrypt()或crypt16()。
Tags:
作者:无从考证,yuyu3007评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论