winaircrack教程:网络安全教程-密码和Crack工具研究

来源:http://hackbase.com

  由于Unix是Internet最流行服务器操作系统因此它安全性倍受关注这种安全主要靠口令实现Unix口令仅仅存储在个加密后文本文件中文件般储存在/etc目录下名称为passwd历史上Unix口令加密算法曾经历过几次修正现在普遍采用DES算法用DES算法对口令文件进行25次加密而对每次DES加密产生结果都要用256次方次查找和匹配才能进行次遍历所以理论上要破解这样口令其工作量是很大

  本文先介绍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
V Release 4.2     /etc/security
V 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目录第 2个是用户登录后将执行shell(若为空格则缺省为/bin/sh)例如在口令文件中Root用户条目为:
root : xyDfccTrt180xM.y8 : 0 : 0 : admin : / : /bin/sh
含义如表1.2所示

表1.2 /etc/passwd文件中各个域含义
域     含义

Root    用户名
XyDfccTrt180xM.y8     加密口令
0     用户ID(UID)
0     用户组ID(GID)
Admin     用户全名
/     用户主目录
/bin/sh     用户Shell


  在目前多数Unix系统中口令文件都做了Shadow变换即把/etc/passwd文件中口令域分离出来单独存在/etc/shadow文件中并加强对shadow保护以增强口令安全因而在破解时需要做UnShadow变换将/etc/passwd和/etc/shadow文件合 2为

1.1.1 口令加密机理
  Unix系统使用个单向crypt来加密用户口令单向crypt从数学原理上保证了从加密密文得到加密前明文是不可能或是非常困难当用户登录时系统并不是去解密已加密口令而是将输入口令明文串传给加密将加密输出和/etc/passwd文件中该用户条目PASSWORD域进行比较若匹配成功则允许用户登录系统

  Crypt加密算法基于资料加密标准DES它将用户输入口令作为密钥加密个64bit0/1串加密结果又使用用户口令再次加密;重复该过程共进行25次最后输出为个11存放在/etc/passwdPASSWORD域

  Morris和Thompson修改了crypt实现现在Unix系统中使用加密原型如下:
Char *crypt(char *salt, char *passwd)

  Salt是个12位长数字取值范围为0到4095它略改变了DES输出4096个区别salt值使同个口令产生区别输出当改变口令时系统选择当天个时间得到个salt数值该salt被存放在加密口令最前面因此passwd文件存放密文口令是13位些Unix系统例如:HP-UXUltrix和BSD4.4使用了16位或更长salt值这种算法称为bigcrypt或crypt16
1.1.2 口令时效
  /etc/passwd文件格式使系统管理员能要求用户定期地改变他们口令在口令文件中可以看到有些加密后口令有逗号逗号后有几个个冒号如:root : xyDfccTrt180xM.y8 : 0 : 0 : admin : / : /bin/sh
ruan : pomJk109Jky41.1 : 0 : 0 : admin : / : /bin/sh dcs : xmotTVoyumjls : 0: 0 : admin : / : /bin/sh

  可以看到yjb口令逗号后有4个ruan有2个dcs没有逗号逗号后第是口令有效期最大周数第 2个决定了用户再次修改口令的前原口令应使用最小周数(防止用户修改新口令后立刻又改回成老口令)其余表明口令最新修改时间要能读懂口令中逗号后信息必须首先知道如何用passwd_esc计数计数思路方法是: . = 0/ = 10-9 = 2-11A-Z = 12-37a-z= 38-63

  系统管理员必须将前两个放进 /etc/passwd文件以要求用户定期修改口令另外两个当用户修改口令时由passwd命令填入若想让用户修改口令可在最后次口令被修改时放两个"."则下次用户登录时将被要求修改自己口令

有两种特殊情况:

1. 最大周数(第)小于最小周数(第 2个)则不允许用户修改口令仅超级用户可以修改用户口令
2. 第和第 2个都是"."这时用户下次登录时被要求修改口令修改口令后passwd命令将"."删除此后再不会要求用户修改口令

