windows系统中有一个名为SeTrustedCredmanAccessPrivilege的权限,使拥有该特权的进程可作为受信任的调用者访问凭据管理器。

  凭据管理器可以从控制面板 -> 凭据管理器进入。凭据管理器允许用户存储凭据,比如域账户、Web、普通账户凭据等。管理器使用了DPAPI(Data Protect)进行保护,所以只有经过认证的账户可访问关联的存储数据。程序使用CredReadCredEnumerate可以访问当前用户存储的凭据,但是读取域账户凭据时,即设置读取类型为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使用,因此需要执行时具有管理员权限。

  作者给出了实现步骤:

  1. 使用PROCESS_QUERY_LIMITED_INFORMATION访问方式打开winlogon进程(也可以选择其他符合条件的进程),然后以TOKEN_DUPLICATE打开其令牌;
  2. 将打开的令牌复制为一个模拟令牌,之后启用模拟令牌中的SetTrustedCredmanAccessPrivilege权限,模拟令牌类型需要为TokenPrimary,经过测试TokenImpersonation将失败(无法启用权限);
  3. 打开备份凭据目标用户的令牌,该用户需要已经过身份验证;
  4. 调用CredBackupCredentials,传入参数指定备份后数据的写入路径;
  5. 从凭据备份文件中读取加密后数据,调用API CryptUnprotectData解密出被备份的凭据;
  6. 结束令牌模拟,RevertToSelf。

  CODE

参考:

https://www.tiraniddo.dev/2021/05/dumping-stored-credentials-with.html

https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/access-credential-manager-as-a-trusted-caller

使用SetTrustedCredmanAccessPrivilege获取已保存的凭据的更多相关文章

  1. [android]-如何在向服务器发送request时附加已保存的cookie数据

    [android]-如何在向服务器发送request时附加已保存的cookie数据 应用场景:在开发android基于手机端+服务器端的应用时,登陆->获取用户信息->获取授权用户相关业务 ...

  2. C#使用FFMPEG推流,并且获取流保存在本地,随时取媒体进行播放!

    最近开发了基于C#的推流器一直不大理想,终于在不懈努力之后研究了一点成果,这边做个笔记:本文着重在于讲解下如何使用ffmpeg进行简单的推流,看似简单几行代码没有官方的文档很吃力.并获取流的源代码:如 ...

  3. 忘记常访问网站密码怎么办?教你如何查看浏览器已保存的密码,如何简单查看Chome浏览器保存的密码?

    利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查看Chrome浏览器上保存的密码时,点击显示,会弹出一个对话框 ...

  4. WCF 服务器已拒绝客户端凭据

    将 WCF 服务器和客户端分别部署到不同机器上,可能会触发如下异常. 未处理 System.ServiceModel.Security.SecurityNegotiationException   M ...

  5. winPcap_4_获取已安装设备的高级信息

    由 pcap_findalldevs_ex() 返回的每一个 pcap_if 结构体,都包含一个 pcap_addr 结构体,这个结构体由如下元素组成: 一个地址列表 一个掩码列表 (each of ...

  6. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用

    一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...

  7. WCF客户端调用服务器端错误:"服务器已拒绝客户端凭据"。

    WCF客户端和服务器端不在同一台机器上时,客户端调用服务器端会报如下错误:"服务器已拒绝客户端凭据". 解决办法:在服务端配置文件与客户端配置文件中加入下面红色部分

  8. 简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码

    简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码   利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查 ...

  9. c#获取已安装的所有NET版本

    /// <summary> /// 获取已安装的所有NET版本 /// </summary> /// <returns></returns> publi ...

随机推荐

  1. Python常用功能函数系列总结(三)

    本节目录 常用函数一:词频统计 常用函数二:word2vec 常用函数三:doc2vec 常用函数四:LDA主题分析 常用函数一:词频统计 # -*- coding: utf-8 -*- " ...

  2. Hive的基本概念和常用命令

    原文链接: https://www.toutiao.com/i6766571623727235595/?group_id=6766571623727235595 一.概念: 1.结构化和非结构化数据 ...

  3. 微信小程序输入框上移问题解决

    微信小程序的输入框在上面还好,如果不是,在聚焦的时候页面就会上移,上方的页面信息会看不到,影响用户操作 在这里可以手动设置并获取输入框的高度来解决 这种方式虽然有的机子有点卡,但是已经算是比较完美的解 ...

  4. 彻彻底底地理解TCP三次握手和四次挥手的全部过程

    三次握手 我们先提出一些问题,但是我们暂且不回答这些问题,下面我会尽我所能详尽地讲解TCP的三次握手过程,然后看完你可以在评论区留下你对问题的答案,我们可以一起探讨. 为什么要握手 为什么是三次而不是 ...

  5. IE8中li添加float属性,中英数字混合BUG

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Web开发底层是Servlet

    SpringMVC:是基于spring的一个框架,实际上就是spring的一个模块,专门是做web开发. 可以理解成servlet是一个升级 web开发底层是servlet,框架是在servlet基础 ...

  7. Qt中添加静态库.lb,.a和动态库.dll,.so,头文件和.cpp文件

    添加步骤 1.-Qt Creator中,"项目"------"添加库"2.把静态库和动态库文件放到项目文件夹中3.在.pro文件中会添加如下代码: - 添加动态 ...

  8. 微前端框架 之 single-spa 从入门到精通

    前序 目的 会使用single-spa开发项目,然后打包部署上线 刨析single-spa的源码原理 手写一个自己的single-spa框架 过程 编写示例项目 打包部署 框架源码解读 手写框架 关于 ...

  9. python类和函数

    #/usr/bin/python #coding=utf-8 class Car(): def __init__(self,name,year): self.name = name self.year ...

  10. python网络爬虫-静态网页抓取(四)

    静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...