搜集网上对EFS的加密与破解的认识.docx
- 文档编号:12813052
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:19
- 大小:125.90KB
搜集网上对EFS的加密与破解的认识.docx
《搜集网上对EFS的加密与破解的认识.docx》由会员分享,可在线阅读,更多相关《搜集网上对EFS的加密与破解的认识.docx(19页珍藏版)》请在冰豆网上搜索。
搜集网上对EFS的加密与破解的认识
网上对EFS的认识
解密软件:
AdvancedEFSDataRecovery
AdvancedEFSData
Recovery是一个可
以从WindowsNTFS分区
里解密用EFS加密的文件
的工具。
NTFS格式下用EFS加密的方便性就不说了,但经常有加了密后没
及时备份密钥文件的……注意:
使用EFS加密后,在重装系统前要导出
密钥,否则在新系统中便不能访问加密过的文件。
使用Windows
2000/XP的EFS加密后,如果重装系统,那么原来被加密的文件就无法
打开了!
如果你没有事先做好密钥的备份,那么数据是永远打不开的。
真
的是这样么?
扫描
运行程序前,先运行注册运
行文件,再执行程序。
首先扫
描所以系统分区,自动获取
Key,凡是出现的绿色Key,
均为可用的;
选择
扫描结束后单击“File
tree”标签,找到要解密
的文件,添加到列表中;
解密
单击“Encryptedfiles”
标签,选择要解密的文
件(红色的不能解密,因
无合适的Key),然后单
击“Decrypt”按钮;选择
合适的存放解密后文件
的位置,即开始解密。
EFS(EncryptingFileSystem,加密文件系统)加密是一种基于NTFS磁盘技术的加密技术。
EFS加密基于公钥策略。
在使用EFS加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的FEK(FileEncryptionKey,文件加密钥匙),然后将利用FEK和数据扩展标准X算法创建加密后的文件,并把它存储到硬盘上,同时删除未加密的原始文件。
接下来系统利用你的公钥加密FEK,并把加密后的FEK存储在同一个加密文件中。
而在访问被加密的文件时,系统首先利用当前用户的私钥解密FEK,然后利用FEK解密出文件。
在首次使用EFS时,如果用户还没有公钥/私钥对(统称为密钥),则会首先生成密钥,然后加密数据。
如果你登录到了域环境中,密钥的生成依赖于域控制器,否则它就依赖于本地机器。
说起来非常复杂,但是导适褂霉?
讨芯兔挥心敲绰榉沉恕?
FS加密的用户验证过程是在登录Windows时进行的,只要登录到Windows,就可以打开任何一个被授权的加密文件。
换句话说,EFS加密系统对用户是透明的。
这也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全允许的,并不会受到任何***。
而其他非授权用户试图访问你加密过的数据时,就会收到“访问拒绝”的错误提示。
我的电脑一般来说不会有别人使用,而我经常重装系统,又懒得备份密钥,所以我从来没有使用过Windows2003或者WindowsXP的EFS功能。
今天读到了一些关于EFS密钥没有备份因而数据无法恢复的求助帖子,所以突然想出一个点子想试着解开EFS的加密。
我构造的试验环境是在WindowsXPProSP2系统中的一块NTFS磁盘上建立一个test文件夹,启用EFS加密。
文件夹中是一个加密过的文本文件1.txt。
现在我先用另一个帐户去尝试读取这个文件,然后在第二个系统中(相当于重装系统没有证书的情况)再次尝试读取这个文件。
第一步,启用我系统中的GUEST帐户。
此时从资源管理器中是不能访问test文件夹的。
打开cmd,在任务管理器中终止explorer.exe进程,打开P***ec尝试用system登录。
失败。
提示进程无法创建。
看来全县不够。
回到管理员帐户,新建一个管理员帐户test并以之登录。
在test帐户中运行资源管理器可以访问test文件夹,但是不能打开1.txt加密文件。
此时再用上法以system登录。
此时打开文件为乱码!
运行IceSword.exe,在文件中定位test文件夹。
右键选择1.txt,复制到桌面,文件名任意,后缀不变。
双击打开文件,正常读出!
第一步破解EFS成功!
第二步,登陆WindowsServer2003SP1系统(管理员身份)。
使用上述方法再次复制1.txt到桌面,打开后出现乱码,和system读取时情况一致。
第二种尝试失败。
总结:
本方法意义:
目前仅适用于察看系统中其他人使用EFS加密过的文件(请读者务必不要做违法及危害他***利的事!
),在系统重装或私钥丢失情况下的文件恢复有待进一步地探索。
本方法使用的两个软件:
P***ecIceSword。
前者是国外非常流行的远程控制软件,命令行界面。
后者则是PJF制作的国内著名隐藏进程察看软件冰刃。
本方法适用条件:
1.需要足够运行上述两个软件的权限(如果可以结合netuser命令的话应该不难,这只是一个小提示,读者还请自律^_^)。
2.系统内还有该EFS加密文件对应的密钥(这一条件是基于我的初步推测)
本方法成功的原因浅析:
1.利用了system帐户特有的内核级权限,这可能是能够读取管理员或其他正常用户密钥的条件。
2.IceSword特有的读取加密文件的技术。
关于这一点,是我最百思不得其解的地方,真希望能听到PJF亲自阐述一下这是如何实现的.
三、如何找回EFS加密文件?
当加密文件的系统账户出问题了,或者重装了系统之后,EFS加密文件就无法访问了,许多朋友都遇到过这样的问题,网上到处都是类似的求助帖子,为此,你可以这样来破解:
1、以前备份有PFX私钥
假如你以前备份有PFX私钥文件,现在想打开加密文件绝对不成问题!
找到备份的PFX私钥文件,鼠标右击该文件,在弹出的菜单中选择“安装PFX”,系统将弹出“证书导入向导”,键入当初导出证书时输入的密码,然后选择“根据证书类型,自动选择证书存储区”即可,完成后就可以访问EFS加密文件了。
2、以前备份有CER证书
假如你以前未备份PFX私钥文件、但是备份过CER证书,如果又重装了系统,就没有办法打开加密文件了,假如还没有重装系统,可以这样破解:
点击菜单“开始”/运行,键入certmgr.msc打开证书管理器,点击“证书→当前用户”下的“个人”;然后右击鼠标,在弹出的菜单中选择“所有任务→导入”,在“证书导入向导”窗口中按提示操作,点“浏览”按钮,选择“个人”(如图6),把证书导入到“个人”存储区。
然后在左侧点击“个人”下的证书,右边窗口就会看见一个证书,右击该证书,选择菜单“所有任务→用相同密钥续订证书”(如图7),就可以访问EFS加密文件了。
图6
图7
结束语
有人说,EFS加密虽然牢不可破、简单好用,但是加密文件却经常打不开,这是由于你没有备份私钥文件造成的。
如果你没有备份私钥,重装系统之后,EFS加密文件就会打不开。
假如发生了这样的事情,对于Win2000系统,可以使用恢复代理来解密,即用Administrator这个用户登录系统,然后就能打开加密文件了;如果系统是WinXP,目前还没有办法打开加密文件,因为EFS加密现在还无人能破解,既找不到破解软件,也没有破解方法。
因此最后还是要提醒你,加密之后一定要备份私钥!
只要你备份了PFX私钥文件,EFS加密就不会出问题。
如果某个用户把自己的登录帐户删除,那么其他用户将无法访问其EFS加密文件。
更可恶的是,一旦公司里的某个用户心怀怨气,恶意加密了本属于别的用户的重要文件,将会导致严重问题。
一般情况下,这些EFS加密文件已经被判了死刑,但是实际上只要满足以下条件的话,我们还是可以在末日来临之前打开逃生的天窗:
(1)必须知道该被删帐户的密码。
(2)该被删帐户的配置文件必须存在。
如果使用“本地用户和组”管理单元删除帐户,则配置文件保留的机会很大,如果使用“用户帐户”控制面板删除帐户,则有一半机会保留配置文件。
如果配置文件不幸被删,则只能祈祷可以借助EasyRecovery之类的数据恢复工具进行恢复。
可能有些朋友会觉得这两个条件比较苛刻,此处卖个关子先……
EFS加密原理
大家知道,EFS加密实际上综合了对称加密和不对称加密:
(1)随机生成一个文件加密密钥(叫做FEK),用来加密和解密文件。
(2)这个FEK会被当前帐户的公钥进行加密,加密后的FEK副本保存在文件$EFS属性的DDF字段里。
(3)要想解密文件,首先必须用当前用户的私钥去解密FEK,然后用FEK去解密文件。
看到这里,似乎EFS的脉络已经很清晰,其实不然,这样还不足于确保EFS的安全性。
系统还会对EFS添加两层保护措施:
(1)Windows会用64字节的主密钥(MasterKey)对私钥进行加密,加密后的私钥保存在以下文件夹:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\SID
提示Windows系统里的各种私有密钥,都用相应的主密钥进行加密。
WindowsVista的BitLocker加密,也用其主密钥对FVEK(全卷加密密钥)进行加密。
(2)为了保护主密钥,系统会对主密钥本身进行加密(使用的密钥由帐户密码派生而来),加密后的主密钥保存在以下文件夹:
%UserProfile%\ApplicationData\Microsoft\Protect\SID
整个EFS加密的密钥架构如图1所示。
图1
提示EFS密钥的结构部分,参考自《WindowsInternals4th》的第12章。
回到“任务描述”部分所述的两个条件,现在我们应该明白原因了:
(1)必须知道该被删帐户的密码:
没有帐户密码,就无法解密主密钥。
因为其加密密钥是由帐户密码派生而来的。
提示难怪WindowsXP和2000不同,管理员重设帐户密码,也不能解密EFS文件。
(2)该被删帐户的配置文件必须存在:
加密后的私钥和主密钥(还包括证书和公钥),都保存在配置文件里,所以配置文件万万不可丢失,否则就会彻底“鬼子不能进村”。
重装系统后,原来的配置文件肯定被删,这时候当然不可能恢复EFS文件。
可能有用户会想,只需新建一个同名的用户帐户,然后把原来配置文件复制给新帐户,不就可以解密EFS文件了?
原因在于帐户的SID,因为新建用户的SID不可能和老帐户一样,所以常规方法是不可能奏效的。
我们必须另辟蹊径,让系统再造一个完全一样的SID!
恢复步骤
为了方便描述,这里假设被删帐户的用户名为Admin,Windows安装在C盘。
1.再造SID
注意本方法取自“声明”部分提到的那篇文章。
首先确认被删帐户的SID,这里可以进入以下文件夹:
C:
\DocumentsandSettings\Admin\ApplicationData\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
提示可以在以下网站下载psexec:
[url]
(2)定位到HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account注册表项,双击打开右侧的F键值。
(3)这里要说明一下,Windows是以十六进制、而且以反转形式保存下一个帐户的RID。
什么意思呢?
也就是说,如果是1004的RID,对应十六进制就是03EC,但是我们必须把它反转过来变成EC03,再扩展为4个字节,就是EC030000。
所以,我们应该把F键值的0048偏移量处,把其中四个字节改为“EC030000”,如图2所示。
图2
(4)重要:
别忘了重启计算机!
(5)重启以后,新建一个同名帐户Admin,它的SID应该和以前是完全一样。
如果不相信的话,可以借助GetSID或者PsGetSID等工具测试一下。
2.“破解”EFS
接下来的方法就非常简单了,用新建的Admin帐户身份登录系统,随便加密一个文件,然后注销,用管理员帐户登录系统,把原来保留的配置文件复制到C:
\DocumentsandSettings\Admin文件夹下。
再用Admin帐户登录系统,现在可以解密原来的EFS文件了。
疑难解答
1.如果已经重装系统,那怎么办?
“声明”部分提到的那篇文章里提到,如果还记得原来帐户的密码,并且配置文件没有被删除的话,还有希望。
这时候可以借助sysinternals的NEWSID工具把系统的计算机SID重设为原来的值,再用前面描述的方法构造所需的RID,这样就可以获得所需的帐户SID。
剩余步骤完全一样。
[url]
2.有用户曾经遇到这样的问题:
登录系统时收到提示说密码过期,需要重设,重设密码登录后发现打开EFS文件。
KB890951提到这个问题。
其解释是因为在修改密码时,系统还没有加载配置文件(有点语焉不详),原文如下:
Thisproblemoccursbecausetheuserprofileforthecurrentuserisnotloadedcorrectlyafteryouchangethepassword.
配置文件和EFS有何相干?
看完本文,大家应该知道,EFS的私钥和主密钥都是保存在配置文件里的。
由于配置文件没有加载,所以主密钥的加密版本没有得到更新(没有跟上帐户密码的变化),导致主密钥无法正确解密,从而无法解密私钥和FEK。
这就是问题的真正原因。
该KB提供了一个内部补丁,可以解决这个问题。
KB890951的链接如下:
[url]
3.有关公钥的问题
为了容易理解,笔者故意忽略了公钥。
公钥保存也保存在帐户的配置文件里:
%UserProfile%\ApplicationData\Microsoft\SystemCertificates\My\Certificates
在EFS恢复的操作中,必须确保公钥也要复制到新帐户的配置文件里。
尽管看起来公钥与EFS解密无关(它负责加密)。
原来,加密文件$EFS属性的DDF字段里除了有帐户SID和加密的FEK副本外,还有公钥的指纹信息(PublicKeyThumbprint)和私钥GUID信息(私钥的某种散列值)。
系统在扫描加密文件$EFS属性中的DDF字段时,根据用户配置文件里的公钥中所包含的公钥指纹和私钥GUID信息,当然还有帐户的SID,来判断该帐户是否具有对应的DDF字段,从而判断该用户是否属于合法的EFS文件拥有者。
所以公钥也很重要。
当然公钥是可以“伪造”的(可以伪造出所需的公钥指纹和私钥GUID),以欺骗EFS系统,具体方法可以参考国外的那篇原稿,此处不再赘述。
加强EFS的安全
由于EFS把所有的相关密钥都保存在Windows分区,所以这可能给EFS带来一定的安全隐患。
目前有一些第三方工具号称可以破解EFS,这些工具首先攻击SAM配置单元文件,尝试破解帐户密码,从而破解帐户密码→主密钥的加密密钥→主密钥→EFS私钥→FEK的“密钥链”。
为了防止攻击者窥视我们的EFS文件,可以借助以下三种方法:
1.导出删除私钥
可以用证书向导导出EFS加密证书和私钥,并且在“证书导出向导”对话框里选择删除私钥,如图3所示。
图3
删除私钥以后,攻击者就没有办法访问EFS加密文件了,而我们需要访问时,只需导入先前备份的证书和私钥即可。
2.SystemKey提供额外的保护
SystemKey可以对SAM配置单元文件和EFS私钥提供额外保护。
WindowsXP的SystemKey默认保存在本地,我们可以运行syskey命令,强制系统将SystemKey保存在软盘里,或者用启动密码(startuppassword)来生成SystemKey。
由于EFS“密钥链”的根密钥(SystemKey)没有保存在本地计算机中,所以攻击者将更加难以破解EFS加密。
提示BitLocker加密的recoverykey,类似于syskey的startuppassword,都是借助启动时所输入的一串密码来生成所需的密钥。
3.BitLocker提供更彻底的保护
本方法仅适用于WindowsVista(Enterprise和UltimateEdition)。
最彻底的保护方法,首推WindowsVista新引入的BitLocker加密,这时候Windows分区的所有内容全部被加密(包括SAM配置单元、EFS密钥)。
BitLocker(TPM1.2)加密可以看成是Windows启动保护器。
在系统启动时,TPM芯片会负责分析各个重要的启动组件,以判断自己是否位于原来的计算机环境。
如果是的话,就依次释放BitLocker加密所需的密钥链,我们才能顺利地访问Windows,才能访问EFS文件。
如果攻击者企图把硬盘挂接到别的计算机上,系统就会拒绝释放密钥,整个WindowsVista分区处于加密状态。
如果攻击者窃取了计算机,并且窃取了BitLocker所需所有条件(TPM芯片自不必说,假设也获得密钥U盘)。
这时候系统能够顺利引导,并且成功释放BitLocker密钥链。
但是攻击者还必须想办法知道帐户的密码,否则无法登录系统,Windows分区依然处于加密状态。
EFS额外保护的原理如图4所示。
图4
4.题外话:
为什么释放BitLocker密钥以后,Windows分区依然处于加密状态?
所以尽管BitLocker密钥已经释放,但是Windows分区并没有被立即全部解密。
否则每次启动,都要解密整个Windows分区,得花多少时间(笔者的Vista分区完全解密,共花3小时)!
原来BitLocker加密是以一个FVEFilterDriver来实现加密和解密,该FilterDriver处于文件系统驱动的下层。
登录系统以后,用户需要访问文件时,文件系统会自动请求FVEFilterDriver进行解密,猜想应该是一次解密一个Block,每个Block可能是512字节(和EFS一样),不敢确定。
对于用户来说,这个过程是完全透明的,同时对性能的影响很小,几乎可以忽略不计。
EFS加密的情况有点类似。
写在最后
这里非常敬佩国外微软技术爱好者的执着,事实上该作者还有一篇经典的文章(描述SAM配置单元文件的二进制结构),链接如下,非常值得推荐。
很难想象,要编写这样的文章,得花费多少的人力和时间,要做多少的实验才能在SAM数据库逐个字节地找出其对应的含义!
本人总结:
只要将原用户配置文件下的文件拷到新用户下,如用户原new:
C:
\DocumentsandSettings\new\LocalSettings\ApplicationData\Microsoft拷到:
新用户user下面即可,C:
\DocumentsandSettings\user\LocalSettings\ApplicationData\Microsoft。
本文出自“黄宝的博客”博客,请务必保留此出处
这样子基本上你就没有办法了,但是我找到一专门论述的文章,你看看吧。
希望对你有帮助
任务描述
如果某个用户把自己的登录帐户删除,那么其他用户将无法访问其EFS加密文件。
更可恶的是,一旦公司里的某个用户心怀怨气,恶意加密了本属于别的用户的重要文件,将会导致严重问题。
一般情况下,这些EFS加密文件已经被判了死刑,但是实际上只要满足以下条件的话,我们还是可以在末日来临之前打开逃生的天窗:
(1)必须知道该被删帐户的密码。
(2)该被删帐户的配置文件必须存在。
如果使用“本地用户和组”管理单元删除帐户,则配置文件保留的机会很大,如果使用“用户帐户”控制面板删除帐户,则有一半机会保留配置文件。
如果配置文件不幸被删,则只能祈祷可以借助EasyRecovery之类的数据恢复工具进行恢复。
可能有些朋友会觉得这两个条件比较苛刻,此处卖个关子先……
EFS加密原理
大家知道,EFS加密实际上综合了对称加密和不对称加密:
(1)随机生成一个文件加密密钥(叫做FEK),用来加密和解密文件。
(2)这个FEK会被当前帐户的公钥进行加密,加密后的FEK副本保存在文件$EFS属性的DDF字段里。
(3)要想解密文件,首先必须用当前用户的私钥去解密FEK,然后用FEK去解密文件。
看到这里,似乎EFS的脉络已经很清晰,其实不然,这样还不足于确保EFS的安全性。
系统还会对EFS添加两层保护措施:
(1)Windows会用64字节的主密钥(MasterKey)对私钥进行加密,加密后的私钥保存在以下文件夹:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\SID
提示Windows系统里的各种私有密钥,都用相应的主密钥进行加密。
WindowsVista的BitLocker加密,也用其主密钥对FVEK(全卷加密密钥)进行加密。
(2)为了保护主密钥,系统会对主密钥本身进行加密(使用的密钥由帐户密码派生而来),加密后的主密钥保存在以下文件夹:
%UserProfile%\ApplicationData\Microsoft\Protect\SID
整个EFS加密的密钥架构如图1所示。
图1
提示EFS密钥的结构部分,参考自《WindowsInternals4th》的第12章。
回到“任务描述”部分所述的两个条件,现在我们应该明白原因了:
(1)必须知道该被删帐户的密码:
没有帐户密码,就无法解密主密钥。
因为其加密密钥是由帐户密码派生而来的。
提示难怪WindowsXP和2000不同,管理员重设帐户密码,也不能解密EFS文件。
(2)该被删帐户的配置文件必须存在:
加密后的私钥和主密钥(还包括证书和公钥),都保存在配置文件里,所以配置文件万万不可丢失,否则就会彻底“鬼子不能进村”。
重装系统后,原来的配置文件肯定被删,这时候当然不可能恢复EFS文件。
可能有用户会想,只需新建一个同名的用户帐户,然后把原来配置文件复制给新帐户,不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜集 网上 EFS 加密 破解 认识
![提示](https://static.bdocx.com/images/bang_tan.gif)