破解Windows之NTFS格式EFS加密

来源:互联网 发布:旅法师营地 矩阵潜袭 编辑:程序博客网 时间:2024/04/30 01:06

破解Windows之NTFS格式EFS加密

转自 http://www.360doc.com/content/09/0902/13/231824_5502843.shtml

恢复步骤

为了方便描述,这里假设被删帐户的用户名为Admin,Windows安装在C盘。


1.再造SID

本方法取自http://www.beginningtoseethelight.org/efsrecovery/index.php。

首先确认被删帐户的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
可以在以下网站下载psexec:http://www.sysinternals.com/Utilities/PsExec.html

(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”。
(4) 重要:别忘了重启计算机!
(5) 重启以后,新建一个同名帐户Admin,它的SID应该和以前是完全一样。如果不相信的话,可以借助GetSID或者PsGetSID等工具测试一下。

2.“破解”EFS
接下来的方法就非常简单了,用新建的Admin帐户身份登录系统,随便加密一个文件,然后注销,用管理员帐户登录系统,把原来保留的配置文件复制到C:/Documents and Settings/Admin文件夹下。
再用Admin帐户登录系统,现在可以解密原来的EFS文件了。

 

加强EFS的安全

由于EFS把所有的相关密钥都保存在Windows分区,所以这可能给EFS带来一定的安全隐患。目前有一些第三方工具号称可以破解EFS,这些工具首先攻击SAM配置单元文件,尝试破解帐户密码,从而破解帐户密码→主密钥的加密密钥→主密钥→EFS私钥→FEK的“密钥链”。

为了防止攻击者窥视我们的EFS文件,可以借助以下三种方法:

 

1.导出删除私钥
可以用证书向导导出EFS加密证书和私钥,并且在“证书导出向导”对话框里选择删除私钥。删除私钥以后,攻击者就没有办法访问EFS加密文件了,而我们需要访问时,只需导入先前备份的证书和私钥即可。

2.syskey(System Key)提供额外的保护
System Key可以对SAM配置单元文件和EFS私钥提供额外保护。Windows XP的System Key默认保存在本地,我们可以运行syskey命令,强制系统将System Key保存在软盘里,或者用启动密码(startup password)来生成System Key。
由于EFS“密钥链”的根密钥(System Key)没有保存在本地计算机中, 所以攻击者将更加难以破解EFS加密。
提示 BitLocker加密的recovery key,类似于syskey的startup password,都是借助启动时所输入的一串密码来生成所需的密钥。

3.BitLocker提供更彻底的保护
本方法仅适用于Windows Vista(Enterprise和Ultimate Edition)。
最彻底的保护方法,首推Windows Vista新引入的BitLocker加密,这时候Windows分区的所有内容全部被加密(包括SAM配置单元、EFS密钥)。
BitLocker(TPM1.2)加密可以看成是Windows启动保护器。在系统启动时,TPM芯片会负责分析各个重要的启动组件,以判断自己是否位于原来的计算机环境。如果是的话,就依次释放BitLocker加密所需的密钥链,我们才能顺利地访问Windows,才能访问EFS文件。
如果攻击者企图把硬盘挂接到别的计算机上,系统就会拒绝释放密钥,整个Windows Vista分区处于加密状态。

如果攻击者窃取了计算机,并且窃取了BitLocker所需所有条件(TPM芯片自不必说,假设也获得密钥U盘)。这时候系统能够顺利引导,并且成功释放BitLocker密钥链。但是攻击者还必须想办法知道帐户的密码,否则无法登录系统,Windows分区依然处于加密状态。

4.题外话:为什么释放BitLocker密钥以后,Windows分区依然处于加密状态?

所以尽管BitLocker密钥已经释放,但是Windows分区并没有被立即全部解密。否则每次启动,都要解密整个Windows分区,得花多少时间(笔者的Vista分区完全解密,共花3小时)!

原来BitLocker加密是以一个FVE Filter Driver来实现加密和解密,该Filter Driver处于文件系统驱动的下层。登录系统以后,用户需要访问文件时,文件系统会自动请求FVE Filter Driver进行解密,猜想应该是一次解密一个Block,每个Block可能是512字节(和EFS一样),不敢确定。对于用户来说,这个过程是完全透明的,同时对性能的影响很小,几乎可以忽略不计。EFS加密的情况有点类似。

写在最后

这里非常敬佩国外微软技术爱好者的执着,事实上该作者还有一篇经典的文章(描述SAM配置单元文件的二进制结构),链接如下,非常值得推荐。
很难想象,要编写这样的文章,得花费多少的人力和时间,要做多少的实验才能在SAM数据库逐个字节地找出其对应的含义!
http://www.beginningtoseethelight.org/ntsecurity/index.php


=======================================================================
另外一种可以成功查看现有系统中加密文件的办法(未丢失和重建账号)

第一步,启用我系统中的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亲自阐述一下这是如何实现的

=======================================================================
第3种方法:用专业软件来查看现有系统中加密文件(未丢失和重建账号)

用Advanced EFS Data Recovery,原来只能恢复Win2000的EFS,据说现在可以查看WinXP和Win2003的了!

原创粉丝点击