认识注册表

作者:我就是个世界 发表于:2008-03-01
以前一直不理解注册表,看到它就头疼,总是逃避,现在来让我好好认识并了解一下注册表。

打开注册表命令:[color=#FF0000]regedit[/color]
大家可以在[color=#0000FF]开始[/color]-[color=#0000FF]运行[/color],对话框中输入此命令,即可启动注册表编辑工具,如果对注册表不熟的不要乱搞哦~~会出大问题的


[b][color=#008000]注册表是Windows核心部分,相当于系统设置的总数据库,几乎所有与系统设置相关的选项都能在其中找到对应的键值。[/color][/b]


[color=#FF0000][b]HKEY_CURRENT_USER[/b][/color] 包含当前登录的用户的配置信息的根目录。该用户的文件夹、屏幕颜色和“控制面板”设置都存储在这里。这些信息与用户的配置文件相关联。此项有时缩写为“HKCU”。

[color=#FF0000][b]HKEY_USERS[/b][/color] 包含计算机上的所有以活动方式加载的用户配置文件。HKEY_CURRENT_USER 是 HKEY_USERS 的子项。HKEY_USERS 有时缩写为“HKU”。

[b][color=#FF0000]HKEY_LOCAL_MACHINE [/color][/b]包含特定于计算机的配置信息(用于任何用户)。此项有时缩写为“HKLM”。[separator]

[color=#FF0000][b]HKEY_CLASSES_ROOT[/b][/color] 是 HKEY_LOCAL_MACHINE\Software 的子项。存储在这里的信息可确保使用 Windows 资源管理器打开文件时能打开正确的程序。此项有时缩写为“HKCR”。从 Windows 2000 开始,这些信息同时存储在 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 项下。HKEY_LOCAL_MACHINE\Software\Classes 项包含可应用于本地计算机上的所有用户的默认设置。HKEY_CURRENT_USER\Software\Classes 项包含覆盖默认设置并且只应用于交互用户的设置。HKEY_CLASSES_ROOT 项提供合并上述两个来源的信息的注册表视图。HKEY_CLASSES_ROOT 还为针对以前的 Windows 版本设计的程序提供这种合并视图。要更改交互用户的设置,必须在 HKEY_CURRENT_USER\Software\Classes 下进行更改,而不是在 HKEY_CLASSES_ROOT 下更改。要更改默认设置,必须在 HKEY_LOCAL_MACHINE\Software\Classes 下进行更改。如果将项写到 HKEY_CLASSES_ROOT 下的一个项,系统会将信息存储在 HKEY_LOCAL_MACHINE\Software\Classes 下。如果将值写到 HKEY_CLASSES_ROOT 下的一个项,并且 HKEY_CURRENT_USER\Software\Classes 下已经存在该项,系统会将信息存储在前面的注册表项下,而不是存储在 HKEY_LOCAL_MACHINE\Software\Classes 下。

[b][color=#FF0000]HKEY_CURRENT_CONFIG[/color][/b] 包含有关本地计算机在系统启动时使用的硬件配置文件的信息。




[quote]注册表是Windows核心部分,相当于系统设置的总数据库,几乎所有与系统设置相关的选项都能在其中找到对应的键值。本刊2005年第2期的《把根留住——备份Windows密码》中提供了移植Windows 2000/XP/2003账户密码的方法,其实[HKEY_LOCAL_MACHINE\SAM\SAM]还大有潜力可挖。

第一步:由于涉及注册表的权限修改,所以必须使用具有管理员权限的账户登录系统。

第二步:打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\
SAM\SAM],右击该项选择“权限(Windows 2000中要使用regedt32.exe修改权限)”,选中“组或用户名称”列表中的“Administrators”,勾选“完全控制”后点击“确定”(见图1)。


第三步:按F5刷新一下注册表就会发现可以打开该项的下级分支了,找到[HKEY_LOCAL_MACHINE\SAM\SAM
\Domains\Account\Users\Names],其下的子项就是系统中的账户名,这是最保险的查看方式。

2.恐怖的实验:账户移形换位

第一步:建立2个账户cfan1和cfan2,分别设置密码并登录一次系统,这样做是为了在“Documents and Settings”目录中生成各自的配置文件和在注册表产生各自的SID值(SID值是Windows中设计用来区分不同账户而采用的一个随机码,即使是在同一系统中先后用相同的账户名建立一个新账户,它们的SID值也是不一样的)。

第二步:用系统管理员账户登录系统,打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\
Account\Users\Names],将账户cfan1和cfan2的键名互换,接着注销系统并分别使用cfan1和cfan2登录系统,原密码已经失效了,不过将它们的密码互换后却可以正常登录。


第三步:用cfan1登录后发现当前使用的用户配置文件是cfan2的,除了用户名换成cfan1外,其他的数据(密码、用户设置等)都是cfan2的。而用cfan2登录则恰好相反,除了用户名外也都是cfan1的。

结论:[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\
Users\Names]下的各个子项相当于一把能够开启用户配置文件“保管箱”的“钥匙”,而[HKEY_LOCAL_MACHINE\SAM\SAM\
Domains\Account\Users]下的其他各子项(除了Names项)才是真正记录了用户数据的位置,而复制影子账户就相当于给同一个用户数据“保管箱”配了2把“钥匙”,用其中任意一把都能打开“保管箱”。

小提示

[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names]各子项的默认值是一个指针,并不包含用户的数据,其值与[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users]下的某个子项名相同,也就是说指向了这个保存了用户数据位置的子项,如[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\
Account\Users\Names\Administrator]的默认值为“0x1f4”(即十六进制的000001f4),则Administrator的用户数据在[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001f4](见图2)。


3.当回杀手:亲手建立影子账户

第一步:以管理员账户登录系统,打开“注册表编辑器”,选中[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\
Users\Names\Administrator]项并右击,选择“导出”,保存为ad.reg。

第二步:用“记事本”打开ad.reg,将其中的“[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
\Administrator]”修改为“[HKEY_LOCAL_MACHINE\SAM\SAM\
Domains\Account\Users\Names\cfan]”,保存后双击导入注册表。

第三步:注销当前登录用户,以“cfan”为用户名,密码则使用Administrator的密码,登录系统。

如果你是黑客,那么现在不管对方将用户名“Administrator”改为“user123”还是“user321”,你都能用“cfan”作为用户名进行登录。更为可怕的是,通过上文中介绍的6种常规账户检测方法均无法找出这个影子账户!但庆幸的是,还是有办法找出这个“隐形杀手”的。

小提示

用影子账户登录后所进行的用户设置及修改,相当于原账户所进行的修改(比如用影子账户修改了登录密码,则用原账户登录时也需使用新密码),反之亦然。

4.神探出手:轻松找出影子账户

以彼之道还施彼身乃是上策,既然黑客能利用注册表建立影子账户,那么通过注册表我也能找出影子账户。

第一步:打开“注册表编辑器”,然后点击左侧分支找到[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\
Names\Administrator],查看并记录下该项的默认值。

第二步:依次检查[HKEY_LOCAL_MACHINE\SAM\SAM\
Domains\Account\Users\Names]下的所有子项,如果某个子项的默认值与刚才记录下的Administrator的默认值相同,那么这个就是影子账户了,当然不能给黑客留一把后门“钥匙”,毫不犹豫地删除之。


ps:网上有很多相关资料!


第三步:除Administrator外,黑客还可能复制出其他账户的用户数据“保管箱”的“钥匙”,所以保险起见还需检查[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\
Names]下所有子项的默认值是否有相同的,如果有,那么就该小心了
[/quote]


[quote]首先SID的格式为:S-R-A-S-S-S-S
S—指这是个SID
R—版本号
A--用于标识发放SID的当局,如5指NT/2000
S—下属值,是一系列号码,对用户进行唯一的标识
如:S-1-5-21-1085031214-492894223-1060284298-500
21-1085031214-492894223-1060284298为下属值,唯一地标识域和工作组
500表示为administrator。
对每一个内置域用户和组和通用的组和用户标号都通过这种方法来唯一标识,在后表中列举了众所周知的用户和组的SID。

下面再初略地提一下WINDOWS的登录过程,WINDOWS登录主要有两种登录方式,即交互式和网络登录,其实还有批处理登录方式和服务程序登录,但其具体的方式哥们还没深入研究,如果有研究的同志千万别不告诉我,跟你急~~ :)

在WINDOWS启动过程中SMSS(SESSION MANAGER)进程是系统创建的第一个用户模式进程,但他是系统信任的组件,他调用native API开始WIN32子环境、初始化注册表、开始子系统进程(CSRSS)和LOGON进程等一系列初始化任务,见注册表键:HKLM\SYSTEM\CurrentControlSet\ Control\Session Manager。实际的登陆过程在LOGON进程(WINLOGON)和相关LSASS进程、SAM、ACTIVE DIRECTORY和多个验证包(进行认证检查的DLL)。

WINLOGON是信任进程,负责相关安全认证的用户交互,他必须保证对任何其他的活动进程不可见,保证任何非信任进程在WINLOGON相关进程执行时不能控制桌面而访问口令。可是事实可以编写拦截登陆用户名和口令的代码,:D前两天分析一个木马“angel”,该木马把每次登陆的用户名和口令均记录在angle.txt 文件中,可惜以明文,太明显了(败笔),而且直接加载到REGISTER的RUN子键中(又是败笔) :D

WINLOGON依靠图形化认证接口(GINA)获得用户输入的用户名和口令,一般默认调用\Winnt\System32\Msgina.dll,它产生标准的WINDOWS登陆对话框。因此我们可以用自己的GINA取尔代之来使用不同的认证机制,如。。。 :D

系统通过调用LSASS来验证用户输入的用户名和口令,它调用前面提到的验证包(DLL)进行相应的处理,如果正确就缺省调用USERINIT.EXE,完成如环境变量初始化、运行登陆脚本和应用安全策略等任务后运行缺省的SHELL---EXPLORER.EXE,他所产生的进程都继承了LSASS为用户产生的令牌,该令牌就是WINDOWS保护资源,实施ACL等安全特性的根本。[/quote]



分享:

扫一扫在手机阅读、分享本文

请发表您的评论