Windows 7 密码重设盘的内部原理浅析

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:39 点击:

可能有兄弟觉得密码重设盘是雕虫小技,很简单,甚至是鸡肋,因为既然不怕麻烦特意创建一个密码重设盘,又怎么会那么粗心忘记密码呢?

其实它背后的原理还是很有意思的,这里试做简单分析。

在Windows XP时代,我们知道当用户创建密码重设盘时,Windows系统会自动创建一对公钥和私钥,以及一张自签署的证书。接下来,将会用所得的公钥对用户帐户的密码进行加密,然后保存在注册表项HKEY_LOCAL_MACHINESECURITYRecovery< SID>中,其中的< SID>就是指该用户的SID。而私钥则从计算机中删除,并且保存在软盘里。

到了Windows 7时代,我们知道私钥会以userkey.psw文件的形式保存在软盘或者USB闪存里。

但是如果我们尝试查看HKEY_LOCAL_MACHINESECURITYRecovery注册表项,发现其下是空的,并没有什么用户SID。

那么用公钥加密的用户密码,到底存放在哪里了呢?很显然,如果光有私钥,而没有经过公钥加密的帐户密码副本,无法获取用户帐户的密码。

经过研究发现(盆盆是借用Process Monitor发现的,比较懒,不想写具体过程了,过程也简单),原来在创建密码重设盘的过程中,Windows安全子系统进程Lsass.exe会自动创建一个Recovery.dat注册表配置单元文件,保存在C:WindowsSystem32MicrosoftProtectRecovery文件夹中。而Lsass.exe进程会自动将其加载到注册表HKLMC80ED86A-0D28-40dc-B379-BB594E14EA1B中。C80ED86A-0D28-40dc-B379-BB594E14EA1B意义不明,Google也没有结果,哪位老大知道,还请不吝指教。

由于密码重设盘创建完成后,Lsass.exe进程会自动卸载该注册表配置单元,所以我们无法查看HKLMC80ED86A-0D28-40dc-B379-BB594E14EA1B下的内容。但是比较容易想到的是,可以借助以下方法进行查看:

用管理员权限打开命令提示符窗口,并且运行以下命令,以Local System身份启动注册表编辑器(Recovery.dat需要用Local System权限才能加载):

Psexec -s -i -d regedit

选中HKLM注册表根键,然后单击文件、加载配置单元,并定位到C:WindowsSystem32MicrosoftProtectRecoveryRecovery.dat文件。

在接下来的对话框里任意指定一个项名称,例如可以是Test,然后展开其下的子项,可以看到当前登录帐户的SID,其右侧的默认键值,即保存了用公钥所加密的帐户密码副本

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    •  windows server 2003断开远程之后自动注销用户
    • windows篇-第一章 windows server 2008安装和简单配置
    • windows篇-第二章 安装和配置Web服务器
    • windows篇-第三章 安装和配置DNS服务器
    •  windows的磁盘操作之八——格式化分区的思考
    • dos命令原来也能这样用?允许查找未知子目录指定文件
    • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
    • windows 2003集群中安装sharepoint 2007
    •  Windows Installer无法打开此修补程序包

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
    Copyright © 2008-2013 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1