内网横向移动研究:获取域内单机密码与Hash

作者:tl602
围观群众:9
更新于
内网横向移动研究:获取域内单机密码与Hash

在内网渗透中,很多横向移动的方法都需要攻击者先获取域用户的密码或者Hash值才能进行,比如哈希传递攻击、各种票据传递,还有黄金票据维持权限等等。在这篇文章中,我们先来讲解一下横向移动中获取域内单机密码的方法,下篇文章再来讲那几种攻击手段。由于近期一直在准备“蓝帽杯”得比赛,所以一直没有时间更新,文章可能略显仓促,不足之处还请多多指教。

本文专为想我一样正在入门的小白准备,大佬请路过!

Windows中的密码

在Windows2000以后,Windows机器都用NTLM算法在本地保存用户的密码,密码的NTLM哈希保存在%SystemRoot%\System32\config\SAM文件中。 Windows操作系统通常使用两种方法对用户的密码进行哈希处理,即 LAN Manager(LM)哈希和 NT LAN Manager(NTLM)哈希。所谓哈希(Hash),即使用一种加密方法对明文密码进行加密,对一个任意长度的字符串数据进行一次加密运算,都可以返回一个固定长度的字符串。Windows加密过的密码口令,我们称之为Hash。

内网横向移动研究:获取域内单机密码与Hash

Windows操作系统中的密码一般由两部分组成:一部分为LM Hash,另一部分为NTLM Hash。在Windows中,Hash的结构通常如下:

内网横向移动研究:获取域内单机密码与Hash
Username:RID:LM-Hash:NT-Hash

在windows2000以后的系统中,第一部分的 LM-hash 都是空值,因为LM-hash可以很容易的破解,所以windows2000之后这个值默认为空,所以第二部分的NTLM-hash才真正是用户密码的哈希值。

在渗透测试中,通常可从Windows系统中的SAM文件和域控的NTDS.dit文件(在域环境中,用户信息存储在NTDS.dit中)中获得所有用户的Hash。也可以通过Mimikatz读取lsass.exe进程获得已登录用户的NTLM hash和明文值 。

详情请见:https://blog.csdn.net/qq_36119192/article/details/85941222

内网横向移动研究:获取域内单机密码与Hash

获取明文密码或密码Hash

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

PwDump7工具

下载地址:https://www.openwall.com/passwords/windows-pwdump

Pwdump7可以在CMD下提取出系统中的用户的密码hash (包括LM和NTLM),需要系统权限,“骨灰”级黑客玩家可能听说过这个玩具。通过Pwdump7提取出的HASH,可以用ophcrack等工具破出明文密码,对进一步渗透是有很大帮助的。

工具使用很简单,只需在命令行环境中运行Pwdump7程序,即可得到当前系统中各个用户的密码Hash (包括LM和NTLM):

Mimikatz工具

下载地址:https://github.com/gentilkiwi/mimikatz

内网横向移动研究:获取域内单机密码与Hash

Mimikatz是由法国人Benjamin开发的一款功能强大的轻量级调试工具,因功能强大,能够直接读取Windows操作系统的明文密码,因而闻名于渗透测试领域。通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe?进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!

注:但是在安装了KB2871997补丁或者系统版本大于win10或windows server 2012时,默认在内存缓存中禁止保存明文密码,这样利用mimikatz就不能从内存中读出明文密码了,但可以通过修改注册表的方式抓取明文。

Mimikatz读取明文密码和hash也时最常用的方法。需要管理员权限。

privilege::debug      // 提升至debug权限
sekurlsa::logonpasswords       // 抓取密码

Procdump是微软官方发布的工具,所以杀软不会拦截,其可以用来将目标lsass文件导出。下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

先用在目标机器上传微软的工具Procdump,导出其lsass.exe:

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

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

sekurlsa::minidump 目录\lsass.dmp       // 将导出的lsass.dmp载入到mimikatz中
sekurlsa::logonpasswords full                 // 获取密码

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

先利用注册表命令将目标机的sam或system文件导出,需要管理员权限:

reg save hklm\sam sam.hive
reg save hklm\system system.hive

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

lsadump::sam /sam:sam.hive /system:system.hive

也可以直接使用mimikatz读取本地SAM文件,获得密码Hash:

privilege::debug
token::elevate
lsadump::sam

Quarks PwDump工具

下载地址:https://github.com/quarkslab/quarkspwdump

Quarks PwDump 是一款开放源代码的Windows用户凭据提取工具,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。目前支持Windows XP/2003/Vista/7/8版本,相当稳定。

使用需要管理员权限:

QuarksPwDump.exe --dump-hash-local        // 导出本地hash值
QuarksPwDump.exe -dhl
QuarksPwDump.exe -dhdc         // 导出内存中的域控哈希值
QuarksPwDump.exe --dump-hash-domain-cached

使用Powershell脚本

使用powershell脚本加载mimikatz模块获取密码,该脚本位于powersploit后渗透框架中,下载地址:https://github.com/PowerShellM

非特殊说明,本文版权归 宇德消息网 所有,转载请注明出处.

本文分类: 本周

本文标题: 内网横向移动研究:获取域内单机密码与Hash

本文网址: http://www.tssjyd.com/benzhou/2002.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。