网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 由于Unix是Internet最流行的服务器操作系统,因此它的安全性倍受关注。这种安全主要靠口令实现。Unix的口令仅仅存储在一个加密后的文本文件中,文件一般储存在/etc目录下,名称为passwd。历史上,Unix口令加密算法曾经历过几次修正,现在普遍采用DES算法。用DES算法对口令文件进行25次加密。而对每次DES加密产生的结果,都要用2的56次方次查找与匹配才能进行一次遍历,所以理论上要破解这样的口令,其工作量是很大的。 本文先介绍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()。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
温馨提示:喜欢本站的话,请收藏一下本站!