首先需要提醒用户注意:本文并非为了证明微软的EFS存在 “漏洞”,也不是专为马大哈们准备的包治百病的“后悔药”。事实上如果没有导出EFS证书和私钥,那么一旦删除用户、或者重装系统,EFS加密文件就不属于你了。
  提示 本文适用于Windows XP Professional单机环境,并假设没有恢复代理(DRF)和共享访问帐户(多个DDF)。
  任务描述
  如果某个用户把自己的登录帐户删除,那么其他用户将无法访问其EFS加密文件。更可恶的是,一旦公司里的某个用户心怀怨气,恶意加密了本属于别的用户的重要文件,将会导致严重问题。一般情况下,这些EFS加密文件已经被判了死刑,但是实际上只要满足以下条件的话,我们还是可以在末日来临之前打开逃生的天窗:
  (1) 必须知道该被删帐户的密码。
  (2) 该被删帐户的配置文件必须存在。如果使用“本地用户和组”管理单元删除帐户,则配置文件保留的机会很大,如果使用“用户帐户”控制面板删除帐户,则有一半机会保留配置文件。如果配置文件不幸被删,则只能祈祷可以借助Easy Recovery之类的数据恢复工具进行恢复。
  可能有些朋友会觉得这两个条件比较苛刻,此处卖个关子先……
  EFS加密原理
  大家知道,EFS加密实际上综合了对称加密和不对称加密:
  (1) 随机生成一个文件加密密钥(叫做FEK),用来加密和解密文件。
  (2) 这个FEK会被当前帐户的公钥进行加密,加密后的FEK副本保存在文件$EFS属性的DDF字段里。
  (3) 要想解密文件,首先必须用当前用户的私钥去解密FEK,然后用FEK去解密文件。
  看到这里,似乎EFS的脉络已经很清晰,其实不然,这样还不足于确保EFS的安全性。系统还会对EFS添加两层保护措施:
  (1) Windows会用64字节的主密钥(Master Key)对私钥进行加密,加密后的私钥保存在以下文件夹:
  %UserProfile%\Application Data\Microsoft\Crypto\RSA\SID
  提示 Windows系统里的各种私有密钥,都用相应的主密钥进行加密。Windows Vista的BitLocker加密,也用其主密钥对FVEK(全卷加密密钥)进行加密。
  (2) 为了保护主密钥,系统会对主密钥本身进行加密(使用的密钥由帐户密码派生而来),加密后的主密钥保存在以下文件夹:
  %UserProfile%\Application Data\Microsoft\Protect\SID

  整个EFS加密的密钥架构如图1所示。

提示 EFS密钥的结构部分,参考自《Windows Internals 4th》的第12章。
  回到“任务描述”部分所述的两个条件,现在我们应该明白原因了:
  (1) 必须知道该被删帐户的密码:没有帐户密码,就无法解密主密钥。因为其加密密钥是由帐户密码派生而来的。
  提示 难怪Windows XP和2000不同,管理员重设帐户密码,也不能解密EFS文件。
  (2) 该被删帐户的配置文件必须存在:加密后的私钥和主密钥(还包括证书和公钥),都保存在配置文件里,所以配置文件万万不可丢失,否则就会彻底“鬼子不能进村”。重装系统后,原来的配置文件肯定被删,这时候当然不可能恢复EFS文件。
  可能有用户会想,只需新建一个同名的用户帐户,然后把原来配置文件复制给新帐户,不就可以解密EFS文件了?原因在于帐户的SID,因为新建用户的SID不可能和老帐户一样,所以常规方法是不可能奏效的。我们必须另辟蹊径,让系统再造一个完全一样的SID!
  恢复步骤
  为了方便描述,这里假设被删帐户的用户名为Admin,Windows安装在C盘。
  1.再造SID
  注意 本方法取自“声明”部分提到的那篇文章。
