1. 建立简单隐藏账户
在建立用户帐户时,如果在用户名后面加上$符号,就可以建立一个简单的隐藏帐户,如“test$”。
在字符界面下执行net user命令,就无法查看到这个帐户,但是在图形界面的“本地用户和组”中仍然可以看到。
黑客在入侵了一台主机之后,一般都要想办法给自己留一个后门,而给自己加一个管理员组的帐户则是常用的手法。由于带“$”的帐户容易被发现,于是一些人就在帐户的显示名称上下功夫,建立一个看起来和系统帐户类似的名字来迷惑管理员,如admin、sysadmin、Billgates、root等。另外一种方法就是把普通用户组的用户帐户提升到管理员组中,例如把guest帐户加入到管理员组中。所以如果我们发现管理员组中多了一个没见过的帐户或者是普通用户组的帐户以及带$的帐户,那我们就应该意识到电脑可能被入侵了。
2. 安全标识符SID
在Windows系统中,系统会为每个用户账户建立一个唯一的安全标识符(Security Identifier,SID),在Windows系统的内部核心,都是利用SID而不是用户的账户名称来表示或识别每个用户的。
SID综合用户账户创立的时间以及用户名等信息创建,因而是唯一的,并且不会被重复使用。即使将某个用户账户删除之后,再添加一个相同名称的账户,它们的SID也不会相同,这个新建的账户也无法拥有原先账户的权限。
比如新建一个名为bob,密码为123的用户,以bob的身份登录系统,建一个文本文件test.txt并利用EFS方式将之加密。将系统用户切换到administrator,将bob用户删除,然后再新建一个bob用户,密码仍为123。用新建的bob用户登录系统,则无法打开加密文件test.txt,因为用户的SID已经变换了。
可以通过执行“whoami /all”命令查看系统当前用户的SID:
一个完整的SID由多个不同部分的信息组成,其中最后一部分称为相对标识符RID。RID是500的SID是系统内置Administrator账户,即使重命名,其RID仍保持为500不变,许多黑客正是通过RID找到真正的系统内置Administrator账户。RID为501的SID是Guest账户,后来新建的用户账户的RID都是从1000开始,如RID为1015的SID就是系统中创建的第15个用户账户。
3. 建立完全隐藏账户
下面我们通过伪造用户SID来创建一个完全隐藏的用户账户,伪造SID需要通过修改注册表实现。
首先建立一个简单的隐藏账户“super$”,然后展开注册表[HKEY_LOCAL_MACHINE\SAM\SAM],默认情况下这个项里没有任何内容,这是因为用户对它没有权限。在这个项的右键菜单里,为administrator用户赋予完全控制权限。
然后按F5键刷新,会看到里面多出2个子项。
在[SAM\Domains\Account\Users\Names]项里显示了系统当前存在的所有账户,选中super$,在其右侧有一个名为“默认”,类型为“0x3eb”的键值。其中的“3eb”就是super$用户SID的结尾,即RID(这里使用十六进制表示,将3eb转换成十进制就是1003)。
在[SAM\Domains\Account\Users]里有一个以“3EB”结尾的子项,这两个项里都是存放了用户super$的信息。
在这两个项上单击右键,执行“导出”命令,将这两个项的值分别导出成扩展名为.reg的注册表文件。
然后将super$用户删除,再次刷新注册表,此时上述两个项都没了。
下面再将刚才导出的两个注册表文件重新导入,此时在注册表里就有了super$账户的信息,但无论在命令行还是图形界面都无法看到这个账户,账户就被彻底隐藏了。
使用这个隐藏账户可以登录系统,但缺点是仍然会产生用户配置文件,下面再对这个账户做进一步处理,以使之完全隐藏。
还是展开到上面的注册表项中,找到administrator用户的RID值“1f4”,展开对应的“000001F4”项,其右侧有一个名为f的键值,这个键值中就存放了用户的SID。下面将这个键值的数据全部复制,并粘贴到“000003EB”项的f键值中,也就是将administrator用户的SID复制给了super$,这样在操作系统内部,实际上就把super$当做是administrator,super$成了administrator的影子账户,与其使用同一个用户配置文件,super$也就被彻底隐藏了。
建立隐藏账户是黑客比较喜欢的一种留后门方式,而且非常隐蔽,像上面的隐藏账户只能通过注册表来发现。
本文出自 “一壶浊酒” 博客,转载请与作者联系!