如何在 Windows 中创建一个隐藏用户账户
目录
1. 简介与警告
本文档旨在指导技术人员和安全研究员如何在 Windows 系统中创建一个“隐藏”的用户账户。这类账户在标准的图形用户界面(如登录屏幕、控制面板)中不可见,通常用于安全渗透测试、系统管理或“隐藏账户检测”功能的验证。
⚠️ 警告: 创建隐藏账户可能带来严重的安全风险。未经授权在他人系统上创建此类账户是非法行为。请仅在授权的测试环境中使用此技术,并确保在测试结束后彻底清理。
2. 核心原理
实现账户隐藏主要依赖于两个关键机制的结合:
- 特殊用户名:创建一个以美元符号
$
结尾的用户名(例如AdminTest$
)。这是一个长期存在的约定,某些系统工具会默认忽略这类账户。 - 注册表修改:通过在 Windows 注册表的特定位置添加一个条目,明确“告知”登录界面(Winlogon)等组件不要显示该账户。
我们将通过命令行创建用户,然后通过修改注册表来完成隐藏。
3. 操作步骤
第一步:创建特殊用户账户
我们使用命令行工具(CMD 或 PowerShell)来创建账户并分配权限。
-
以管理员身份运行命令提示符或 PowerShell。
- 在开始菜单搜索
cmd
,右键点击并选择“以管理员身份运行”。
- 在开始菜单搜索
-
创建用户。 执行以下命令,创建一个名为
TestAdmin$
的用户,并设置一个强密码。net user TestAdmin$ YourStrongPassword /add
注意:请将
YourStrongPassword
替换为您自己的安全密码。用户名末尾的$
是必需的。 -
提升为管理员权限(可选)。 为了让该账户拥有更高的系统权限(常用于测试目的),将其添加到本地管理员组。
net localgroup administrators TestAdmin$ /add
至此,账户已创建完成,但尚未隐藏。
第二步:通过注册表隐藏账户
这是实现隐藏的关键步骤。
-
打开注册表编辑器。
- 按
Windows
键 +R
,输入regedit
,然后按回车。
- 按
-
导航到 Winlogon 键。 在注册表编辑器的地址栏中,粘贴以下路径并按回车:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
-
创建
SpecialAccounts
和UserList
项。- 在
Winlogon
上右键,选择 新建 > 项(Key),将其命名为SpecialAccounts
。 - 接着,在
SpecialAccounts
上右键,选择 新建 > 项(Key),将其命名为UserList
。
如果这些项已经存在,则无需创建,直接进入下一步。
- 在
-
创建隐藏条目。
- 点击选中
UserList
项。 - 在右侧的空白面板中,右键点击,选择 新建 > DWORD (32 位) 值。
- 将这个新值的名称设置为你刚刚创建的、包含
$
的完整用户名,即TestAdmin$
。 - 确保该值的数据为
0
(十六进制)。这是默认值,0
代表“隐藏”,1
代表“显示”。
- 点击选中
-
重启或注销。 为了使注册表更改完全生效,请重启计算机或从当前账户注销。
4. 如何验证与登录
验证隐藏效果
- 登录屏幕:隐藏账户
TestAdmin$
不会显示在用户选择列表中。 - 控制面板:进入“控制面板” > “用户账户” > “管理其他账户”,
TestAdmin$
同样不应显示。 net user
命令:在命令提示符中运行net user
,TestAdmin$
账户不应出现在列表中。wmic
命令:运行wmic useraccount get name
,TestAdmin$
应该会出现在这个更底层的查询列表中,这证明账户确实存在。
登录隐藏账户
由于账户在UI上不可见,你需要手动登录:
- 在登录屏幕上,选择“其他用户”(如果可见)。
- 在用户名处,输入完整的本地用户名,格式为
.\用户名
,例如:.\TestAdmin$
- 输入您之前设置的密码,即可登录。
5. 如何删除隐藏账户
测试完成后,务必彻底删除隐藏账户以确保系统安全。
第一步:移除注册表项
- 打开
regedit
并导航到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
- 在右侧面板中,找到并删除名为
TestAdmin$
的 DWORD 值。
第二步:删除用户账户
- 以管理员身份打开命令提示符或 PowerShell。
- 执行以下命令,将
TestAdmin$
替换为您要删除的实际账户名:net user TestAdmin$ /delete
- 命令成功执行后,账户及其关联的用户配置文件将被永久删除。
6. 问题排查
net user
仍显示账户:最常见的原因是注册表UserList
中的 DWORD 值名称不正确。请确保其名称与用户名完全匹配,包括$
符号。- 无法登录:确认密码是否正确,以及用户名是否以
.\
开头(表示本地账户)。 - 删除失败:确保您是以管理员权限运行的命令提示符,并且账户当前未处于登录状态。