首先确认被删帐户的SID,这里可以进入以下文件夹:
  C:\Documents and Settings\Admin\Application Data\Microsoft\Crypto\RSA
  在其下应该有一个以该被删帐户的SID为名的文件夹,例如是S-1-5-21-4662660629-873921405-788003330-1004(RID为1004)
  现在我们要设法让新建帐户同样具有1004的RID,这样就能达到目的。
  在Windows中,下一个新建帐户所分配的RID是由HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项的F键值所确定的。F键值是二进制类型的数据,在偏移量0048处的四个字节,定义下一个帐户的RID。那么也就是说,只需要修改0048处的四个字节,就能达到目的(让新建帐户获得1004的RID)!
  确认好以后,别忘记把Admin帐户的配置文件转移到别的地方!
  (1) 默认情况下,只有system帐户才有权限访问HKEY_LOCAL_MACHINE\SAM,这里在CMD命令提示符窗口,运行以下命令,以system帐户身份打开注册表编辑器:
  psexec -i -d -s %windir%\regedit.exe
  (2) 定位到HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项,双击打开右侧的F键值。
  (3) 这里要说明一下,Windows是以十六进制、而且以反转形式保存下一个帐户的RID。什么意思呢?也就是说,如果是1004的RID,对应十六进制就是03EC,但是我们必须把它反转过来变成EC03,再扩展为4个字节,就是EC 03 00 00。
  所以,我们应该把F键值的0048偏移量处,把其中四个字节改为“EC 03 00 00”,如图2所示。

图2
  (4) 重要:别忘了重启计算机!
  (5) 重启以后,新建一个同名帐户Admin,它的SID应该和以前是完全一样。如果不相信的话,可以借助GetSID或者PsGetSID等工具测试一下。
  2.“破解”EFS
接下来的方法就非常简单了,用新建的Admin帐户身份登录系统,随便加密一个文件,然后注销,用管理员帐户登录系统,把原来保留的配置文件复制到C:\DocumentsandSettings\Admin文件夹下。
  再用Admin帐户登录系统,现在可以解密原来的EFS文件了。
  疑难解答
  1.如果已经重装系统,那怎么办?
  “声明”部分提到的那篇文章里提到,如果还记得原来帐户的密码,并且配置文件没有被删除的话,还有希望。这时候可以借助sysinternals的 NEWSID工具把系统的计算机SID重设为原来的值,再用前面描述的方法构造所需的RID,这样就可以获得所需的帐户SID。剩余步骤完全一样。
  2.有用户曾经遇到这样的问题:登录系统时收到提示说密码过期,需要重设,重设密码登录后发现打开EFS文件。

3.有关公钥的问题
  为了容易理解,笔者故意忽略了公钥。公钥保存也保存在帐户的配置文件里:
  %UserProfile\ApplicationData\Microsoft\SystemCertificates\My\Certificates
  在EFS恢复的操作中,必须确保公钥也要复制到新帐户的配置文件里。尽管看起来公钥与EFS解密无关(它负责加密)。
  原来,加密文件$EFS属性的DDF字段里除了有帐户SID和加密的FEK副本外,还有公钥的指纹信息(Public Key Thumbprint)和私钥GUID信息(私钥的某种散列值)。
  系统在扫描加密文件$EFS属性中的DDF字段时,根据用户配置文件里的公钥中所包含的公钥指纹和私钥GUID信息,当然还有帐户的SID,来判断该帐户是否具有对应的DDF字段,从而判断该用户是否属于合法的EFS文件拥有者。
  所以公钥也很重要。
  当然公钥是可以“伪造”的(可以伪造出所需的公钥指纹和私钥GUID),以欺骗EFS系统,具体方法可以参考国外的那篇原稿,此处不再赘述。
以上文章内容是某位高人所为,但经本人亲测EFS加密确实如此。

