粘滞键后门详述

  • 时间:
  • 来源:互联网
  • 文章标签:

0x00:介绍

首先介绍一下粘滞键,粘滞键很多人都知道,windows 系统下连续按 5 次 shift 可调出其程序,但使用可能有一部分人不太了解,毕竟这个功能一般我们都用不到,粘滞键是为了那些按钮有困难的人设计的,也可理解为残疾,就是按键困难,一次只能按一个键的这种需求,那么如果用 ctrl+c,ctrl+v 这种快捷键或者其他需要组合的键时,就会有困难,不具备一次按两个或多个键的能力,那么此时就可以单按 5 下 shift 键来启动粘滞键功能,粘滞键启动后,多个组合键就可以依次单个按下来实现,例如复制,就可以先按一下 ctrl,然后再按一下 c 即可,这就是粘滞键功能。

粘滞键启动后,图标如下,双击可以查看其设置的一些选项,如下图:

请输入图片描述

选项中有一项设置时同时按两个键时关闭粘滞键,当同时按下两个键时系统检测到了用户有同时按键的能力,则会关闭粘滞键程序。

0x01:旧方法设置粘滞键后门

之前设置粘滞键的后门很简单,直接将 sethc 程序替换成 cmd 程序,sethc 即粘滞键程序,在 c:/windows/system32 下,删除 sethc 或者重命名一下,(重命名后 5 下 shift 依然会调用粘滞键,且修改成 sethc 的 cmd 也会执行)然后复制 cmd 修改成 sethc 即可,这时在目标机登录页面连续按 5 下 shift 可调出 cmd 命令行。

这里有一个问题,如果目标机是 winvista 以上的,即 winvista 以后出的系统,修改 sethc 会提示需要 trustedinstaller 权限,trustedinstaller 是一个安全机制,即系统的最高权限,权限比 administrator 管理员高,windows 权限分为三种从低到高依次是 user,administrator,system。而 trustedinstaller 比 administrator 高但没有 system 高,这么做的好处是避免了一些恶意软件修改系统文件的可能,坏处就是自己不能直接操作了,所以要先修改 sethc 需要将其所有者改为改为我们当前管理员用户。

请输入图片描述

修改所有者需要在 sethc 右键属性,安全,高级,更改权限处,切换到所有者选项卡,把所有者更改,如下图:

请输入图片描述

在该所有者之前,直接编辑其权限都是灰色的,不能修改,有了所有权之后,便可以编辑其权限,这里需要给予自己权限,如下图:

请输入图片描述

这时可以重命名,也可以直接删除,然后复制 cmd 修改 sethc 即可,然后在锁屏没有密码情况下,可以直接按 5 下 shift 调出 cmd,执行添加新用户等操作,如下图:

请输入图片描述

0x02:新方法设置粘滞键后门

新方法设置粘滞键后门是通过注册表来实现,整体的方法思路就是通过修改注册表的映像劫持和打开其远程桌面来实现。

什么是映像劫持,简单理解就是当自己打开程序 a 的时候,实际上是打开的程序 b。这个功能是 windows 自带提供给一些开发调试软件用的,但常常也被恶意的病毒木马利用,比如我们要记录的当打开粘滞键 setch 的时候却打开了 cmd。

设置映像劫持也很简单,只需要在注册表的 HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options 位置添加被劫持的程序然后简单设置一下即可,我们通过命令行执行以下程序:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"

命令说明:reg add 是向注册表添加记录,后面跟的是注册表的位置,这里需要注意的是 HKLM 实际上是 HKEY_LOCAL_MACHINE 的缩写。Image File Execution Option 这个目录就是用来设置镜像劫持的,要被劫持的就是命令中的 sethc 粘滞键程序,随后通过 / v 来指定键名,这个键名 debugger 是固定的,然后通过 / t 来指定类型,即 REG_SZ 字符串类型,最后通过 / d 来指定键的值,即被恶意替换的程序,也就是我们的 cmd。

设置完镜像劫持后就已经有了我们旧方法中直接替换 sethc 程序的效果,但我们为了方便利用,可以开启目标机的远程桌面,这里我们也通过注册表来设置一下,需要设置两个参数。

第一个是把远程桌面链接的用户鉴定选项设置为关闭状态,即值为 0,命令行运行以下命令:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

参数作用上面已经介绍过,这里我们来看下用户鉴权即 userauthentication 这个参数的作用,官方文档说明如下:

请输入图片描述

