使用SetTrustedCredmanAccessPrivilege获取已保存的凭据
windows系统中有一个名为SeTrustedCredmanAccessPrivilege的权限,使拥有该特权的进程可作为受信任的调用者访问凭据管理器。
凭据管理器可以从控制面板 -> 凭据管理器进入。凭据管理器允许用户存储凭据,比如域账户、Web、普通账户凭据等。管理器使用了DPAPI(Data Protect)进行保护,所以只有经过认证的账户可访问关联的存储数据。程序使用CredRead或CredEnumerate可以访问当前用户存储的凭据,但是读取域账户凭据时,即设置读取类型为CRED_TYPE_DOMAIN_PASSWORD,返回密码将为空。这是由于LSASS对该行为进行了限制。只有诸如NTLM、Kerberos 和 Negotiate等Microsoft身份验证包在连接到指定目标时可不受限制地自动使用此凭据。
除了注入LSASS、读取LSASS或是手动实现DPAPI的方式(Mimikatz),作者提到了另一个名为CredBackupCredentials的系统API(LSASRV.DLL),该API被CREDWIZ.EXE用于备份用户凭据,作为恢复使用。该备份包含所有凭据,包括域凭据。
BOOL WINAPI CredBackupCredentials(HANDLE Token,
LPCWSTR Path,
PVOID Password,
DWORD PasswordSize,
DWORD Flags);
如果成功的话,调用API解密文件内容即可获取所有凭据。
调用CredBackupCredentials的要求就是需要调用者具有SeTrustedCredmanAccessPrivilege权限。Winlogon中即含有这么个权限,也存在其他具有该权限的进程,比如LSASS。我们需要做的就是从具有该权限的一个进程中借用其令牌,作为调用凭据备份API使用,因此需要执行时具有管理员权限。
作者给出了实现步骤:
- 使用PROCESS_QUERY_LIMITED_INFORMATION访问方式打开winlogon进程(也可以选择其他符合条件的进程),然后以TOKEN_DUPLICATE打开其令牌;
- 将打开的令牌复制为一个模拟令牌,之后启用模拟令牌中的SetTrustedCredmanAccessPrivilege权限,模拟令牌类型需要为TokenPrimary,经过测试TokenImpersonation将失败(无法启用权限);
- 打开备份凭据目标用户的令牌,该用户需要已经过身份验证;
- 调用CredBackupCredentials,传入参数指定备份后数据的写入路径;
- 从凭据备份文件中读取加密后数据,调用API CryptUnprotectData解密出被备份的凭据;
- 结束令牌模拟,RevertToSelf。

参考:
https://www.tiraniddo.dev/2021/05/dumping-stored-credentials-with.html
使用SetTrustedCredmanAccessPrivilege获取已保存的凭据的更多相关文章
- [android]-如何在向服务器发送request时附加已保存的cookie数据
[android]-如何在向服务器发送request时附加已保存的cookie数据 应用场景:在开发android基于手机端+服务器端的应用时,登陆->获取用户信息->获取授权用户相关业务 ...
- C#使用FFMPEG推流,并且获取流保存在本地,随时取媒体进行播放!
最近开发了基于C#的推流器一直不大理想,终于在不懈努力之后研究了一点成果,这边做个笔记:本文着重在于讲解下如何使用ffmpeg进行简单的推流,看似简单几行代码没有官方的文档很吃力.并获取流的源代码:如 ...
- 忘记常访问网站密码怎么办?教你如何查看浏览器已保存的密码,如何简单查看Chome浏览器保存的密码?
利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查看Chrome浏览器上保存的密码时,点击显示,会弹出一个对话框 ...
- WCF 服务器已拒绝客户端凭据
将 WCF 服务器和客户端分别部署到不同机器上,可能会触发如下异常. 未处理 System.ServiceModel.Security.SecurityNegotiationException M ...
- winPcap_4_获取已安装设备的高级信息
由 pcap_findalldevs_ex() 返回的每一个 pcap_if 结构体,都包含一个 pcap_addr 结构体,这个结构体由如下元素组成: 一个地址列表 一个掩码列表 (each of ...
- Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用
一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...
- WCF客户端调用服务器端错误:"服务器已拒绝客户端凭据"。
WCF客户端和服务器端不在同一台机器上时,客户端调用服务器端会报如下错误:"服务器已拒绝客户端凭据". 解决办法:在服务端配置文件与客户端配置文件中加入下面红色部分
- 简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码
简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码 利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查 ...
- c#获取已安装的所有NET版本
/// <summary> /// 获取已安装的所有NET版本 /// </summary> /// <returns></returns> publi ...
随机推荐
- RabbitMQ 消息中间件 的下载与安装【window10】
1.前言 弄了好久,才终于把 rabbitmq装好 ,本来是很简单的,但是,安装有个要求就是路径不能有中文字符, 虽然可以安装,但是无法运行,需要修改路径名为非中文字符后重装rabbitmq才可以运行 ...
- SpringMVC 解析(一)概览
Spring MVC是Spring提供的构建Web应用程序的框架,该框架遵循了Servlet规范,负责接收并处理Servelt容器传递的请求,并将响应写回Response.Spring MVC以Dis ...
- 基本的sql语法
1. SELECT: 用于从数据库中选取数据 SELECT name,value FROM table_name 2.SELECT DISTINCT 语句用于返回唯一不同的值(去重) 3.WHERE ...
- Zabbix漏洞利用 CVE-2016-10134
最近也是遇见了Zabbix,所以这里以CVE-2016-10134为例复现一下该漏洞 什么是Zabbix? zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. ...
- 曼孚科技:“四管齐下”筑牢AI数据隐私安全防线
谈及数据,绕不开的一个话题就是数据隐私与数据安全.随着数字化进程加快,数据安全事件频发,据Risk Based Security统计,去年国际数据泄露事件近5000起,被泄露数据近41亿条,数据造成的 ...
- 如何管理leader对你的能力预期?
在内网看到一个讨论帖,原文如下: 如何管理leader对你的能力预期? 你一个项目做得好,之后类似项目,leader认为你也就是合格水平,而且认为你只会做这种项目. SAD.. 思考 在开始之前先想下 ...
- nacos集群开箱搭建
记录/朱季谦 nacos是一款易于构建云原生应用的动态服务发现.配置管理和服务管理平台,简单而言,它可以实现类似zookeeper做注册中心的功能,也就是可以在springcloud领域替代Eurek ...
- 44.Prim算法
public static void main(String[] args) { //测试看看图是否创建ok char[] data = new char[]{'A','B','C','D','E', ...
- iptables匹配条件总结1
源地址 -s选项除了指定单个IP,还可以一次指定多个,用"逗号"隔开即可 [root@web-1 ~]# iptables -I INPUT -s 172.16.0.116,172 ...
- pwnkit漏洞分析-CVE-2021-4034
研究了一下前段时间的Polkit提权漏洞,里面有很多以前不知道的技巧.漏洞很好用,通杀CENTOS.UBUNTU各版本. 主要是分析这个POC触发原理.POC如下: /* * Proof of Con ...