Rootop 服务器运维与web架构

启用syskey加密,为你的SAM设置双层安全保障

| 暂无评论

        一、SAM简介

  Windows NT及Win2000中对用户账户的安全管理使用了安全账号管理器(Security Account Manager)的机制,安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识都是完全不同的。

安全账号管理器的具体表现就是%SystemRoot%\system32\config\sam文件。sam文件是Windows NT的用户账户数据库,所有NT用户的登录名及口令等相关信息都会保存在这个文件中。

  如果我们用编辑器打开这些NT的sam文件,除了乱码什么也看不到。因为NT系统中将这些资料全部进行了加密处理,一般的编辑器是无法直接读取这些信息的。注册表中的

  HKEY_LOCAL_MACHINESAMSAM HKEY_LOCAL_MACHINESECURITYSAM

  保存的就是SAM文件的内容,在正常设置下仅对system是可读写的。

  二、SAM中口令信息的分类

  在SAM文件中保存了两个不同的口令信息:LAN Manager(LM)口令散列算法和更加强大的加密NT版。LM就是NT口令文件的弱点。我们来看看LM口令算法是如何加密口令的,考虑这样一个口令:Ba01cK28tr,这样的口令已经可以称得上是一个安全的口令了,虽然没有!#等特殊字符,但是已经包含大写字母、小写字母和数字,并且具有无规律性。可以认为是符合安全要求的一个口令。

  1.LM对口令的处理方法是:如果口令不足14位,就用0把口令补足14位,并把所有的字母转成大写字母。之后将处理后的口令分成两组数字,每组是7位。刚才我们所提到的口令经处理后就变成BA01CK2和8TR0000部分。然后由这两个7位的数字分别生成8位的DES KEY,每一个8位的DES KEY都使用一个魔法数字(将0x4B47532140232425用全是1的一个KEY进行加密获得的)再进行一次加密,将两组加密完后的字符串连在一起,这就是最终的口令散列。这个字符串看起来是个整体,但是像L0phtcrack这样的破解软件,他能将口令字符串的两部分独立地破解,因此,破解上面所提到口令(10位),由于口令已经被分解为两部分破解,而后面的那部分口令由于只有3位,破解难度不大,实际的难度就在前面的7位口令上了。因此就NT而言,一个10位的口令与一个7位的口令相比并没有太高的安全意义。由此还可以了解:1234567*这样的口令可能还不如SHic6这样的口令安全。(关于如何设置安全口令的问题不是本文的范围,有兴趣的可以参考相关文章。)

  2.正式的口令(加密NT版)是将用户的口令转换成unicode编码,然后使用MD4算法将口令加密,相比之下用这种方法就要安全得多了。

  NT之所以保留两种不同版本的口令是由于历史原因造成的,在一个纯NT的环境中应该将LAN Manager口令关闭。因为LAN Manager口令使用了较弱的DES密钥和算法,比较容易破解。相比较之下,使用较强加密算法的NT正式口令要安全些。

  三、syskey工作原理及使用

  因为上面介绍的两种口令加密方法从总体上来说强度还是不足,微软在Windows NT4的SP3和以后的补丁中,提供了一个syskey.exe的小工具来进一步加强NT的口令。这个软件是可以选择使用的,管理员只要运行一下这个程序并回答一些设置问题就可以添加这项增强功能。(Win2000已经作为缺省安装设置了)

  1.激活syskey

  当syskey被激活,口令信息在存入注册表之前还进行了一次加密处理。然而,在机器启动后,一个旧的格式的信息还是会保存在内存中,因为这个旧格式的口令信息是进行网络验证所需要的。

  由于没有官方的正式技术说明如何关闭syskey,所以syskey一旦启用就无法关闭,除非启用运行syskey之前的注册表备份恢复注册表。

  2.关闭syskey

  1)将syskey激活后,在注册表HKLMSystemCurrentControlSetControlsa下被添加了新的键值‘secureboot’,保存了syskey的设置,但是把主键删除或者把值设成0并没能将syskey关闭,看来还有其他的地方……

  2)hklmsamdomainsaccountf是一个二进制的结构,通常保存着计算机的sid和其他的描述信息。当syskey被激活后,其中的内容就变大了(大小大约是原来的两倍),增加的部分估计是加密的key加一些标记和其他的数值,这些标记和数值中一定有一部分包括secureboot相同的内容。所以,在nt4(已安装sp6补丁包)将这些标记位设为0可能就可以关闭syskey了。在改变这些设置时系统给出了一个错误提示说明sam和系统设置相互冲突,但是在重新启动计算机后,系统已经不再使用syskey了。

  3)在win2000中还有另一个地方存储着关于syskey的信息hklmsecuritypolicypolsecret encryptionkey,这也是一个二进制的结构,也是使用同样的存储方式,将这里相应部分同样设为0,syskey就已经从win2000中移除了。

  如果这三部分修改出现错误(不一致),系统会在下次启动自动恢复为默认值。

  4)然后就是口令信息部分。旧的口令信息长度是16字节,但使用syskey后长度全部被增加到20字节。其中头四个字节看起来像是某种计数器,可能是历史使用记录计数器。

         四、实际的配置方法及效果(有图有真相):

这是我们登陆系统的时候提示需要密码授权

在开始 运行 中键入 syskey启用二次加密

设置启动密码,双重密码保护,否则仅仅是再次加密sam,

重启机器时,提示键入“启动密码”,syskey加密生效

系统登陆密码

 

          五、怎么破解系统密码和syskey加密 

  在Windows xp\server03系统安装目录中有一个“repair”文件夹(具体位置是:c:\windows\repair,其中c:为你的安装系统所在的盘符),其中保存的就是系统安装完毕后首次启动时创建的注册表备份文件。(Server2008及其08R2、windows7,不再有这个文件夹)
        如果我们用这个注册表备份文件来替换了当前系统中的注册表信息文件,系统就会被恢复到刚安装完系统时的状态。具体操作方法如下:

  首先使用Windows 2000/XP/03安装光盘引导系统,进入系统故障恢复控制台,然后将“X:WINDOWS\system32\config”下的文件替换为“repair”文件下的同名文件(为了保证系统的安全,在进行替换前最好将“X:\WINDOWS\system32\config”文件夹下的注册表文件备份。如果在Windows 2000中,则相应的文件夹为X:\WINNT。)。或者我们可以用PE盘进行覆盖。
  完成以上的替换操作后,重新启动计算机就可以清除syskey密码了,此时以Administrator用户登陆系统,注意此时必须输入系统安装时设置的Administrator用户对应的密码。就这样突破了syskey的限制了!
        其次,我们破解系统登陆密码的时候,可以用网上流行的GHOST安装光盘,一般都带有windows系统账号破解工具。
  由于“repair”文件下的注册表文件信息是系统安装完毕时生成的,用这个注册表文件覆盖当前系统的注册表信息后,必然导致大部分的软件和硬件信息丢失,因此进入系统后,需要重新安装软件和硬件方面的程序,重新建立用户以及用户组别。

        当然,这种破解方式,跟重装系统没啥区别了。

        如果想让一台办公电脑安全性提高,在杀毒软件之外的防护下,可以设置系统登陆密码,启用syskey,再加上EFS加密。可谓是不错的安全措施了。(EFS加密之前写过,可自行搜索下本网站文章)

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/721.html

作者:Venus

服务器运维与性能优化

发表回复