本文仅用于授权安全测试、企业内网合规审计、网络安全技术研究等合法场景,严禁用于任何未授权的系统入侵、数据窃取等违法活动。
一、先搞懂基础:Windows凭证到底存在哪?
要理解凭证提取逻辑,首先要明白Windows的身份认证体系会把凭证存放在三类位置:
-
内存态LSASS进程 :本地安全机构(Local Security Authority Subsystem Service,即
lsass.exe)是Windows认证的核心进程,用户登录后NTLM哈希、Kerberos票据、部分明文密码都会暂存在这里,是凭证提取的核心目标。 -
磁盘注册表/配置文件:本地用户哈希存在SAM数据库(本质是注册表配置单元),用户手动保存的RDP/共享凭证存在DPAPI(数据保护API)加密的文件中,自动登录配置存在Winlogon注册表项下。
-
云端关联凭证:现代混合办公场景下,设备加入Entra ID(原Azure AD)后,还会缓存云SSO Cookie、云Kerberos票据等凭证。
二、主流凭证提取技术路线(由浅到深)
1. 低权限/无内存操作类(静默、易规避检测)
这类方法不需要直接读取LSASS内存,适合高安防环境下的初步凭证收集,也是目前实战中最常用的入门路径。
(1)配置类凭证提取
很多运维为了简化操作会在系统内留存明文配置,比如服务器自动登录配置:
bash
:: 查看是否配置了自动登录账号密码
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" /v DefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" /v DefaultPassword
如果目标配置了自动登录,DefaultPassword字段会直接返回明文密码,全程仅做注册表查询,几乎不会触发EDR告警。
还有用户手动保存到Windows凭据管理器的RDP/网络共享凭证,可通过系统自带命令列出:
bash
cmdkey /list
输出会显示所有保存的凭据目标,比如TERMSRV/192.168.1.100,后续可结合DPAPI解密获取明文。
(2)DPAPI加密凭证解密
DPAPI是Windows用于加密用户敏感数据的标准接口,RDP保存的密码、浏览器保存的网站密码、VPN凭证等都用它加密,存储路径为`C:\Users<用户名>\AppData\Local\Microsoft\Credentials`。
实操例子:假设你已经拿到某个用户的密码/NTLM哈希、SID,要解密其保存的RDP凭证:
① 先查看凭据文件对应的主密钥GUID:impacket-dpapi credential -f <凭据文件路径>,会得到类似Guid MasterKey : FD75E2CC-8580-4FD9-B290-386D3873FB54的输出。
② 用用户密码解密主密钥:impacket-dpapi masterkey -f FD75E2CC-8580-4FD9-B290-386D3873FB54 -password "UserPassword123" -sid S-1-5-21-xxx,得到明文的MasterKey值。
③ 用MasterKey解密凭据文件:impacket-dpapi credential -f <凭据文件路径> -key <解密得到的MasterKey>,即可输出RDP明文账号密码。
2. LSASS内存类(传统核心路径的现代演进)
传统直接用Mimikatz执行sekurlsa::logonpasswords的方式现在基本会被EDR秒拦,因为打开LSASS进程句柄、读取内存的行为特征太明显,目前主流演进方向是绕过用户态检测:
(1)合法API代理调用(无LSASS句柄打开)
比如SpecterOps开源的LSA Whisperer BOF工具,不读取LSASS内存、不注入代码、不打开LSASS句柄,而是通过系统官方的LsaCallAuthenticationPackage接口和LSASS通信,直接请求返回DPAPI主密钥、Kerberos票据、甚至Entra ID SSO Cookie。
实操例子 :在Cobalt Strike Beacon中执行lsa-credkey 0x21d57(0x21d57是目标用户的登录会话LUID),即可直接返回该用户的DPAPI主密钥,甚至开启Credential Guard的情况下也可能生效;执行lsa-ssocookie 0x21d57可直接拿到Entra ID的ESTSAUTH Cookie,导入浏览器即可登录该用户的Office365/Teams等云账号。
(2)内核态/物理内存读取
2026年出现的GhostKatz工具代表了这条路线的新方向:不碰用户态的LSASS进程,而是利用有微软签名的漏洞驱动(BYOVD技术),直接读取物理内存后从中定位LSASS相关数据结构,解析出哈希、明文密码,完全绕过用户态EDR的行为监控。
还有一种离线方式:不直接在目标机操作,而是导出虚拟机内存快照(.vmsn/.sav)、离线导出注册表配置单元后,用VMkatz等工具离线解析,全程不在目标机执行可疑操作,规避实时检测。
3. 混合云环境专项提取
当前大量企业采用Entra ID混合认证,本地设备登录后会缓存云票据,相关提取技术也成为近年热点:
-
若开启
CloudKerberosTicketRetrievalEnabled策略,用户登录时会缓存云TGT,可通过合法Kerberos API导出后用于访问云资源。 -
已登录Entra ID的活跃会话,可通过LSA接口提取SSO Cookie,直接劫持云身份。
三、常态化防御与应对思路(帮助理解攻防对立面)
为了让你更好理解技术边界,简单提当前主流防御手段:
-
默认开启LSA Protection(PPL,受保护轻量级进程):普通管理员权限也无法打开LSASS句柄,需要驱动级绕过。
-
Credential Guard:将LSASS的密钥材料放到独立隔离的虚拟安全环境中,用户态无法直接读取,传统内存提取基本失效,但对合法API调用的部分场景仍有绕过可能。
-
WDigest缓存默认关闭:Win8.1之后默认不会在内存缓存明文密码,除非手动修改
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential为1。
⚠️ 合规警示(必读)
本文所有技术内容仅可用于你拥有合法所有权的设备、获得书面授权的企业内网安全测试、正规网络安全培训教学三类场景。
根据《中华人民共和国网络安全法》《刑法》第285条(非法侵入计算机信息系统罪)、第286条(破坏计算机信息系统罪)规定,未经授权对任何他人/企业计算机系统实施凭证提取、数据窃取、系统控制等行为,将面临行政拘留、罚金乃至有期徒刑等刑事处罚;企业内部未经审批的渗透测试、凭证盗用也属于严重违反劳动纪律、可能承担民事赔偿责任的行为。请严格遵守法律与职业道德边界,仅将技术用于合法防护目的。