背景描述

随着网络应用的不断深入,处于网络中的敏感信息被集中保存在服务器或存储设备中,甚至在网络客户端也往往保存着大量的敏感数据。为了保护这些敏感信息及相关数据不会丢失,或者被恶意用户非法访问,造成不必要的损失,网络用户往往会给这些服务器或存储设备进行Windows口令加密。但同时,随着破解密码的技术不断更新,加上用户设置密码存在一定的规律,例如使用年份、生日、名字和常用语等等作为密码,容易被猜解,所以了解密码破解的原理对保护用户信息显得很重要。

 工作原理

步骤:

1、    Windows系统本地帐号信息存储

Windows NT/2000/2003/XP等系统使用sam文件作为本地用户账户数据库,所有本地帐号的登录名和口令等相关信息都保存在这个文件中。系统对保存在sam中的口令信息进行了加密处理,以保护口令信息的机密性。此外,在系统运行期间,sam文件被system账号锁定,即使是administrator账号也无法对其进行删除或拷贝等操作。 为了保证Windows操作系统的向后兼容性,Windows NT/2000/2003/XP系统采用了两种不同的机制对帐号的口令信息进行加密,所以在sam文件中每个用户口令对应着两个口令字,一个是LanMan版本的LM散列值,另一个是NT版本的NTLM散列值。

LanMan散列算法

LanMan散列算法对用户口令信息的处理过程:

第一,将所有英文字母均转换为大写字母形式;

第二,检查密钥长度是否是14个字符,如果密钥长度不足14个字符则用0补足;(注:Windows NT和Windows 2000系统密钥最长为14个字符,而Windows 2003和xp无此限制,如果密钥超过14个字符,则不会生成LM散列值,而是只生成NTLM散列值)

第三,将密钥平均分成两份,每份含7个字符,再分别对每份密钥进行加密处理;

第四,最后将加密处理后的密码组合起来。得到最终的LM散列值。

LM Hash示例:假设明文口令是"Welcome"

首先全部转换成大写,再变换成机器存储模式数据,在变换过程中如果明文口令不足14字节,则在后面添加0x00补足14字节。

"WELCOME" -> 57454C434F4D4500000000000000

(注:可以将明文口令复制到UltraEdit编辑器中使用十六进制方式查看即可获取明文口令的十六进制串)

然后将上述代码分割成两组7字节的数据,分别经str_to_key()函数处理得到两组8字节数据

57454C434F4D45 -str_to_key()-> 56A25288347A348A

00000000000000 -str_to_key()-> 0000000000000000

这两组8字节数据将采用DESKEY算法对魔术字符串"KGS!@#$%"进行标准DES加密,"KGS!@#$%"对应的机器代码为:4B47532140232425

56A25288347A348A -对4B47532140232425进行标准DES加密-> C23413A8A1E7665F

0000000000000000 -对4B47532140232425进行标准DES加密-> AAD3B435B51404EE

最后将加密后的这两组数据简单拼接,就得到了最后的LM Hash

LM Hash: C23413A8A1E7665FAAD3B435B51404EE

NTLM散列算法

IBM设计的LM Hash算法存在一些弱点,微软在保持向后兼容性的同时提出了NTLM Hash算法。

NTLM散列算法对用户口令信息的处理过程:

第一,将明文口令字符串转换成Unicode字符串;

第二,对所获取的Unicode串进行标准MD4单向哈希

NTLM Hash示例:假设明文口令是"123456"

首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节

"123456" -> 310032003300340035003600

对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值,共16字节。

310032003300340035003600 --------------> 32ED87BDB5FDC5E9CBA88547376818D4

采用MD4算法进行标准单向哈希

就得到了最后的NTLM Hash值:

NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4

与LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,并摆脱了魔术字符串"KGS!@#$%"的依赖;另外MD4是真正的单向哈希函数。

2、    口令破解原理

