网络攻防实验五
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新疆大学实验报告
学院:信息科学与工程学院专业:信息安全班级:信息安全11-2班
图2-1-1 口令破解程序的工作流程
1.候选口令产生器
候选口令产生器的作用是不断生成可能的口令。有几种方法产生候选口令,一种是用枚举法来构造候选口令(暴力破解),另一种方法是从一个字典文件里读取候选口令(字典破解)。
2.口令加密
口令加密过程就是用加密算法对从口令候选器送来的候选口令进行加密运算而得到密码。这要求加密算法要采用和目标主机一致的加密算法。加密算法有很多种,通常与操作系统的类型和版本相关。
3.口令比较
口令比较就是将从候选口令计算得到的新密码和密码文件中存放的密码相比较。如果一致,那么口令破解成功,可以使用候选口令和对应的账号登录目标主机。如果不一致,则候选口令产生器计算下一个候选口令。
通过在线破解攻击者可以使用一个程序连接到目标主机,不断地尝试各种口令试图登录目标主机。目标主机系统中某些低等级的账号的口令往往容易被尝试成功,然后,攻击者使用其账号进入系统获取密码存放文件(Windows系统是SAM文件,Linux系统是passwd 等文件),再使用离线破解方法破解高权限的口令(管理员口令等)。一.passwd文件早期Linux版本将加密后的口令保存在文件“/etc/passwd”中,在登录过程中,用户需要提供用户名和口令。操作系统根据用户名查找“/etc/passwd”中与之相应的记录,以获得口令的密文。然后,将输入的用户名和口令传递给加密函数crypt()产生当前密文。如果该密文与“/etc/passwd”所保存的密文一致,则允许用户访问系统。现代的Linux系统引进了阴影文件,并将加密后的口令存放在阴影文件中,而阴影文件不是所有人都可读,这样可以防止攻击者获得任何形式的密码。Fedora core5 Linux系统的passwd文件内容类似如下片段。
以上图中的最后一行(用户名user)为例说明各字段的含义,如表2-2-1。
表2-2-1 passwd中各字段含义
user(第一个)用户名
加密口令(Linux系统未开启阴影口令时,此处为加密正文;x x
则表示系统开启了阴影口令)
502(第一个)用户ID
502(第二个)组ID
user(第二个) 与用户相关的注释(通常是用户的名字)
/home/user 用户主目录
/bin/bash 默认shell
二.阴影口令与shadow文件
Linux对口令使用加密算法进行加密,加密算法通常是单向加密算法,即给出一个已加密的口令,我们找不到一种算法可以将其反向变换到原始口令(明文口令)。早期的Lin ux系统将加密后的口令保存在“/etc/passwd”文件中,该文件对所有用户均可见。出于安全上的考虑,较新的Linux系统将加密后的口令存储在“/etc/shadow”(阴影口令)文件中,该文件只有root用户才能读取,其它用户是无权对其进行访问的。使用阴影口令非常必要,隐藏加密后的口令是抵御字典攻击的重要方法。“/etc/shadow”文件的内容类似如下片段。
片段中每一行是一个用户信息,每行有9个用冒号分隔的字段:
●登录名;
●加密后的口令;
●上次修改口令的时间(以1970年1月1号为时间基数);
●两次修改口令之间最少的天数;
●两次修改口令之间最多的天数;
●提前多少天警告用户口令即将过期;
●在口令过期之后多少天禁用账号;
●账号过期的日期;
●保留字段,目前为空。
唯独要求非空的字段是用户名和口令。
以最后一行(用户名user)为例说明各字段的含义,如表2-2-2。
表2-2-2 shadow中各字段含义
user 用户名
$1$ 表示MD5散列算法
XSyyxElu 盐(随机值),$为盐的终止符
sBdtmzhTKkjLdVzRT2fB71 口令密文
$l$XSyyxElu$sBdtmzhTKhjLdVzRT2fB7
散列值
1
三.Crypt函数
在Linux系统中,用户口令都是通过crypt函数进行加密产生的,在Linux的C程序、perl脚本等都可以直接调用这个函数。它的调用形式如下:
crypt函数是口令加密函数,用来防止用户对于口令的搜索,它提供了DES和MD5
两种加密算法根据salt的不同位数,crypt会自动选择加密算法。key是一个用户输入的口令;salt常被称为“盐”,它是在新建用户时系统随机生成的一个字符串。salt这个字符
串的字母可以是来自[A-Z,a-z,0-9]组合中的任意几个,当salt是两位时,crypt选择使用DES加密算法,这时crypt得出的结果有4096种可能;当salt是八位时,crypt选择使用MD5加密算法,这时crypt结果的可能性更是极剧加大。
四.FC5口令加密
在Fedora Core5 Linux系统中,用户的口令就是使用crypt函数进行加密的,系统会随机选择八位的随机字符串作为salt,而将加密后得到的口令散列值则会被存储到
/etc/shadow文件里。由于/etc/shadow是只有root用户可以访问的,所以普通用户无法访问这个目录,既无法得知口令散列值,也无法得到salt,所以破解难度很大。
但假如我们已经获得了root权限,再去破解系统其它口令,则会比较容易完成。首先我们取得某个固定用户口令加密时的salt值,用crypt函数对我们猜测的口令进行加密,得出的散列值与/etc/shadow里的口令散列值进行比对,如果一致,则说明我们猜测的口令
图2-2-1 创建新用户
(2)针对系统已有的用户,使用john进行口令破解,首先消灭“白痴”用户。进入实验平台,单击工具栏“控制台”按钮,进入john所在工作目录。输入以下命令对“白痴”用户进行口令破解。
「说明」口令破解第一步主要是针对“白痴”用户而进行的,原理是根据用户的名称加上常见的变化而猜测密码(一般所谓的白痴用户是这样的,比如用户名为fool,而他的口令密码是fool123、loof、lofo……,这样的用户一般在一分钟内会被全部“消灭”)。
(3)解决掉“笨蛋”用户,输入以下命令对“笨蛋”用户进行口令破解。
「说明」口令破解第二步是使用字典文件来进行破解,不为什么,只是因为设置密码的是人而不是机器,如人们常用hello、superman、adfgh等作为自己的口令密码。而jo hn的-rules参数则在此基础上再加上些变化,如字典password.lst中有单词cool,则joh n还会尝试使用cooler、COOL等单词进行解密。
(4)用户“大屠杀”,输入以下命令对所有用户口令进行暴力破解。