2017-2018-1 201552326《信息安全技术》实验二——Windows口令破解

姓名:刘美岑 学号:20155326 班级:1553班 日期:10.24

一、实验环境

操作系统:Windows
实验工具:LC5、SuperDic

二、实验原理

(1)口令破解方法

口令破解主要有两种方法:字典破解和暴力破解。
字典破解是指通过破解者对管理员的了解,猜测其可能使用某些信息作为密码,例如其姓名、生日、电话号码等,同时结合对密码长度的猜测,利用工具来生成密码破解字典。如果相关信息设置准确,字典破解的成功率很高,并且其速度快,因此字典破解是密码破解的首选。
而暴力破解是指对密码可能使用的字符和长度进行设定后(例如限定为所有英文字母和所有数字,长度不超过8),对所有可能的密码组合逐个实验。随着可能字符和可能长度的增加,存在的密码组合数量也会变得非常庞大,因此暴力破解往往需要花费很长的时间,尤其是在密码长度大于10,并且包含各种字符(英文字母、数字和标点符号)的情况下。

(2)口令破解方式

口令破解主要有两种方式:离线破解和在线破解
离线破解攻击者得到目标主机存放密码的文件后,就可以脱离目标主机,在其他计算机上通过口令破解程序穷举各种可能的口令,如果计算出的新密码与密码文件存放的密码相同,则口令已被破解。可以将口令破解程序的工作流程用下图表示。

图 口令破解程序的工作流程

其中,候选口令产生器作用是不断生成可能的口令。有几种方法产生候选口令,一种是用枚举法来构造候选口令(暴力破解),另一种方法是从一个字典文件里读取候选口令(字典破解);口令加密过程就是用加密算法对从口令候选器送来的候选口令进行加密运算而得到密码。这要求加密算法要采用和目标主机一致的加密算法。加密算法有很多种,通常与操作系统的类型和版本相关;密码比较就是口令比较,是将从候选口令计算得到的新密码和密码文件中存放的密码相比较。如果一致,那么口令破解成功,可以使用候选口令和对应的账号登录目标主机。如果不一致,则候选口令产生器计算下一个候选口令。

通过在线破解攻击者可以使用一个程序连接到目标主机,不断地尝试各种口令试图登录目标主机。目标主机系统中某些低等级的账号的口令往往容易被尝试成功,然后,攻击者使用其账号进入系统获取密码存放文件(Windows系统是SAM文件,Linux系统是passwd等文件),再使用离线破解方法破解高权限的口令(管理员口令等)。

三、实验过程

  • 1.实现字典破解

首先创建了一个新用户,为了在较短时间内破译出来,设置了较简单的生日口令。

之后进入实验平台,启动“字典生成器”。选择“生日”标签页,输入的年份与月份信息应包含口令中用到的生日日期。在“生成字典”标签页中,点击确认字典文件存放的路径以及新用户口令位数,最后生成字典文件。

单击工具栏“LC5”按钮,启动LC5口令破解工具。选择“Session”(会话)|“Session Options…”,在弹出的“Auditing Options For This Session”对话框中选中“Dictionary Crack”项的“Enabled”,取消其它项的“Enabled”。单击“Dictionary List”(字典列表)按钮,导入步骤(2)中生成的字典文件。注意:add完字典文件后一定要双击鼠标,不然字典文件地址可能没有被添加正确,第一次实验时就因为这样只破译了一位密码。

(4)返回LC5主界面,选择“Session”|“Import…”(导入)菜单项,在弹出的“Import”对话框中导入本地用户列表,选择“Session”|“Begin Audit”(开始审计)菜单项,开始字典破解用户口令。

由于设置的“字典生成器”输入的年份与月份信息间隔很小,所以破译过程很快,点击“Begin Audit”不久就显示出了破译的密码。

    1. 实现暴力破解

(1)创建新用户,用户口令由英文字母和数字组成,长度不超过6位,为abc123。

(2)选择LC5的“File”|“New Session…”(新会话)菜单项,新建会话。重新导入本地用户列表。

(3)在会话选项中仅选中“Brute Force Crack”(暴力破解)|“Enabled”,并在“Character Set”(字符集)中选择“alphabet+numbers”(字母表+数字), 开始暴力破解新建用户口令。

(4)返回LC5主界面,选择“Session”|“Begin Audit”(开始审计)菜单项,开始暴力破解用户口令,这次花费的时间比上次多很久,但是我的同桌输入123abc作为口令速度便很快,我认为是机器先对数字在前面组成的可能口令进行穷举,实现破译。

    1. 不同密码强度的破解时间比较

