隐藏用户
原理
在创建用户时,在用户名后添加一个$
并修改注册表即可把该用户隐藏,只有在注册表中才能看到用户信息
复现过程
使用net user whoami$ Aa123456 /add
添加一个用户,使用net users
查看用户发现没有该用户,但是还是可以在计算机管理中查看到
这里我们紧接着将隐藏用户加入administrator组(设置管理员权限)
net localgroup administrators whoami$ /add
然后运行regedit
打开注册表,并将HKEY_LOCAL_MACHINE\SAM\SAM
的权限修改为完全控制
在注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
中可以看到所有的用户
如上图所示,我们可以知道000001F4
对应为Administrator
用户,000003F1
对应为新建用户whoami$
,我们将新建用户000003F1
的F值修改为管理员用户000001F4
中的F值
然后我们将000003F1
和whoami$
注册表导出,之后删除用户net user whoami$ /del
然后再将刚导出的两个注册表内容添加回去
此时隐藏用户已经添加成功,只有在注册表中可以发现该用户,尝试用该用户进行登录
进一步隐藏:
我们使用新建的隐藏用户登入,然后修改其他用户对该用户注册表内容的访问权限,这样即可彻底隐藏该恶意新建用户。
排查与处置思路
- 打开注册表的 [HKEY_LOCAL_MACHINE] 项,检查该项下的 [SAM\SAM\Domains\Account\Users] 是否有可疑账户。
- 默认管理员权限无法查看注册表,需要分配权限或是提升至system权限
- 隐藏账户的登录记录,可通过查看日志获取
Shift 粘滞键后门
原理
粘滞键在Windows系统中是默认开启的,当连续按下Shift键5次后,系统会执行%systemroot%/system32下的sethc.exe程序
如果我们将cmd.exe覆盖sethc.exe程序,当下次连续按下Shift键5次后,系统就会执行cmd.exe程序,从而达到持久化后门的效果。
复现过程
首先我们将sethc.exe进行重命名为sethc.exe.bak,但是提示我们权限不够
本来想要更改当前用户权限的,然后无果
更改该程序的所有者为Administrators,之后便和上图一样添加完全控制的权限即可修改
然后复制cmd.exe到该目录并命名为sethc.exe,之后我们连续按下5次Shift键即可getshell
排查与处置思路
- 查看粘滞键程序sethc.exe是否被更改
- 尽量禁用粘滞键功能
注册表自启动项
原理
通过修改注册表来添加自启动程序,在每次开机时将会执行该程序。
常见注册表启动项键位置:
- 用户级
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
- 系统级
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce
复现过程
打开【运行】,输入【regedit】打开注册表
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
中加入字符串值,如下图
重新启动计算机,可见自动执行了cmd.exe程序
排查与处置思路
- 查看启动项相关的注册表值位置,删除异常注册表启动项
- 打开【运行】,输入【msconfig】查看异常启动项
- 控制面板 -> 管理工具 -> 系统配置 -> 启动(与2相同)
- 打开任务管理器也可以查看开机启动项
定时计划任务
原理
Windows下可以使用命令【at】和【schtasks】设置定时计划任务。
区别:【at】在win7以上高版本windows中不能将任务在前台执行,相当于创建了一个后台进程,而【schtasks】是将定时任务放在前台执行。
我们创建一个定时计划任务来执行恶意程序或者反弹shell即可达到持久化后门的效果。
复现过程
【at】命令用法如下:
执行如下命令可以在每天早上6点执行calc计算机程序
at 6:00 /every:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday calc.exe
【schtasks】命令用法如下:
使用schtasks /create
创建计划任务,使用方法可以使用/?
进行查看
执行如下命令创建名为test的计划任务:每分钟执行一次calc.exe
schtasks /create /tn test /tr calc.exe /sc minute /mo 1
查看计算机管理中的任务计划程序可以看到刚刚设置的定时计划任务
windows计划任务隐藏:
删除注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
下计划任务的SD值
排查与处置思路
- 打开【计算机管理】->【任务计划程序】中查看是否存在恶意的定时计划任务
- 查看注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
下的定时计划任务,与1对比查看是否有被删除SD值的隐藏计划任务
用户登录初始化(userinit后门)
原理
userinit的作用是用户在进行登录初始化设置时,winlogon进程会执行指定的login scripts,所以我们可以修改它的键值来添加要执行的程序。
注册表位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
的Userinit
值
复现过程
打开注册表,找到如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
的Userinit
值
修改数值数据,以逗号,
分割,如下图
重新启动电脑,自动运行cmd.exe
排查与处置思路
- 检查注册表中
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
的Userinit
值,并删除恶意程序
Logon Script后门
原理
与用户登录初始化(userinit后门)原理类似,修改注册表指定项
复现过程
注册表路径:HKEY_CURRENT_USER\Environment
创建一个键为:UserInitMprLogonScript(只能使用这个键名)
设置其键值为要启动的程序路径:c:\windows\system32\cmd.exe
计算机开机时就会自动执行该程序
排查与处置思路
- 检查注册表中
HKEY_CURRENT_USER\Environment
的UserInitMprLogonScript
值,并删除恶意程序
屏幕保护程序
原理
屏幕保护程序是windows功能的一部分,该功能使得用户在一定时间内不操作计算机就会播放动画或者消息。屏幕保护程序是具有.src文件扩展名的可执行文件,并通过C:\Windows\System32\scrnsave.scr
程序执行。
复现过程
屏幕保护程序的配置存储在注册表中,其位置为:
HKEY_CURRENT_USER\Control Panel\Desktop
通过修改SCRNSAVE.EXE
的值达到后门的目的,将值修改为C:\Windows\system32\calc.exe
等到屏幕保护程序执行时就会执行calc.exe
弹出计算器
排查与处置思路
- 查看注册表
HKEY_CURRENT_USER\Control Panel\Desktop
的SCRNSAVE.EXE
的值是否异常 - 直接关闭屏幕保护程序
映像劫持
原理
Image File Execution Options(其实应该称为“Image Hijack“)是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改。(摘自百度百科)
复现过程
打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
这个注册表项有很多以exe文件命名的表项,我们可以通过修改这些表项或者新建表项达到劫持的效果。
如上图所示,我们新建一个名为calc.exe的项,并添加debugger键,将cmd.exe作为值
当我们运行calc.exe时将会执行cmd.exe
排查与处置思路
- 查看注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
是否存在异常项中有异常键值
自启动服务
原理
自启动服务一般是在电脑启动后在后台默认或者加载指定的服务程序,可以将exe应用程序注册为服务,也可以将dll文件注册为服务。
如果攻击者利用Windows的服务机制创建一个后门服务,并将这个服务设置为自启动,那么这个后门将比一般的持久化方法更为强健。
复现过程
使用【sc】命令可以将程序加入服务项中,并设置自启动
sc create hack binPath="cmd.exe /k C:\users\test\muma.exe" start="auto" obj="LocalSystem"
然后手动启动服务或者使用命令sc start hack
排查与处置思路
- 排查系统服务项,查看是否有异常服务并删除
删除服务命令sc delete hack