专栏首页数据库安全内网渗透—获取Windows内Hash密码方法总结 | 美创安全实验室
原创

内网渗透—获取Windows内Hash密码方法总结 | 美创安全实验室

在内网渗透中,当攻击者获取到内网某台机器的控制权后,会议被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制欲环境下的全部机器。

Windows下安全认证机制

Windows下的安全认证机制总共有两种,一种是基于NTLM的认证方式,主要用在早期的Windows工作组环境中;另一种是基于Kerberos的认证方式,主要用在域环境中。

图1:NTLM认证流程图

这里主要对NTLM的认证流程做一下说明:

1、首先在客户端中输入username,password和domain,然后客户端会把密码进行Hash后的值先缓存到本地。

2、Client将username的明文发送给DC(域控)。

3、DC会生成一个16字节的随机数,也就是挑战码(Challenge),然后再传回给Client。

4、当Client收到挑战码以后,会先复制一份,然后和缓存中的密码Hash再一同混合Hash一次,混合后的值称为response,之后Client再将challenge,response以及username一并都传给server。

5、Server端在收到client传过来的这三个值以后会把它们都转发给DC。

6、当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的hash,然后把这个hash拿出来和传过来的challenge值再混合hash。

7、将混合后的hash值跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地登录,所有验证肯定也全部都直接在本地进行了。

在Windows2000以后,Windows机器都用NTLM算法在本地保存用户的密码,密码的NTLM哈希保存在%SystemRoot%\System32\config\SAM文件中。Windows操作系统中的密码一般由两部分组成:一部分为LM Hash,另一部分为NTLM Hash。在Windows中,Hash的结构通常如下:

Username:RID:LM-Hash:NT-Hash

在windows2000以后的系统中,第一部分的 LM-hash 都是空值,因为LM-hash可以很容易的破解,所以windows2000之后这个值默认为空,所以第二部分的NTLM-hash才真正是用户密码的哈希值。在渗透测试中,通常可从Windows系统中的SAM文件和域控数据库的NTDS.dit文件(在域环境中,用户信息存储在NTDS.dit中)中获得所有用户的Hash。

使用PwDump工具获取密码Hash

PwDump7可以在CMD下提取出系统中的用户的密码hash,使用管理员权限直接运行该工具即可:

获取到Hash后,我们可以用破解工具来破解得到明文密码,也可以进行哈希传递攻击来横向渗透。

使用Mimikatz工具抓取Windows密码

Mimikatz是安全人员在内网渗透过程中的利器,它是由法国的一位大神研发的。攻击者可以通过Mimikatz提升进程权限注入进程读取进程内存。

Mimikatz的最大功能是可以直接读取Windows操作系统的明文密码,原理是lsass.exe是Windows系统的安全机制,主要用于本地安全和登陆策略,通常在我们登陆系统时输入密码后,密码便会存贮在lsass.exe内存中,经过wdigest和tspkg两个模块调用后,对其使用可逆的算法进行加密并存储在内存中,而Mimikatz正是通过对lsass.exe逆算获取到明文密码。

需要注意的是当目标为win10或2012R2以上时,默认在内存中禁止保存明文密码,但是我们可以通过修改注册表的方式抓取明文,输入以下命令即可:

Reg add HKLM\SYSTEM\CurrentContro

lSet\Control\SecurityProviders\WDigest /vUseLogonCredential /t REG_DWORD /d 1 /f

1、直接读取

Mimikatz读取明文密码和hash时需要管理员权限。

privilege::debug //提升至debug权限

sekurlsa::logonpasswords //抓取密码

2、Procdump+Mimikatz离线读取lsass.dmp文件

Procdump是微软官方发布的工具,可以用来将目标lsass文件导出。先在目标机器上上传Procdump,导出lsass.dmp

procdump64.exe-accepteula-ma

lsass.exe lsass.dmp

将目标机上的lsass.dmp下载到本地后,执行Mimikatz导出lsass.dmp里面的密码和hash:

sekurlsa::minidump 目录\lsass.dmp //将导出的lsass.dmp载入到Mimikatz中

sekurlsa::logonpasswords full //获取密码

3、通过SAM和System文件抓取密码和Hash

首先利用注册表命令将目标机的sam或者system文件导出

reg save hklm\sam sam.hive

