探析Unix口令破解原理
创始人
2024-06-29 08:41:46
0次

由于Unix安全性倍受关注。Unixd的安全性主要靠口令实现,因此,Unix口令加密算法几度改进,现在普遍采用DES算法对口令文件进行25次加密,而对每次DES加密产生的结果,都要用2的56次方次查找与匹配才能进行一次遍历,要破解这样的Unix口令,其工作量是巨大的,所以从理论上说这种Unix口令是相当安全的。

然而不幸的是我们仍然不时听道Unix口令被攻破的消息。这些Unix口令是如何被攻破的,我们又怎样才能保证Unix口令的安全呢。下面将对这一问题进行探讨。

Unix口令破解通常有蛮力攻击和字典攻击两种方式。Unix中一共有 [0x00~0xff] 共128个字符,其中 95个字符(10(数字)+33(标点符号)+26*2(大小写字母) )可作为口令的字符。假设m为可能使用的字符集的大小,n为Unix口令的长度,则可生成的口令数为m的n次幂,随着字符集的扩大与口令长度的增加,口令攻击尝试次数将迅速增加。

如Unix口令长度为6,取字母和数字组合,可能性是62 的6次幂56,800,235,584。但如果5个字母是一个常用汉字的拼音或英文单词,估算一下常用词约为10000条,从10000个常用词中取一个词与任意一个数字字符组合成口令,则仅10000* 10 = 100000 (10万种可能)。

在口令的设置过程中,还有许多个人因素在起作用,为使自己的口令容易记忆,许多人往往将个人的姓名、生日、电话号码、街道的号码等作为口令,这样便为口令的破解留下了方便之门。 贝尔实验室的计算机安全专家R.Morris和K.Thompson提出了这样一种攻击的可能性:可以根据用户的信息建立一个他可能使用的口令的字典。

比如:他父亲的名字、女朋友的生日或名字,街道的名字等等。然后对这个字典进行加密,每次拿出一个经过加密计算的条目与口令文件比较,若一致,口令就被猜到了。 也许有人认为Unix口令毫无规律可言,字典中不会有,计算机是破译不了的,那就大错特错了。有很多专门生成字典的程序,比如:Dictmake、txt2dict、xkey等等。

以dictmake为例:启动程序后,计算机会要求输入最小Unix口令长度、最大口令长度、口令包含的小写字符、大写字符、数字、有没有空格、含不含标点符号和特殊字符等一系列的问题。当回答完了计算机提出的问题后,计算机就会按照给定的条件自动将所有的组合方式列出来并存到文件中,而这个文件就是资料字典。

目前,在因特网上,有一些数据字典可以下载,包含的条目从1万到几十万条。数据字典一般囊括了常用的单词。 攻击者一旦通过某种途径获得了passwd文件,破译过程便只需一个简单的C程序即可完成。Unix中有一组子程序可对/etc/passwd文件进行方便的存取。getpwuid()函数可从/etc/passwd文件中获取指定的UID的入口项。

getpwnam()函数可在/etc/passwd文件中获取指定的登录名入口项。这两个子程序返回一指向passwd结构的指针,该结构定义在/usr/include/pwd.h中,定义如下: 
 

  1. struct passwd {     
  2. char * pw_name; /* 登录名 */     
  3. char * pw_passwd; /* 加密后的口令 */     
  4. uid_t pw_uid; /* UID */     
  5. gid_t pw_gid; /* GID */     
  6. char * pw_age; /* 代理信息 */     
  7. char * pw_comment; /* 注释 */     
  8. char * pw_gecos;     
  9. char * pw_dir; /* 主目录 */     
  10. char * pw_shell; /* 使用的shell */     
  11. char * pw_shell; /* 使用的shell */     
  12. }  


getpwent(),setpwent(),endpwent()等函数可对Unix口令文件作后续处理。首次调用getpwent()可打开/etc/passwd文件并返回指向文件中第一个用户条目的指针,再次调用getpwent()便可顺序地返回口令文件中的各用户条目,setpwent() 可把口令文件的指针重新置为文件的开始处,endpwent() 可关闭口令文件。

由此可见,攻击者只需建立一个字典文件,然后调用现成的cryp()加密例程来加密字典文件中的每一条目,再用上述函数打开口令文件,进行循环比较就很容易破解密码了。

实际上Internet网上有很多现成的密码破解软件工具,过于简单的口令很容易破解。那么,我们用什么方法来保证用户口令是一个安全的口令呢?运用CrackLib来构建安全的Unix口令是一个较好的办法。

【编辑推荐】

  1. 8.1.3 UNIX口令散列
  2. Unix文件系统高级管理
  3. Unix文件系统备份概述
  4. Unix系统如何防止感染DOS系统病毒
  5. 鉴别Unix系统是否被入侵技巧

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...