Windows 账户控制
在 Windows 账户控制中,会涉及到账户增添删改,修改密码,修改密码安全性策略等需求
在 Windows 的命令提示符中,指令的大小写是不影响执行效果的,如
net user username /DELETE
和以下指令
net user username /DELETE
是具有等价效果的
查询系统内已存在的用户
net user
如用户名的后缀为 $
,例如:test$
,则会被系统识别为系统账户(隐藏账户),从而不能在 net user
的结果中出现。面对隐藏账户,可以从注册表内进行搜索,或者看一下控制面板的用户账户管理页面
通过命令行操作用户账户,需要管理员账户权限。在 Windows 7
系统中,可以在开始菜单中找到 命令提示符
,右键,选择 以管理员身份运行
,即可获得管理员账户权限;在 Windows 10
中,可以直接右键开始菜单按钮,选择 Windows Powershell (管理员)
,也可获得管理员账户权限
禁用账户
在安全加固中,往往会遇到一些系统和服务自动创建的来宾账户(Guest
账户),这类账户往往没有身份验证机制,或者存在弱身份验证机制,会给系统带来未授权访问的风险。为了杜绝此类风险,可以将账户直接禁用,以下以 Guest
账户举例
首先,可以通过 net user guest
指令,查看当前 Guest
账户的状态,其效果应该如下
C:\Users\admin>net user Guest
用户名 Guest
全名
注释 供来宾访问计算机或访问域的内置帐户
用户的注释
国家 / 地区代码 000 (系统默认值)
帐户启用 No
帐户到期 从不
上次设置密码 2023/11/21 0:09:26
密码到期 从不
密码可更改 2023/11/21 0:09:26
需要密码 No
用户可以更改密码 No
允许的工作站 All
登录脚本
用户配置文件
主目录
上次登录 从不
可允许的登录小时数 All
本地组成员 *Guests
全局组成员 *None
命令成功完成。
可以看到,当前 Guest
账户的启用状态为:No
。如果发现 Guest
账户为启用状态,则存在攻击者利用 Guest
账户进行未授权登陆的可能性。
为了禁用 Guest
账户,可执行以下指令:
net user Guest /ACTIVE:NO
即可禁用 Guest
账户
修改用户密码
直接使用 net user
指令即可
net user username password
删除账户
使用控制面板来删除用户
在控制面板中,直接进入账户的信息界面,即可直接点击 删除账户
。
后续还可以选择是否将这个用户的个人数据进行清除(即删除个人文件夹,包括桌面、下载目录等等)
使用命令行来删除账户
通过以下指令来实现(以 test
账户为例):
net user test /DELETE
即可删除掉 test
账户
排查影子账户
需要注意的是,普通的影子账户,虽然在 net user
的结果中不可见,但是仍然可以在控制面板的用户账户管理页面看到。如下图中的 test$
账户,虽然在 net user
的结果中不可见,但是仍然可以在控制面板中看到。
需要注意的是,这种效果还只是最普通的影子账户,因为这种手法创建的影子账户,在控制面板中还是可见的,隐蔽性并不是很强
对于更高级的影子账户,相关原理可以参考:渗透测试 / 权限维持 / Windows
由于注册表是 Windows 储存配置数据的核心,所以可以直接通过注册表数据来对系统所有的账户进行排查
Win
+R
,执行 regedit
,打开注册表编辑器,进入 HKEY_LOCAL_MACHINE\SAM\SAM
分支
由于 SAM 区的数据涉及敏感信息,所以 Windows 的默认权限设置下是没有办法直接查看的,但是可以手动更改权限设置,将 Administrators 加入到权限组中,并给予所有权限
然后重新启动注册表编辑器,即可访问到 SAM 区域内的用户数据
所有账户的账户数据保存在:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
,可以在此处看到所有的用户账户