1.1.3 UID和GID
  /etc/passwd中UID信息很重要系统使用UID而不是登录名区别用户般来说用户UID应当是独无 2其它用户不应当有相同UID数值根据惯例从0到99UID保留用作系统用户UID(rootbinuucp等)如果在/etc/passwd文件中有两个区别入口项有相同UID则这两个用户对相互文件具有相同存取权限

  /etc/group文件含有有关用户组信息/etc/passwd中每个GID在本文件中应当有相应入口项入口项中列出了组名和组中用户这样可方便地了解每个组用户否则必须根据GID在/etc/passwd文件中从头至尾地寻找同组用户

  /etc/group文件对组许可权限控制并不是必要系统用UIDGID(取自/etc/passwd)决定文件存取权限即使/etc/group文件不存在于系统中具有相同GID用户也可以组存取许可权限共享文档

  用户组和登录用户样可以拥有口令如果/etc/group文件入口项第 2个域为非空则将被认为是加密口令grp命令将要求用户给出口令然后将口令加密再和该域加密口令比较

  给组建立口令般不是个好作法如果组内共享文档若有某人猜着组口令则该组所有用户文件就可能泄漏;其次管理组口令很费事对于组没有类似passwd命令可用/usr/lib/makekey生成个口令写入/etc/group

以下情况必须建立新组:

1. 可能要增加新用户该用户不属于任何个现有
2. 有用户可能时常需要独自为个组
3. 有用户可能有个SGID需要独自为个组
4. 有时可能要安装运行SGID软件Software系统该软件Software系统需要建立个新组

  要增加个新组必须编辑该文件为新组加个入口项 由于用户登录时系统从/etc/passwd文件中取GID而不是从/etc/group中取GID所以group文件和口令文件应当具有致性对于个用户UID和GID应当是相同多用户组GID应当区别于任何用户UID般为5位数这样在查看/etc/passwd文件时就可根据5位资料GID识别多用户组这将减少增加新组、新用户时可能产生混淆

1.2 构造个Crack
  在口令设置过程中有许多个人原因在起作用可以利用这些原因来帮助解密由于口令安全性考虑禁止把口令写在纸上因此很多人都设法使自己口令容易记忆这就给黑客提供了可乘的机

  贝尔实验室计算机安全专家R.Morris和K.Thompson提出了这样种攻击可能性:可以根据用户信息建立个他可能使用口令字典比如:个人姓名、生日或姓名街道号码等然后每次取出个条目经过crypt变换并和口令文件密文口令匹配口令就被破解了般说来这种攻击策略是很有效

1.2.1 蛮力攻击和字典攻击
  构造个Crack有两种思路方法可选择种是使用蛮力攻击种是字典攻击下面分别估算下它们效率
  Unix共是 [0x00~0xff] 共128个小于0x20 都是控制符不能输入为 口令, 0x7f 为转义符, 不能输入 那么总共128- 32 - 1 = 95 个可作为口令 即10(数字)+33(标点符号)+26*2(大小写字母) = 95个

  首先估算蛮力攻击尝试次数很显然该值为mn次幂其中基数m为可能使用大小;幂次n为口令长度分下面几种情形讨论:

仅使用字母组合序列则m = 26*2 = 52
使用字母数字组合序列则m = 52 + 10 = 62
使用字母数字以及特殊组合序列则m = 95

表1.3列举几个例子计算所需尝试次数K对其数值大小得到个较确切印象

表1.3 区别集和长度口令尝试次数
M N K 52
5 38,0204,032

52 6 19,770,609,664

52 7 1,028,071,702,528

62 5 916,132,832

62 6 56,800,235,584

62 7 3,521,614,606,208

95 5 7,737,809,375

95 6 735,091,890,625