无论口令加密采用DES算法、MD4算法,还是其他机制,因为它们具有单向不可逆的特性,要想从算法本身去破解,难度相当大,通常只存在理论上的可能性。由于各种加密算法都是公开的,虽然逆向猜解不可行,但从正向猜解却是很现实的。因为,设置口令的用户是人,人们在设置口令时,习惯使用一些容易记忆且带有明显特征的口令,如用户名、生日、电话号码、亲友姓名等,这就给我们破解口令带来机会。

在我们的实验当中,先通过向靶机植入模拟木马。查找系统的漏洞,当某些系统密码为弱口令,并且开启了IPC共享的时候,就可以通过我们复制上去的模拟木马,破解Windows口令,进行远程控制靶机。

我们还可以制作一个字典文件:里面的条目都是经常用作口令的字串。猜解口令时,就从字典文件中读出一个条目作为口令,使用与系统口令加密算法相同的方法进行加密,得到的字串与口令文件中的条目进行比较,如果相同,则猜解成功;否则,继续下一次尝试。最终结果可能得到了真正的用户口令,也可能字典文件条目用尽而不能破解。 口令破解的方法主要是字典法,利用字典文件进行口令猜解。常见的口令猜解模式主要是:

字典模式:即使用指定的字典文件进行口令猜解。

混合模式:即指定字典规则,对字典条目进行某种形式的变化,增加字典内容,提高猜解的效率。

暴力模式:即遍历所有可能的密钥空间,进行口令猜解。

3、    口令破解方法

不同系统使用的口令保护方式不同,对应的口令破解方法、破解工具亦不同。

Windows 9X系统:Windows 9X系统没有设置严格的访问控制,因此,可以通过重新启动系统等方法进入系统,然后将C:\Windows目录下所有的pwl文件(*.pwl)拷贝到磁盘上,最后,使用专用工具pwltool,即可破解出系统的口令。pwltool支持暴力、字典、智能3种模式的口令破解。

Windows 2000系统:Windows 2K使用sam文件保存用户账号信息,系统运行期间,sam文件是被system账号锁定的,而且,sam文件信息在保存前经过压缩处理,不具有可读性。要破解Windows 2K系统的账号,就必须先获取sam文件,然后,使用工具L0phtcrack进行口令猜解工作。

获取sam文件的方法有:

获取%SystemRoot%\system32\config\sam文件。这种方式适用于黑客可以直接接触目标主机,且该主机安装有多种操作系统。重新启动主机,进入其它操作系统,如Windows 98。如果Windows NT/2000是以FAT16/32磁盘格式安装的,则可以直接读取sam文件;如果Windows NT/2000是以NTFS磁盘格式安装的,则可以借助工具NTFS98,在Windows 9x中读写NTFS磁盘的内容,或者借助工具NTFSDOS,在DOS环境下读写NTFS磁盘内容。

获取%SystemRoot%\repair\sam._文件。这种方式适用于系统做过备份操作或者创建过紧急修复盘的情况。 当系统进行备份,或创建紧急修复盘的时候,会将SAM内容拷贝到sam._文件中。sam._文件在系统运行期间不会被锁定,系统管理员可以任意读取它。但是,这种方法也具有一定的局限性。如果系统更改账号信息后没有再做备份的话,获取的sam._文件将没有任何价值。

从注册表中导出SAM散列值。这种方法需要具有超级管理员权限。只要有超级管理员权限,利用某些工具,如pwdump,就可以将注册表中的SAM散列值转储成类似UNIX系统passwd格式的文件。

嗅探网络中SMB报文中包含的口令散列值。Windows系统提供网络服务时通常都是借助SMB来传递数据,其中包括身份认证和加密过程。当网络中存在类似网络文件共享、Windows域登录注册等借助于SMB的网络通信时,监视网络中的SMB数据传输,并加以识别筛选,就可以获取到有价值的口令散列字符串。