什么意思呢,0 的说明是进行远程桌面前不需要用户身份验证,还是默认值,1 的说明是进行远程桌面前需要进行用户身份验证。为了更好的理解,我们来看下他们的区别,下面是 userauthentication 为 1 的时候:

请输入图片描述

当 userauthentication 为 1 时即远程桌面前进行用户身份验证,这时候远程链接输入 ip 后会要求输入用户名和密码,输入用户名不输入密码直接点连接会提示身份验证错误。而当 userauthentication 为 0 时,即连接前不进行身份验证,这时候输入用户名不输入密码点连接会直接到远程桌面的锁屏那一步。所以设置为 0 我们可以直接到目标的锁屏然后调起 cmd。

第二个是把远程桌面连接的安全层设置为 0,命令行运行以下命令:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0

参数我们不多说,我们来看下安全层 securitylayer 的作用,官方的说明如下:

请输入图片描述

简单来说,0 就是连接前使用 rdp 协议进行身份验证,rdp 即远程桌面连接,可以简单理解为就是关闭验证。1 是指在连接前两端协商来进行身份验证,这个是默认值。2 就是使用 tls 协议来进行。来看下 0 和 1 的区别:

请输入图片描述

在 userauthentication 用户鉴权为 0 的情况下,securitylayer 安全层为 1 的时候是点击连接后输入用户名然后再点连接到目标桌面,而把 securitylayer 改为 0 时,点击连接,会直接到用户的锁屏桌面,省去了输入凭证那一步。所以我们设置为 0,可以直接跳到锁屏桌面调 cmd。

以上三步的操作整体如下图,因为我之前已经设置过,所以会提示我是否覆盖:

请输入图片描述

以上操作的基础是目标机开启了远程桌面连接,所以我们这里也记录下如何开启远程桌面连接,首先是配置一下防火墙,设置为允许远程桌面连接,命令行运行以下命令:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

netsh 是 windows 的网络配置命令,advfirewall firewall 意思是防火墙高级设置,add rule 是添加一条规则,name 指定规则名称,protocol 指定协议,dir 指定是出战还是入站,localport 指定端口,action 指定动作 allow 允许。

设置后,我们再通过注册表来设置一下允许远程桌面连接,命令行运行以下命令:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections /t REG_DWORD /D 0 /f

至此,我们的粘滞键后门就已经完成了,远程桌面连接输入 ip 就会直接跳到目标锁屏页,如果用户没有设置密码则可以直接登录,如果有密码而又不知道密码的情况下,则可以用 shift 调出命令行来执行一些操作。

0x03:问题记录

添加粘滞键后门需要有管理员权限,以之前的替换程序方法来说,普通用户是更改不了 sethc 的名称的,也无法进行删除。

新方法在命令行操作注册表时也需要有管理权限,且如果目标机有类似于 360 那种防恶意修改的杀毒软件的话,操作也会受助。这时使用替换程序的方法也可以,或者想办法操作目标主机修改下设置,这里以 360 设置为例,首先在设置映像劫持时,注册表会提示拒绝访问,因为映像劫持的字段名 debugger 在 360 中是被禁止修改的,360 为了防止恶意软件的操作,会阻止这一项的修改,这个进程是 360 的 zhudongfangyu.exe,我们可以看到进程列表有这个选项,如下图:

请输入图片描述

这个进程直接是结束不了的,即使使用 pchunter 也无法强制退出,这个自我保护功能可以在设置里关闭,位置在设置 - 自我保护 - 开启主动防御服务。

请输入图片描述

这时关闭后注册表还会提示错误拒绝服务,后来发现还有一个需要设置的地方就是自我保护那一项,主动防御的上一项就是,如上图。这时就可以直接修改映像劫持。如果怕麻烦也可以直接卸载,只不过会引起目标的发现而已,所以推荐修改其配置,如果条件不允许,那么在拿到 shell 且提权的情况下,也可以直接替换 sethc 程序。

0x04:总结

可能一个目标机在自己准备拿下的时候已经被别人入侵过,也已经添加了后门,我们可以先 shift 试一下,也许就回弹出 cmd。防火墙杀毒软件如果条件苛刻,我们没有办法设置,那么直接替换 sethc 也可以,只不过隐蔽性稍差,同时我们也可以通过其他方法,其他方式,留下多个不同的后门,避免一个被发现而导致我们后续进入受阻。


                                                                        公众号推荐:aFa攻防实验室

                         分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                           

本文链接http://www.taodudu.cc/news/show-647688.html