使用过NT内核Windows操作系统的朋友都知道NT内核对系统密码的管理机制比Win32内核的Windows操作系统要强得多,这部分归功于NT系统的门卫——SAM。
对于Windows的启动,很多用户并没什么特别的想法,大多数的人都这样看待这个问题:按下电源,稍等片刻,“傻瓜化”的Windows登录界面就出现在我们眼前。但是看了此文,你也许就会有点不同的想法了。
微软做了两个不同的系统骨架,一个叫Win32,我们用的Win9x/Me系统就附在它上面;另一个叫NT(New Technology),也就是WinNT/2000/XP/2003的骨架。不过很不幸,微软有点“偏心”,Win32的骨架做得明显有点过小,所以它成了瘦子,而NT则是典型的美国壮汉。更不幸的是,微软给Win32配备的PWL门卫是个花瓶,不仅连个家门都看不住,而且嘴巴也守不住秘密;而NT呢,又捞了个好处,SAM门卫尽心尽责,嘴巴也难撬开。NT内核Windows操作系统的密码安全性较Win32内核Windows操作系统的密码安全性高出很多跟SAM不无关系,在这篇文章里,我们就一起来认识一下NT内核Windows操作系统的看门神——SAM。
忠实的SAM门卫
SAM最初是跟随第一代NT来到世界的,它在微软总部的特工代号叫做“安全账户管理器”(Security Accounts Manager),经历了几代系统的改进,这个门卫越来越强壮了。SAM平时居住在WINNT\System32\Config下。当然,它不仅仅是一个SAM文件这么简单,它还带有一名随从:Security(如图1所示)。在NT内核Windows系统启动的时候,SAM就开始忙碌了,首先,它在入口处要求你出示身份证——没有?那么就不能进入Windows,并且没得商量。即使你通过了“门检”,事情也还远远没有结束,SAM随时盯着你呢,只要哪里又有人进来了,它就赶紧去问人家要“证件”……SAM记录的数据很多,包括所有组、账户信息、密码HASH、账户SID等,应该说是一个考虑得比较周全的门卫。
screen.width-300)this.width=screen.width-300' border='0' alt='Click to Open in New Window'>
前面说过了,SAM不仅仅是一个文件那么简单,它不但有文件数据,在注册表里面还有一个数据库,位于HKEY_LOCAL_MACHINE\SAM下,这是一个比较复杂的结构(如图2所示)。SAM在系统启动后就处于锁定状态,我们没法擅自更改这个文件内容。
screen.width-300)this.width=screen.width-300' border='0' alt='Click to Open in New Window'>
SAM的主要结构和用户分组
从上述注册表里的分支我们可以看到以下结果:
1.在HKEY_LOCAL_MACHINE\SAM\SAM\
Domains下就是SAM的内容,其下有两个分支“Account”和“Builtin”。
2.Domains\Account\Users下存放的就是各个账号的信息,当然,这里是加密过的二进制数据,每个账号下面有两个子项,F和V。项目V中保存的是账户的基本资料,用户名、所属组、描述、密码、注释、是否可以更改密码、账户启用、密码设置时间等。项目F中保存的是一些登录记录,比如上次登录时间、错误登录次数等。SAM靠这些齐全的备忘录来保存与用户账号相关的各种信息。
3.Domains\Builtin存放着不同用户分组信息,SAM就是根据这个来划分NT中固有的6个不同的工作组的,它们分别是:管理员(Administrators)、备份操作员(Backup Operators)、客人(Guests)、高权限用户(Power Users)、修复员(Replicator)和普通用户(Users)。
幕后指挥官
在Windows系统中,虽然SAM如此尽力,但是它却如《Terminator 3(终结者3)》里MODEL 101的设置一样,不听从你的指挥。它只听本地安全认证(Local Security Authority)程序——LSASS.EXE的差遣,就连进门时的审查也是LSASS的指示。如果你把LSASS杀了,你就等着被赶出门吧——当然,对于普通用户来说,如果你试图用普通的进程管理工具或者Windows系统的进程管理杀掉“LSASS.EXE”进程的话,只会得到“该进程为关键系统进程,任务管理器无法结束进程。”的提示,本地安全认证(Local Security Authority)在Windows系统中主要负责以下任务:1.重新找回本地组的SID和用户权限;2.创建用户的访问令牌;3.管理本地安装的服务所使用的服务账号;4. 存储和映射用户权限;5.管理审核的策略和设置;6.管理信任关系。
[1] [2]
“萨姆也是人”
俗话说,“人无完人”。尽管SAM(萨姆)是这么尽心尽责,可是在这里,我们还是必须用那句话——“萨姆也是人”来形容它。由于一些设计上的失误,在WinNT/2000里,如果你忘记了密码,那么你要做的不是呼天喊地,只需要在非NT环境里把SAM驱逐出硬盘就可以了。但是在XP以后的Windows操作系统里,这个情况得以改善,如果你把萨姆大叔踢了,NT也躲着死活不肯出来了。
当然,这也并不是说XP以后的Windows的操作系统密码都无法破解,要知道:经典的LC4和NtPassWord都专门拿SAM开刀(如图3所示)。
screen.width-300)this.width=screen.width-300' border='0' alt='Click to Open in New Window'>
(出处:http://www.sheup.com)
[1] [2]
(出处:http://www.sheup.com)
[1] [2] [3]