95 7 69,833,729,609,375

  从该表中可以看出随着扩大和口令长度增大所需尝试次数明显增加选择尽量大集和较长口令能获得较高口令安全

  但如果5个字母是个常用汉字拼音或英文单词估算下设常用词10000条, 从10000个常用词中取个词和任意个数字组合成口令,即:10000* 10 = 100000 (10万种可能性)因此借助于资料字典帮助可以使Crack效率大大提高

1.2.2 数据字典
  目前在因特网上些数据字典可以下载包含条目从1万到几十万条数据字典般囊括了常用单词

  也许有人认为:我口令毫无规律可言字典中不会有因此计算机是破译不了那就大错特错了有很多专门生成字典比如:Dictmake、txt2dict等等以dictmake为例:启动计算机会要求输入最小口令长度、最大口令长度、口令包含小写、大写、数字、有没有空格、含不含标点符号和特殊系列问题当回答完了计算机提出问题后计算机就会按照给定条件自动将所有组合方式列出来并存到文件中而这个文件就是资料字典

1.2.3 读写口令文件组子
  为了对/etc/passwd文件进行方便存取我编写了组访问/etc/passwd文件可读取文件用户条目入口项或写入新用户条目等这组子可用于编写Crack


  Getpwuid即可从/etc/passwd文件中获取指定UID用户条目Getpwnam则对于指定登录名在/etc/passwd文件检索用户条目getpwentpwentendpwent则可对口令文件作后续处理

  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便可顺序地返回口令文件中各用户条目pwent 又可把口令文件指针重新置为文件开始处最后使用完口令文件后endpwent 可关闭口令文件

1.2.4 构造Crack
  综上所述构造个Crack工具只需以下步骤:

1.4 口令安全建议
  每个人都应该重视保护自己帐户口令降低被他人截取可能性从而保护个人资料资料以及系统安全保护口令安全要点如下:

不要将口令写下来
不要将口令存于计算机文件中
口令要容易记住
不要用字典中有词作为自己口令
不要用诸如自己生日、电话号码、寻呼机号码、纯数字或纯字母做口令
口令应包含特殊
口令应该在允许范围内尽可能取长
不要在区别系统上使用同口令
为防止眼明手快人窃取口令在输入口令时应确认没有人偷窥
定期改变口令至少6个月要改变

  最后这点是十分重要永远不要对自己口令过于自信也许就在无意当中泄露了口令定期地改变口令会使自己遭受hacker攻击风险降到定限度的内旦发现自己口令不能进入计算机系统应立即向系统管理员报告由管理员来检查原因

  以上分析是传统保障口令安全思路方法当前也出现了些新型口令安全机制例如:动态口令和利用使用者生物唯识别信息作为口令验证

  动态口令是周期性改变口令以减少口令被破解机会、增强口令安全机制动态口令卡是种最常见应用在口令卡和服务器中都存储同口令种子(Seed)验证口令时口令卡取出当前时间和口令种子经过单向变换计算出个口令服务器也采用同样思路方法得到个口令比较这两个口令得到验证动态口令卡和服务器的间时间同步是确保准确验证前提目前些安全方面著名公司如:RSA、HP等推出了动态口令卡产品本实验室也研制成功了动态口令卡(DID卡)并广泛运用于银行、军队和政府部门

  利用使用者生物唯识别信息作为口令验证先进安全认证机制正在积极研究和完善中将逐渐应用于多种场合可以利用识别信息包括指纹、视网膜等这些特征信息是个人唯提取这些特征可以用于个人身份验证提取识别信息数据量过多存在存储开销大、传输效率低等缺陷;数据量过少又可能出现误判因而如何准确提取识别信息是当前个研究热点



  • 篇文章: 如何防御Snfer攻击

  • 篇文章: 判断Web数据库方式个小经验
  • Tags:  aircrack教程 webcrack教程 webcrack4.0教程 winaircrack教程

    延伸阅读

    最新评论

    发表评论