XP系统EFS加密破解的一线期看
假设某个用户把本身的登录帐户删除,那么其他用户将无法拜候其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所示。
图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帐户身份翻开注册表编纂器:
pexec -i -d -s %windir%\regedit。
exe
提醒 能够在以下网站下载psexec:
(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:\Documents and Settings\Admin文件夹下。
再用Admin帐户登录系统,如今能够解密本来的EFS文件了。
疑难解答
1.假设已经重拆系统,那怎么办?
“声明”部门提到的那篇文章里提到,假设还记得本来帐户的密码,而且设置装备摆设文件没有被删除的话,还有期看。那时候能够借助sysinternals的NEWSID东西把系统的计算机SID重设为本来的值,再用前面描述的办法构造所需的RID,如许就能够获得所需的帐户SID。
剩余步调完全一样。
2.有用户曾经碰着如许的问题:登录系统时收到提醒说密码过时,需要重设,重设密码登录后发现翻开EFS文件。
KB890951提到那个问题。
其阐明是因为在修改密码时,系统还没有加载设置装备摆设文件(有点语焉不详),原文如下:
This problem occurs because the user profile for the current user is not loaded correctly after you change the password。
设置装备摆设文件和EFS有何相关?看完本文,各人应该晓得,EFS的私钥和主密钥都是保留在设置装备摆设文件里的。因为设置装备摆设文件没有加载,所以主密钥的加密版本没有得到更新(没有跟上帐户密码的改变),招致主密钥无法准确解密,从而无法解密私钥和FEK。那就是问题的实正原因。
该KB供给了一个内部补钉,能够处理那个问题。KB890951的链接如下:
3.有关公钥的问题
为了随便理解,笔者有意漠视了公钥。公钥保留也保留在帐户的设置装备摆设文件里:
%UserProfile%\Application Data\Microsoft\SystemCertificates\My\Certificates
在EFS恢复的操做中,必需确保公钥也要复造到新帐户的设置装备摆设文件里。
虽然看起来公钥与EFS解密无关(它负责加密)。
本来,加密文件$EFS属性的DDF字段里除了有帐户SID和加密的FEK副本外,还有公钥的指纹信息(Public Key Thumbprint)和私钥GUID信息(私钥的某种散列值)。
系统在扫描加密文件$EFS属性中的DDF字段时,根据用户设置装备摆设文件里的公钥中所包罗的公钥指纹和私钥GUID信息,当然还有帐户的SID,来揣度该帐户能否具有对应的DDF字段,从而揣度该用户能否属于合法的EFS文件拥有者。
所以公钥也很重要。
当然公钥是能够“伪造”的(能够伪造出所需的公钥指纹和私钥GUID),以哄骗EFS系统,详细办法能够参考国外的那篇原稿,此处不再赘述。
加强EFS的平安
因为EFS把所有的相关密钥都保留在Windows分区,所以那可能给EFS带来必然的平安隐患。
目前有一些第三方东西号称能够破解EFS,那些东西起首进攻SAM设置装备摆设单位文件,测验考试破解帐户密码,从而破解帐户密码→主密钥的加密密钥→主密钥→EFS私钥→FEK的“密钥链”。