(1)再次新建4个用户,使用不同强度的用户口令

(2)新建LC5会话,在会话选项中选中暴力破解选项,字符设置选择“Custom”(自定义)。为了减少破解所需时间,我将自定义字符集缩小至下图。

(3)开始暴力破解,当破解完成后,查看LC5的破解信息,记录各自的破解时间。

(4)根据实验结果不难发现长密码比短密码破解要更多的时间,复杂密码比简单密码需要更多的时间,这也就是设置复杂密码能够提高系统安全性的原因。

四、实验总结

本次实验是Windows口令破解,主要是通过字典破译和暴力破解来加深对口令如何被破解及被破解的方式的理解。通过这次实验我知道了LC的工作原理,即通过一系列的可能的口令组合试图找到正确的口令。感觉这门课的实验每次都能让我对书本上的理论知识进行实践转换为更为灵活的运用。

五、思考题

1.分析口令破解软件L0phtCrack(简写为LC)的工作原理。

答:见实验原理。

2.Windows 7的口令保护文件名称及存储位置是什么?

答:储存在%systemroot%system32\config\中的SAM文件中。

3.Windows保护系统帐户口令的算法有LM和NTLM,这两种算法有什么区别?

参考见:(Windows用户密码基础知识)[http://www.bubuko.com/infodetail-976851.html]

(Windows LM/NTLM HASH加密及获取工具)[http://blog.csdn.net/gscaiyucheng/article/details/9151257]

4.为了保护口令安全,设置口令应该遵循什么样的原则?

我认为应该复杂而便于使用者自身记忆,数字与字母或是符号适当的相结合,增加被破译难度。

5.Windows系统在什么地方可设置帐户密码策略?帐户密码策略包括哪些内容?

密码策略是用以局限所设置的密码的一种策略。包括最小长度、使用期限、密码历史以及还原加密。对密码进行局限无非是为了强制用户设置一个更加安全的密码。人们为了省事,密码设置的往往简单,这对安全不利,在公司里可以通过密码策略让电脑使用者必须设置一个复杂密码。

(配置本地安全策略:[1]密码账户策略)[https://jingyan.baidu.com/article/ae97a646aaadaebbfd461d9b.html]

6.在密码破解中,常到彩虹表(Rainbow Table),彩虹表是什么?

彩虹表是一个用于加密散列函数逆运算的预先计算好的表, 为破解密码的散列值(或称哈希值、微缩图、摘要、指纹、哈希密文)而准备。一般主流的彩虹表都在100G以上。 这样的表常常用于恢复由有限集字符组成的固定长度的纯文本密码。这是空间/时间替换的典型实践, 比每一次尝试都计算哈希的暴力破解处理时间少而储存空间多,但却比简单的对每条输入散列翻查表的破解方式储存空间少而处理时间多。使用加salt的KDF函数可以使这种攻击难以实现。

7.你认为口令破解的技术将如何发展

我认为加密技术和破解技术将在相互竞争中进步。

最新文章

  1. iOS开发之使用XMPPFramework实现即时通信(一)
  2. jQuery EasyUI API 中文文档 - ValidateBox验证框
  3. IOS开发之WIFI及IP相关
  4. java web sql注入测试(3)---现象分析
  5. CSS制作hover下划线动画
  6. 转:45 Useful JavaScript Tips, Tricks and Best Practices
  7. 修改mysql的默认字符集
  8. Android学习笔记:Home Screen Widgets(1):大约Widget
  9. MacOS下安装gdb、mgo
  10. 06jQuery-04-DOM操作
  11. mysql的复杂查询,连接数据库
  12. Java注解(一):介绍,作用,思想及优点
  13. andorid开发build.gradle 增加几种产品的方法
  14. Django 获取访问者信息
  15. win10安装Redis方法以及基本配置
  16. centos7.3 64位 安装git
  17. background url base64
  18. Atitit 提升开发进度大方法--高频功能与步骤的优化 类似性能优化
  19. 【zigbee 】2.4G信号发放器 AT2401C PA功放
  20. hbase优缺点

热门文章

  1. DevExpress中RibbonControl的简单应用
  2. node.js 关于 async的使用
  3. 无法将参数 1 从“WCHAR [256]”转换为“const char *”
  4. Longest Turbulent Subarray LT978
  5. mysql如何查看自己数据库文件所在的位置
  6. 什么是DevOps?DevOps简明教程
  7. android DatagramSocket send 发送数据出错
  8. 利用PHP脚本辅助MySQL数据库管理2-表主键表索引
  9. hbase shell 命令
  10. 2018.10.31 NOIP模拟 一串数字(数论+贪心)