LM Hash && NTLM Hash

  Windows操作系统通常使用两种方法对用户的明文进行加密处理,在域环境中,用户信息存储在ntds.dit中,加密后为散列值。Windows操作系统中的密码一般由两部分组成,一部分为LM Hash,另一部分为NTLM Hash。在Windows操作系统中,Hash的结构通常如下:

  username:RID:LM-HASH:NT-HASH

  LM Hash的全名为“LAN  Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的散列值加密算法,其本质为DES加密算法。LM Hash的生成原理在这里就不再赘述(密码不足14字节将用0补全)。尽管LM Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了。LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用LM Hash,将用的密码设置为14位以上就可以了。如果LM Hash被禁用了,攻击者通过工具抓取的LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash为空值或者被禁用了)

  NTLM Hash是微软为了提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash是基于MD4加密算法进行加密的。

一.单机密码抓取与防范

  要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System。本地用户名、散列值和其他安全验证信息都保存在SAM文件中。lsass.exe进程用于实现Windows的安全策略(本地安全策略和登录策略)。可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

  在Windows操作系统中,SAM文件的保存位置是C:\Windows\System32\config。该文件是被锁定,不允许复制。在渗透测试中,可以采用传统方法,在关闭Windows操作系统之后,使用PE盘进入文件管理环境,直接复制SAM文件,也可以使用VSS等方法进行复制。

1.GetPass

  打开GetPass工具所在的目录。运行该程序后,即可获得明文密码。

2.PwDump7

  在命令行环境中运行PwDump7程序,可以得到系统中所有账户的NTLM Hash

3.QuarksPwDump

  在命令行环境中输入“QuarksPwDump.exe  --dump-hash-local”,导出三个用户的NTLM Hash

4.通过SAM和System文件抓取密码

(1)导出SAM和System文件

无工具导出SAM文件,命令如下

通过reg的save选项将注册表中的SAM、System文件导出到本地磁盘

(2)通过读取SAM文件和System文件获得NTLM Hash

(3)运行Cain读取SAM文件

(4)使用mimikatz直接读取本地SAM文件,导出Hash信息

通过远程下载目标及的SAM文件,然后通过在本机运行mimikatz来获取HASH,

privilege::debug    //提升权限

token::elevate   //将权限提升至System

lsadump::sam  //获取本地SAM文件,获得NTLM Hash

5.使用mimikatz在线读取SAM文件

在mimikatz目录下打开命令行环境,输入以下命令,在线读取散列值及明文密码

mimikatz.exe  "privilege::debug" "log" "sekurlsa::logonpasswords"

6.使用mimikatz离线读取lsass.dmp文件

(1)导出lsass.dmp文件

(2)使用Procdump导出lsass.dmp文件

(3)使用mimikatz导出lsass.dmp文件中的密码散列值

加载成功

导出散列值

7.使用powershell对散列值进行Dump操作

NiShang的Get-PassHashs.ps1脚本可用于导出散列值

以管理员权限打开Powershell环境,进入Nishang目录,将Get-PassHashes.ps1脚本导入,命令如下

Import-Module   .\Get-PassHashes.ps1

Get-PassHashes

8.使用Powershell远程加载mimikatz抓取散列值和明文密码

未完,,,,,,,

Windows系统散列值获取分析与防范的更多相关文章

  1. BLOB或TEXT字段使用散列值和前缀索引优化提高查询速度

    1.创建表,存储引擎为myisam,对大文本字段blob使用MD5函数建立一个散列值 create table t2(id varchar(60), content blob, hash_value ...

  2. 关于同一密码使用generate_password_hash生成不同的密码散列值

    在python的 werkzeug.security 库中有两个函数generate_password_hash与check_password_hash用于对密码明文生成散列值以及检查密码是否与提供的 ...

  3. java 散列运算浅分析 hash()

            文章部分代码图片和总结来自参考资料 哈希和常用的方法 散列,从中文字面意思就很好理解了,分散排列,我们知道数组地址空间连续,查找快,增删慢,而链表,查找慢,增删快,两者结合起来形成散列 ...

  4. Windows 系统判断MD5 值的办法

    Linux 系统的文件要传到Windows系统里面,传输过程中网络不稳定,为了判断文件是否完整传输,所以就用md5的方式判断是否同一个文件 Linux系统 [root@augusite ~]# md5 ...

  5. Windows系统中使用WMI获取远程服务器的信息

    使用WMI获取远程服务器的状态 我做的项目里边主要包含两个内容: (1)对发布在服务器上的服务(IIS服务.WCF服务)是否可以正常访问: (2)获取服务器上的部分指标:如CPU.内存.磁盘空间信息等 ...

  6. 在Windows系统下搭建ELK日志分析平台

    简介: ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索 ...

  7. os.system('cmd')在linux和windows系统下返回值的差异

    今天,用os.system('cmd')分别在windows和linux平台上执行同一ping命令,命令执行失败时返回码不同,windows为1,而linux下返回为256,如下: linux下: & ...

  8. Shiro入门学习之散列算法与凭证配置(六)

    一.散列算法概述 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5.SHA等,一般进行散列时最好提供一个salt(“盐”),什么意思?举个栗子 ...

  9. StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明本系列分享地址:http://www.cnblogs.com/tdws/p/5815735.html 上一篇文章的不合理之处,已经有所修改. 今天分 ...

随机推荐

  1. Go语言测试:testing

    学习参考来源:https://www.liwenzhou.com/posts/Go/16_test/ go test工具 必须导入包: import "testing" go te ...

  2. winfrom 双缓冲

    在窗体load函数中 this.DoubleBuffered = true; //控件,需要反射的方式设置 Type dgvType = this.dgv.GetType(); PropertyInf ...

  3. python pip无法安装到2.7

    问题 pip默认指向python3.6,没有pip2,pip2.7 解决办法 加上应用路径 加上系统环境变量 参考 https://www.cnblogs.com/fanyuchen/p/712768 ...

  4. 676. Implement Magic Dictionary

    Implement a magic directory with buildDict, and search methods. For the method buildDict, you'll be ...

  5. gin框架中的参数验证

    结构体验证 用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多. 处理请求方法 func structValidator(context *gin.Context) { var ...

  6. vi与vim编辑器与解决vim编辑异常

    目录 一:vi与vim编辑器 二:解决vim编辑异常 一:vi与vim编辑器 vim是vi的升级版编辑器,就是vim比vi丰富一些. 1.安装vim 命令 yum install vim -y 2.打 ...

  7. mysql新增用户无法登陆问题解决ERROR 1045 (28000)

    mysql增加新用户无法登陆解决方法 ERROR 1045 (28000): Access denied for user 'appadmin'@'localhost' (using password ...

  8. Kubernetes的Resource和Dashboard(十三)

    一.Resource和Dashboard 1.1.Resource 因为K8S的最小操作单元是Pod,所以这里主要讨论的是Pod的资源 官网:https://kubernetes.io/docs/co ...

  9. 在树莓派上开发SpringBoot 之使用VSCode远程开发

    一些运行在ARM单板电脑上的IoT应用通常会提供RESTful风格的API接口.本次的文章记录如何在本地电脑上通过VS Code的远程开发功能,在树莓派端创建一个SpringBoot工程,并实现调试和 ...

  10. CSS之创意hover效果

    一.发送效果 HTML <div id="send-btn"> <button> // 这里是一个svg的占位 Send </button> & ...