如何在 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 值名称不正确。请确保其名称与用户名完全匹配,包括 $ 符号。
无法登录:确认密码是否正确,以及用户名是否以 .\ 开头(表示本地账户)。
删除失败:确保您是以管理员权限运行的命令提示符,并且账户当前未处于登录状态。