reg save hklm\system system.hive

然后将目标机上的sam.hive和system.hive下载到本地,利用Mimikatz读取sam和system文件获取NTLMHash:

token::elevate

lsadump::sam

Windows密码破解方法

1、ophcrack在线破解

再通过以上工具获取到密码Hash后,我们需要对其进行破解,以得到明文密码。Ophcrack网站https://www.objectif-securite.ch/en/ophcrack提供了在线Hash破解服务,我们将得到的NTLM Hash输入到第一个查询框内,点击GO即可进行破解,小于14位的密码一般在几分钟内就可以破解完成:

图2:ophcrack在线破解

2、ophcarck工具破解

Ophcrack是一款Windows密码哈希值破解工具,在它的官网为我们提供了几十GB的哈希表。彩虹表下载地址:

https://ophcrack.sourceforge.io/tables.php

图3:ophcarck工具破解

防范措施

1、更新补丁

微软为了防止用户的明文密码在内存中泄露,发布了KB2871997补丁,关闭了Wdigest功能。Windows Server 2012及以上版本默认关闭Wdigest,使攻击者无法从内存中获取明文密码。Windows Server 2012以下版本,如果安装了KB2871997补丁,攻击者同样无法获取明文密码。

2、关闭Wdigest Auth

如果无法更新补丁,需要手动关闭Wdigest Auth,在CMD中输入以下命令:

reg add HKLM\SYSTEM\CurrentControlSet\

Control\SecurityProviders\WDigest /vUseLogonCredential /t REG_DWORD /d 0 /f // 关闭Wdigest Auth

需要将UseLogonCredential的值设为0,然后注销当前用户,重新登陆即可。

本文转自杭州美创科技有限公司(第59号),如需二次转载请咨询。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP文件包含漏洞原理分析|美创安全实验室

    PHP是目前非常流行的Web开发语言,但是在利用PHP开发Web应用时,如果稍有不注意,就会产生PHP文件包含漏洞。PHP文件包含漏洞是一种常见的漏洞,而通过P...

    数据安全
  • 数据库防火墙:数据库防火墙商业化的前提条件

    数据库防火墙和一般的传统数据库安全设备不同,它部署在应用服务器和数据库服务器之间。业务系统巨大的流量将穿越数据库防火墙,数据库防火墙任何的风吹草动都会影响业务系...

    数据安全
  • 冰蝎3.0绕过HIDS原理分析|美创安全实验室

    最流行的WebShell客户端—冰蝎,于近日发布了最新版3.0。最新版一经发出便火速在安全圈广泛传播,究其原因是因为新版冰蝎较之前版本进行了大量修改,一举绕过了...

    数据安全
  • Jenkins修改管理员密码.

    前言:Jenkins修改管理员密码,我看了网上所有的教程,竟然全都是拿着一串已经加密好的111111的密文去替代config.xml文件里面的密码,然后大家的...

    JMCui
  • 儿童节礼物-BlueKeep漏洞POC恐怖来袭

    外媒 SecurityWeek 报道,将近 100 万台设备存在 BlueKeep 高危漏洞安全隐患,而且已经有黑客开始扫描寻找潜在的攻击目标。

    洛米唯熊
  • 史上最短命 Windows 系统!比尔盖茨研发,用过几乎都是差评...

    35 年前,Windows 1.0 发布,这是由微软联合创始人比尔・盖茨带头开发,其灵感来自于 VisiCorp 的 Visi On-- 一款短命的、基于 GU...

    GitHubDaily
  • 看微软 Windows 30年发展简史,你用过最早的系统版本是什么?

    用户7657330
  • windows网络工具/方案集锦

    这篇文档是我之前写的文档的整理集合,这篇文档是我之前写的文档的整理集合,这篇文档是我之前写的文档的整理集合。

    shawyang
  • IN2Windows 8 (Part 3

    在继续介绍 Windows 8 系统的功能以及易用性之前,我想在这个系列文章的第三篇,也就是本文中,向大家介绍 Windows 8 确定后的 SKU 版本。

    py3study
  • windows7iis7 远程服务器管理工具

    iis7远程服务器管理工具(RSAT)使IT管理员能够从Windows 10  Windows 8.1  Windows 8  Windows 7或Window...

    it妹

扫码关注云+社区

领取腾讯云代金券