0x00 前言

0x01 测试环境

windows7专业版SP1:

在虚拟机中运行,创建了快照,当前账户名和密码为jizong/123456

0x02 EFS加解密原理:

EFS加密实际上综合了对称加密和不对称加密,具体流程如下:
(1) 随机生成一个文件加密密钥(叫做FEK),用来加密和解密文件。
(2) 这个FEK会被当前帐户的公钥进行加密,加密后的FEK副本保存在文件$EFS属性的DDF字段里。
(3) 要想解密文件,首先必须用当前用户的私钥去解密FEK,然后用FEK去解密文件。
除了上面的步骤,操作系统还会对EFS添加两层保护措施:

(1) Windows会用64字节的主密钥(Master Key)对私钥进行加密,这个私钥并非系统安装之后就存在,而是第一次进行加密时生成,下图可以看到,刚安装的新系统中不存在Crypto文件夹。加密后的私钥保存在以下文件夹:
  %UserProfile%\Application Data\Microsoft\Crypto\RSA\SID
  

Windows系统里的各种私有密钥,都用相应的主密钥进行加密。Windows Vista的BitLocker加密,也用其主密钥对FVEK(全卷加密密钥)进行加密。

(2) 为了保护主密钥,系统会对主密钥本身进行加密(使用的密钥由帐户密码派生而来),加密后的主密钥保存在以下文件夹:
  %UserProfile%\Application Data\Microsoft\Protect\SID

0x03 各个密钥存放位置

1.加密后的主密钥:

2.使用主密钥加密后的私钥:
(这里选择一个文件,对其点击“加密内容以便保护数据”)

进行上述操作之后可以看到,%UserProfile%\Application Data\Microsoft\下生成了Crypto文件夹:

加密后的私钥就存在Crypto文件夹中:

在上面的加密操作中,操作系统会提示你导出证书,这里也测试一下导出证书后删除私钥的功能是不是删除Crypto文件夹的内容:

可以看到私钥确实因为导出证书时勾选了“如果导出成功则删除私钥”而被删掉了。

0x04 有主密钥和私钥条件下使用AdvancedEFSDataRecovery解密EFS加密的文件

上面的操作中,我把主密钥和私钥以及加密文件拷贝了出来,然后另起一个账户,尝试使AdvancedEFSDataRecovery解密。
首先切换到另一个账户test:

可以看到在test账户下,被加密的文件是绿色的,无法访问:


我们使用当前用户安装AdvancedEFSDataRecovery:

1.使用证书解密:

由于之前导出过证书,先测试一下证书解密:

上面的密码是之前导出证书时设置的密码。
填入证书路径和密码之后按回车,开始扫描:

使用证书成功解密:

2.使用私钥解密:

上面使用证书解密是最简单的情况,但是实际上很多人不会导出证书,就纯手贱要去点一下这个加密。
现在假设我们手上有主密钥,有私钥,在这种情况下测试使用AdvancedEFSDataRecovery进行恢复:
之前我们将主密钥和私钥复制了一份放在D盘:

然后回到AdvancedEFSDataRecovery,选择“我没有证书,所以程序应当搜索硬盘以寻找加密密钥”:

这里把“按扇区扫描”勾上:

然后得到一个结果,要求输入用户名和密码,这里的用户名和密码必须是加密文件的那个windows账号的用户名和密码,我这里就是jizong/123456。然后提示一个私钥被发现且被成功解密,现在你可以点击next按钮去扫描加密文件:

扫描的结果,然后点击next:

也能解密成功。

0x05 重装系统及私钥丢失情况下的EFS解密(看运气)

本节研究重装系统后,或者私钥被误删而加密文件的windows用户又被删掉情况下的EFS解密。
这种情况就比较极端了,能不能恢复完全看运气。这些情况下,满足两种前情况中任意一种下罗列的所有条件,则可以恢复:
情况一 以前导出过证书:
1.证书能够使用数据恢复工具恢复出来(比如easyrecovery或者winhex、DiskGenius等)
2.需要记得导出证书时候设置的密码

情况二 私钥能恢复:
1.私钥能够使用数据恢复工具恢复出来(比如easyrecovery或者winhex、DiskGenius等)
2.记得加密文件时使用的windows账户的账号密码

上述两种情况,满足任意一种都能解密,如果不满足,那就很悬了。

所以,当出现重装系统或账户被删、私钥丢失等极端情况,应不再使用电脑,避免数据被覆盖,直接进入PE,使用数据恢复工具看能不能把私钥或者证书恢复过来。

下面测试私钥丢失情况下通过DiskGenius恢复私钥,进而解密文件:
上一节的实践证明,只需要恢复私钥这一个文件,配合账号密码就可以解密,因此,我们将D盘备份的私钥删掉,并清空回收站,然后使用DiskGenius恢复:

-----------end------------

对windows自带EFS加解密的研究相关推荐

  1. 遥望星空WINDOWS证书生成导出加解密工具

    这个工具花了我2天时间,期间参考了网上关于证书生成导出的文章,在这里感谢下他们! 工具采用c# vs2008开发,需要.net framwork 3.5SP1框架. 该工具功能比较简单,我就不做详细使 ...

  2. openresty 与 java RSA加解密

    上一篇搞定了openresty与java之间的aes加解密.这一篇就来说说openresty与java之间RSA的加解密.在测试的过程中.发现了与aes同样的问题.就是openresty支持的填充模式 ...

  3. Windows系统EFS加密解密原理分析/无密码解密思路

    EFS加密是windows系统自带的加密方式,一个系统用户对文件加密后,只有以该用户的身份登陆才能读取该文件.EFS加密的文件和文件夹名字颜色是绿色,或者在该文件或文件夹的高级属性是加密属性.这样做在 ...

  4. 黑客大神用什么杀毒? Windows 自带的就够, 只是加了亿点微小的强化

    标题 黑客大神用什么杀毒? Windows 自带的就够, 只是加了亿点微小的强化 参考链接: 黑客大神用什么杀毒? Windows 自带的就够, 只是加了亿点微小的强化 这年头 Windows 电脑还 ...

  5. 如何使用RSA 对数据加解密和签名验签?一篇文章带你搞定

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 三分割据纡筹策,万古云霄一羽毛. ...

  6. 适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片

    适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片.有需求的朋友可以了解下: 1.品牌:MICROCHIP/ATMEL  国别:美国:代表型号:ATS ...

  7. Windows自带光驱将多个镜像文件加载到同一个光驱下

    Windows自带光驱将多个镜像文件加载到同一个光驱下@TOC 问题描述: 装matlab或者其他专业软件时,会遇到将一个dvd1弹出,插入dvd2的文件. *解决方法: 使用2345好压或别的CD驱 ...

  8. 一篇文章带你看懂以及实现加解密技术中的信息防篡改、一码一检、过期失效、多种实现方式

    一篇文章带你看懂以及实现加解密技术中的信息防篡改.一码一检.过期失效.多实现方式 导语 一.简介 二.代码功能介绍以及源码 2.1.AbstractRsa 类 2.2 RsaUtils 类 2.3 R ...

  9. 银行卡密码键盘 SM4 ECB模式+ANSI X9.8 格式标准(带主账号信息)PIN 加解密示例

    文章目录 1.软加解密示例 2.知识点 ①ANSI X9.8 格式标准 ②主密钥,工作密钥加解密 基本概念: 加密种类: 3.密码键盘操作 4.工具 1.软加解密示例 ---------------- ...

最新文章

  1. trigger() --工作中问题nav样式
  2. 10061 mysql,Navicat无法连接到MySQL server的10061错误
  3. 【 MATLAB 】信号处理工具箱之波形产生函数 pulstran
  4. 反弹c语言作业,C语言实现反弹球小游戏
  5. python读取csv某一列存入数组_python 读取.csv文件数据到数组(矩阵)的实例讲解
  6. 聊聊 Service 命名与设计
  7. struts2 的国际化
  8. java jcsh执行linux命令,java jcsh执行linux命令
  9. zabbix3.4.4 监控系统安装部署
  10. 线性系统和非线性系统
  11. HDP直播个性化设置教程,简单几步提升电视盒子/投影仪观影体验
  12. ILSVRC2016
  13. [初学笔记] pause 语句 的运用,.m文件中按任意键继续程序或者延迟秒数继续程序
  14. 柠檬班高级性能测试13期这个课老师讲的很细腻需要了解见正文
  15. 通往财富自由之路详细笔记(11)
  16. php的md5(),php MD5加密详解
  17. PCB板元器件视觉检测系统解决方案
  18. java 利用继承和多态设计三角形,圆矩形
  19. Mac--键盘输入的技巧
  20. 步进电机中的力矩(g.cm),转矩(n.m),扭矩(kg.m)有什么区别?

热门文章

  1. VICTOR维克多(胜利)羽毛球中低端羽拍导购
  2. 智慧扫码点餐系统源码
  3. 安装WSL + zsh Pure (ZSH prompt) 美化【Windows11】
  4. Linux常用命令——exit命令
  5. SQL 两表关联删除其中一张表数据
  6. 山东软件首版次高端软件申报范围与申报条件
  7. 【算法】数字读法转汉字
  8. APM飞控添加新的外设驱动
  9. [Spark共同好友查找]
  10. 生物医药企业数字化转型框架体系