4、    防止口令攻击

首先,就是要在黑客之前,对自己的系统进行认真审计。利用诸如LC5、SAMInside、之类的“黑客”工具,了解本系统的弱点所在,然后有针对地改进,以便更从容地应对外来的攻击。其次,加强用户账号及口令的安全策略。

LANMAN工作原理相关推荐

  1. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  2. 深入理解Nginx工作原理

    1 反向代理 1.1 概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给intern ...

  3. 高频开关电源原理_程控开关电源的工作原理

    本文介绍了开关电源的工作原理以及它的特点. 程控开关电源要要比线性电源复杂得多. 下图是典型的开关电源工作原理图. 首先对 220 V/50Hz 的 AC 输入,通过桥式整流器进行整流 储能电容对整流 ...

  4. Servlet生命周期与工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  5. java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?

    近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件:SqlSession Executor Stat ...

  6. linux网络管理原理,Linux__网络管理(物理层 数据链路层 网络层工作原理)

    千锋云计算逆战班11点后打卡 今天学习后,进行复习下,物理层 数据链路层  网络层 的工作原理 物理层关心的两件事情:1.信号 2.介质 先说信号:信号分为模拟信号和数字信号 模拟信号: 模拟信号,不 ...

  7. HDD工作原理 导图

    以上导图介绍了我们使用的 (HDD)机械硬盘的基本构造以及核心工作原理,对于大家扫盲有所帮助 参考文档: https://blog.csdn.net/yizhaoxin/article/details ...

  8. 路由和交换机工作原理

    路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成.如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种"互连"并没有什么实际意义.因 ...

  9. Google工作原理

    今天在晚上看到一个图,讲解google的工作原理,感觉写的不错.贴过来方便以后深入的研究. 转载于:https://www.cnblogs.com/muyuge/archive/2010/07/06/ ...

最新文章

  1. datetime处理日期和时间
  2. RL之PG:基于TF利用策略梯度算法玩Cartpole游戏实现智能得高分
  3. 小白重装系统教程_重装系统教程,小编教你怎么重装win10系统
  4. LeetCode - Easy - 169. Majority Element
  5. MNIST手写数字识别【Matlab神经网络工具箱】
  6. 【实习】同方威视南京研发中心招聘图像算法工程师
  7. 阿里与网易考拉收购案谈崩?后者股价下跌5.01%
  8. acl的access-list命令使用详解
  9. Centos7 下安装mariadb及其基本操作
  10. mac上远程连接windows
  11. JavaScript继承理解:ES5继承方式+ES6Class继承对比
  12. 在inDesign软件中如何覆盖母版页项目?
  13. UDS协议的项目应用
  14. App邀请机制下,策略决定成败
  15. make settings时编译报错:dalvik/dx/bin/Android.bp:24:1: module “dx-doc-stubs“ already defined
  16. python 苹果电脑 怎么安装_mac怎么安装python2.7(python苹果电脑如何安装教程)
  17. 百加得改变生产方式,协助生产洗手液
  18. 【科普】“植物神经功能紊乱”如何诊断和治疗呢?
  19. Vue--Router--路由传参的方法
  20. c语言编码7 3循环码码组,信息论循环码报告

热门文章

  1. Dart基础系统学习
  2. 计算机主板元件及作业,电脑主板元器件认识(1).ppt
  3. F-魏迟燕的自走棋:最大基环树(CF875F)
  4. SCRUM和用户故事(User Story)
  5. 抖音爆款短视频配音如何制作?分享3个免费好用的配音软件
  6. CentOS7环境安装Kubernetes四部曲之一:标准化机器准备
  7. vue-quill-editor富文本编辑器使用步骤
  8. 据说,他是中国有钱人中最快乐的那一个
  9. (5.1)【苹果系统中的数据隐藏】Spy Pix原理、使用方法、分析
  10. c语言 date转string,c如何将字符串转换为时间格式