另类方法破解微软EFS加密文件的尝试
程序员文章站
2022-05-11 09:45:52
本文记录的是我偶然的一次破解EFS文件加密技术的经历。这仅是我偶然发现的一个方法,而不是一种破解技术,因为内中的原理我仅能推测,而使用的软件也都是别人设计的。我顶多算是比别... 08-10-08...
本文记录的是我偶然的一次破解efs文件加密技术的经历。这仅是我偶然发现的一个方法,而不是一种破解技术,因为内中的原理我仅能推测,而使用的软件也都是别人设计的。我顶多算是比别人更早地找到了组合利用某些既有工具的方法而已。————题记
efs(encrypting file system,加密文件系统)加密是一种基于ntfs磁盘技术的加密技术。efs加密基于公钥策略。在使用efs加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的fek(file encryption key,文件加密钥匙),然后将利用fek和数据扩展标准x算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。接下来系统利用你的公钥加密fek,并把加密后的fek存储在同一个加密文件中。而在访问被加密的文件时,系统首先利用当前用户的私钥解密fek,然后利用fek解密出文件。在首次使用efs时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。如果你登录到了域环境中,密钥的生成依赖于域控制器,否则它就依赖于本地机器。说起来非常复杂,但是导适褂霉讨芯兔挥心敲绰榉沉恕fs加密的用户验证过程是在登录windows时进行的,只要登录到windows,就可以打开任何一个被授权的加密文件。换句话说,efs加密系统对用户是透明的。这也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全允许的,并不会受到任何限制。而其他非授权用户试图访问你加密过的数据时,就会收到“访问拒绝”的错误提示。
我的电脑一般来说不会有别人使用,而我经常重装系统,又懒得备份密钥,所以我从来没有使用过windows 2003或者windows xp的efs功能。今天读到了一些关于efs密钥没有备份因而数据无法恢复的求助帖子,所以突然想出一个点子想试着解开efs的加密。
我构造的试验环境是在windows xp pro sp2系统中的一块ntfs磁盘上建立一个test文件夹,启用efs加密。文件夹中是一个加密过的文本文件1.txt。现在我先用另一个帐户去尝试读取这个文件,然后在第二个系统中(相当于重装系统没有证书的情况)再次尝试读取这个文件。
第一步,启用我系统中的guest帐户。
此时从资源管理器中是不能访问test文件夹的。
打开cmd,在任务管理器中终止explorer.exe进程,打开psexec尝试用system登录。
失败。提示进程无法创建。看来全县不够。
回到管理员帐户,新建一个管理员帐户test并以之登录。
在test帐户中运行资源管理器可以访问test文件夹,但是不能打开1.txt加密文件。
此时再用上法以system登录。此时打开文件为乱码!
运行icesword.exe,在 文件 中定位test文件夹。右键选择1.txt,复制到桌面,文件名任意,后缀不变。
双击打开文件,正常读出!第一步破解efs成功!
第二步,登陆windows server 2003 sp1系统(管理员身份)。
使用上述方法再次复制1.txt到桌面,打开后出现乱码,和system读取时情况一致。第二种尝试失败。
总结:
本方法意义:
目前仅适用于察看系统中其他人使用efs加密过的文件(请读者务必不要做违法及危害他*利的事!),在系统重装或私钥丢失情况下的文件恢复有待进一步地探索。
本方法使用的两个软件:
psexec icesword。前者是国外非常流行的远程控制软件,命令行界面。后者则是pjf制作的国内著名隐藏进程察看软件冰刃。
本方法适用条件:
1. 需要足够运行上述两个软件的权限(如果可以结合net user命令的话应该不难,这只是一个小提示,读者还请自律^_^)。
2. 系统内还有该efs加密文件对应的密钥(这一条件是基于我的初步推测)
本方法成功的原因浅析:
1. 利用了system帐户特有的内核级权限,这可能是能够读取管理员或其他正常用户密钥的条件。
2. icesword特有的读取加密文件的技术。关于这一点,是我最百思不得其解的地方,真希望能听到pjf亲自阐述一下这是如何实现的0.0。
efs(encrypting file system,加密文件系统)加密是一种基于ntfs磁盘技术的加密技术。efs加密基于公钥策略。在使用efs加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的fek(file encryption key,文件加密钥匙),然后将利用fek和数据扩展标准x算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。接下来系统利用你的公钥加密fek,并把加密后的fek存储在同一个加密文件中。而在访问被加密的文件时,系统首先利用当前用户的私钥解密fek,然后利用fek解密出文件。在首次使用efs时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。如果你登录到了域环境中,密钥的生成依赖于域控制器,否则它就依赖于本地机器。说起来非常复杂,但是导适褂霉讨芯兔挥心敲绰榉沉恕fs加密的用户验证过程是在登录windows时进行的,只要登录到windows,就可以打开任何一个被授权的加密文件。换句话说,efs加密系统对用户是透明的。这也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全允许的,并不会受到任何限制。而其他非授权用户试图访问你加密过的数据时,就会收到“访问拒绝”的错误提示。
我的电脑一般来说不会有别人使用,而我经常重装系统,又懒得备份密钥,所以我从来没有使用过windows 2003或者windows xp的efs功能。今天读到了一些关于efs密钥没有备份因而数据无法恢复的求助帖子,所以突然想出一个点子想试着解开efs的加密。
我构造的试验环境是在windows xp pro sp2系统中的一块ntfs磁盘上建立一个test文件夹,启用efs加密。文件夹中是一个加密过的文本文件1.txt。现在我先用另一个帐户去尝试读取这个文件,然后在第二个系统中(相当于重装系统没有证书的情况)再次尝试读取这个文件。
第一步,启用我系统中的guest帐户。
此时从资源管理器中是不能访问test文件夹的。
打开cmd,在任务管理器中终止explorer.exe进程,打开psexec尝试用system登录。
失败。提示进程无法创建。看来全县不够。
回到管理员帐户,新建一个管理员帐户test并以之登录。
在test帐户中运行资源管理器可以访问test文件夹,但是不能打开1.txt加密文件。
此时再用上法以system登录。此时打开文件为乱码!
运行icesword.exe,在 文件 中定位test文件夹。右键选择1.txt,复制到桌面,文件名任意,后缀不变。
双击打开文件,正常读出!第一步破解efs成功!
第二步,登陆windows server 2003 sp1系统(管理员身份)。
使用上述方法再次复制1.txt到桌面,打开后出现乱码,和system读取时情况一致。第二种尝试失败。
总结:
本方法意义:
目前仅适用于察看系统中其他人使用efs加密过的文件(请读者务必不要做违法及危害他*利的事!),在系统重装或私钥丢失情况下的文件恢复有待进一步地探索。
本方法使用的两个软件:
psexec icesword。前者是国外非常流行的远程控制软件,命令行界面。后者则是pjf制作的国内著名隐藏进程察看软件冰刃。
本方法适用条件:
1. 需要足够运行上述两个软件的权限(如果可以结合net user命令的话应该不难,这只是一个小提示,读者还请自律^_^)。
2. 系统内还有该efs加密文件对应的密钥(这一条件是基于我的初步推测)
本方法成功的原因浅析:
1. 利用了system帐户特有的内核级权限,这可能是能够读取管理员或其他正常用户密钥的条件。
2. icesword特有的读取加密文件的技术。关于这一点,是我最百思不得其解的地方,真希望能听到pjf亲自阐述一下这是如何实现的0.0。