关于EFS加密原理及破解浅谈相关推荐

  1. 【RSA原理1】浅谈--什么是非对称加密?(加密通信的原理)

    为什么会写这个专题呢?主要还是在学习https如何保护信息安全的时候涉及到了这个基础,为此我也是恶补了一下,当然为了避免忘记,这一专栏我将对这一块内容进行陆续讲解更新.如果觉得有用,欢迎大家一件三连! ...

  2. 用matlab2012b计算自控原理的稳态误差,浅谈用终值定理计算自控原理中的稳态误差...

    ·115· 哈尔滨职业技术学院学报 2013年第2 期 Journal of Harbin Vocational & Technical College 在自动控制原理中,控制系统的稳态误差是 ...

  3. 【RSA原理5】浅谈--密钥如何生成及其可靠性说明

    前面讲了一些数论的基础知识,理解了什么是欧拉函数.欧拉定理以及如何求模反元素,那么接下来的问题就是如何生成密钥. 目录 1.公钥私钥生成过程 2.可靠性分析 3.总结 1.公钥私钥生成过程 第一步:随 ...

  4. 原理c++_浅谈C/S和B/S架构的工作原理及优缺点

    C/S架构 一.C/S架构及其背景 C/S架构是一种比较早的软件架构,主要应用于局域网内.在这之前经历了集中计算模式,随着计算机网络的进步与发展,尤其是可视化工具的应用,出现过两层C/S和三层C/S架 ...

  5. CAN 总线破解 汽车协议破解 - 浅谈

    从事汽车协议数据分析也有几年了,从刚入门时的一穷二白,到现在拥有自己的一套破解流程和自己开发的一系列破解工具和软件,也算是有点经验和积累了.今天写个博客哔哔下,才疏学浅,平铺直叙,兄弟们多担待! 一. ...

  6. 计算机原理的教学论文,计算机原理课程教学浅谈

    文/李继华 摘 要:计算机原理主要是以计算机本身的运行原理为研究对象的一门课程,学生在学习计算机原理这门课程时,主要是了解计算机系统,对计算机系统的组成形成一个清晰的认识,提高计算机系统的分析能力.然 ...

  7. 网线简介及交换机原理和模式浅谈

    网线 网络双绞线是两根铜线绞在一起,作用是用来抵御外界电磁波干扰.双绞线的有效距离最长是100米,多余100米信号会衰减,不能和强电放在一起,因为强电会干扰弱电信号,有"屏蔽"和& ...

  8. 编译原理代码生成器java_浅谈JVM编译原理-.java文件转变为.class文件的过程

    为什么需要编译? 我们平常写代码,有规范的命名方式,都能够看得懂,但是我们写的代码计算机是看不懂的,所以需要编译,也就是一个转换的过程,如下: 1.这个是咱们平时写的代码,就比较好理解,对人友好 2. ...

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

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

  10. 手机游戏修改群出品----修改之浅谈

    http://club.joyes.com/Announce/Announce.asp?BoardID=5008&ID=5084397&E=0 手机游戏修改群出品----修改之浅谈 已 ...

最新文章

  1. 机器学习及其在信息检索中的应用
  2. 【旧文新读】解释“闭包”需要几行代码?
  3. Matlab-重构和重新排列数组
  4. [云炬创业基础笔记]第九章企业的法律形态测试3
  5. stm8s跳出中断程序c语言,stm8s103 利用中断判断长按短按,长按可以实现进入低功耗 短按1-2s跳出低功耗进入工作,实际情况是短按立马跳出低功耗,请各位大侠帮忙看看。附程序...
  6. 微服务SpringCloud中的负载均衡,你都会么?
  7. 划分子网后的三级结构
  8. 欠20万信用卡卡奴自救方法
  9. Hosts 文件作用及如何修改
  10. CSDN Markdown帮助文档
  11. 基于C#和DGAL包实现栅格影像的读取和显示
  12. SpringMVC相关
  13. 利用ArcGIS Python批量拼接遥感影像(arcpy batch processing)
  14. java网吧系统_基于Java的智能网吧管理系统.doc
  15. 苹果画画软件_想在iPad 上画画,推荐用这些软件
  16. 计算机网络教程第五版|微课版 - 相关微课视频
  17. 抖音数据统计_抖音账号数据分析
  18. asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室
  19. 致远OA漏洞学习——帆软组件 ReportServer 目录遍历漏洞
  20. 使用grop解析日志

热门文章

  1. 如何辨别物理机和云主机?
  2. 德玛西亚皇子背景故事
  3. html计算斐波那契数列通项公式,斐波那契数列指标公式
  4. Tensorflow函数测试之tf.contrib.layers.embed_sequence
  5. selenium+python自动化84-chrome手机wap模式(登录淘宝页面)
  6. 跨时区存储跨时区展示时间 | js 获取当前UTC时间
  7. mysql 生日提醒
  8. mac怎么设置桌面提醒
  9. 25岁社招进阿里,从电商到有赞新零售,他仅1年就打开了马云一直想做的新领域!...
  10. 《数学之美》阅读笔记1