以前在研究注册表时经常对windowsSID的结构感觉到莫名奇妙,最近通过研究和学习,终于弄懂了他的奥秘,现和大家交流一下。不对的地方请同志们批评指正。 D
windows实现安全特性中一个重要的因素就是用户帐户和用户组,我们当然主要使用便于记忆的词来标记用户和组名,但在计算机内部,操作系统使用唯一的标识来引用用户帐户,因此,在每个帐户创建时都被赋予了一个唯一的SIDsecurity identifical descriptor,并且即使我们再重建一个我们先前已经删除的同名的帐户,该帐户也不具备老帐户的权限和访问许可权,前段时间janker删除administrator后在重建也不行的原因 :)
首先SID的格式为:S-R-A-S-S-S-S
S—指这是个SID
R—版本号
A--用于标识发放SID的当局,如5NT/2000
S—下属值,是一系列号码,对用户进行唯一的标识
如:S-1-5-21-1085031214-492894223-1060284298-500
21-1085031214-492894223-1060284298为下属值,唯一地标识域和工作组
500表示为administrator
对每一个内置域用户和组和通用的组和用户标号都通过这种方法来唯一标识,在后表中列举了众所周知的用户和组的SID
下面再初略地提一下WINDOWS的登录过程,WINDOWS登录主要有两种登录方式,即交互式和网络登录,其实还有批处理登录方式和服务程序登录,但其具体的方式哥们还没深入研究,如果有研究的同志千万别不告诉我,跟你急~~ :)
WINDOWS启动过程中SMSSSESSION MANAGER)进程是系统创建的第一个用户模式进程,但他是系统信任的组件,他调用native API开始WIN32子环境、初始化注册表、开始子系统进程(CSRSS)和LOGON进程等一系列初始化任务,见注册表键:HKLM\SYSTEM\CurrentControlSet\ Control\Session Manager。实际的登陆过程在LOGON进程(WINLOGON)和相关LSASS进程、SAMACTIVE DIRECTORY和多个验证包(进行认证检查的DLL)。
WINLOGON是信任进程,负责相关安全认证的用户交互,他必须保证对任何其他的活动进程不可见,保证任何非信任进程在WINLOGON相关进程执行时不能控制桌面而访问口令。可是事实可以编写拦截登陆用户名和口令的代码,:D前两天分析一个***“angel”,该***把每次登陆的用户名和口令均记录在angle.txt 文件中,可惜以明文,太明显了(败笔),而且直接加载到REGISTERRUN子键中(又是败笔) D
WINLOGON依靠图形化认证接口(GINA)获得用户输入的用户名和口令,一般默认调用\Winnt\System32\Msgina.dll,它产生标准的WINDOWS登陆对话框。因此我们可以用自己的GINA取尔代之来使用不同的认证机制,如。。。 D
系统通过调用LSASS来验证用户输入的用户名和口令,它调用前面提到的验证包(DLL)进行相应的处理,如果正确就缺省调用USERINIT.EXE,完成如环境变量初始化、运行登陆脚本和应用安全策略等任务后运行缺省的SHELL---EXPLORER.EXE,他所产生的进程都继承了LSASS为用户产生的令牌,该令牌就是WINDOWS保护资源,实施ACL等安全特性的根本。
有关令牌的结构哥们就不多说了,并且有一个工具“WhoAmI.exe”可查看你自己的令牌中关键信息。
Ok 先认识到这,这是哥们的一点肤浅体会,有不对的地方还请各位高手指点,尤其的楼下的高手lu0(我的老师) D
还有SID表中描述部分为本人临时翻译的,水平有限… …靠,太罗嗦,上脚了&$%#@$%
 
SID 名字 描述
 
S-1-0-0 Null 无成员的一个组。经常用于一个不知名SID
S-1-1-0 Everyone 包含所有用户的组,甚至匿名用户和 guests.
S-1-2-0 Local 登录到和系统物理连接的终端的用户
S-1-3-0 Creator Owner 产生对象的用户的SID
S-1-5-1 Dialup 通过使用如modem等拨号方式连接登录的用户
S-1-5-2 Network 通过网络登录的用户
S-1-5-3 Batch 使用批处理登录的用户.
S-1-5-4 Interactive 通过交互方式登录的用户
S-1-5-5-X-Y Logon Session 登录会话。保证唯一地访问属于该会话的对象,XY对每一登录都不同。
S-1-5-6 Service 为服务登录的用户帐户
S-1-5-7 Anonymous 匿名登录的用户用户
S-1-5-9 Enterprise Controllers包含所有活动目录域控制器计算机组.
S-1-5-10 Principal Self (or Self)Granting permissions to Principal Self means granting permissions to the principal represented by the object.
S-1-5-11 Authenticated Users 含所有登录验证通过用户的组,该组不包含匿名和NULL帐户
S-1-5-13 Terminal Server Users 过终端服务器连接的用户组
S-1-5-18 Local System (System Account)被系统使用的一个服务帐户,这个帐户哥们好象很少见?
S-1-5-<domain>-500 Administrator废话不说了
S-1-5-<domain>-501 Guest没有帐户的用户可以以该身份登录,访问指定的资源,但无法对桌面做永久的更改。
S-1-5-<domain>-502 KRBTGT Kerberos Key Distribution Center (KDC) 服务使用的一个服务帐户
S-1-5-<domain>-512 Domain Admins域管理员组,域全局组,WINDOW2000自动把它加入到Administrator域本地组,这样该成员就可执行域中任何一台计算机的管理任务了。
S-1-5-<domain>-513 Domain Users包含所有域用户的一个组,也是域全局组
S-1-5-<domain>-514 Domain Guests域中Guests组,域全局组
S-1-5-<domain>-515 Domain Computers域中所有计算机的组,域全局组
S-1-5-<domain>-516 Domain Controllers域中所有域控制器都添加到该组,域全局组
S-1-5-<domain>-517 Cert Publishers运行微软证书服务的计算机为该组成员
S-1-5-<domain>-518 Schema Admins该组成员可以修改活动目录计划
S-1-5-<domain>-519 Enterprise Admins该组成员具有对活动目录所有域进行控制管理的权利
S-1-5-<domain>-520 Group Policy Creators Owners策略管理员组
S-1-5-<domain>-553 RAS and IAS Servers一个本地组代表RASInternet认证服务服务器
S-1-5-32-544 Administrators一个内置本地组,缺省包含Administrator
S-1-5-32-545 Users一个内置本地组,该成员只能访问指定资源,默认包含本地用户帐户。
S-1-5-32-546 Guests一个内置本地组,默认内置Guest为该组成员。
S-1-5-32-547 Power Users一个内置本地组。缺省没有成员,它可以创建、修改本地用户和组,也可以安装应用程序、管理打印机和文件共享。
S-1-5-32-548 Account Operators一个在域控制器上的内置域本地组,对用户帐户和组进行创建、修改和删除的操作。但AdministratorOperator组除外。
S-1-5-32-549 Server Operators一个在域控制器上的内置域本地组,成员可以操作服务器,用户帐户除外。
S-1-5-32-550 Print Operators一个内置域本地组,对网络打印机进行管理。
S-1-5-32-551 Backup Operators一个内置域本地组,可以备份和恢复文件和所有域控制器, 不考虑是否有该文件的权限。