运用 tscon 该特性可以达到某些横向移动的场景,达成未授权登陆其它用户的远程桌面会话,或者使用该特性切换到其它用户进行恶意行为,那么事件日志里面记录的是其它用户的操作,从而避免或者恶意引导应急响应人员的取证。

概述

本文章更多的是为了解这个姿势,实际攻击中需要结合利用。

这种方法前提是取得某部主机的 SYSTEM 权限,特点是

  • 不需要其它工具
  • 不需要写入任何文件
  • 可以连接到断开连接、没有正确退出的远程桌面 session

影响范围:
win 2000 之后一直至今的 windows 系统都可以使用该方法

用到的工具

无,仅需要开启远程桌面

正文

文章部分内容引用了先知社区文章 https://xz.aliyun.com/t/1987

基本概念

RDP是什么

远程桌面协议(RDP)是微软开发的专有协议,它为用户提供通过网络连接连接到另一台计算机的图形界面。用户使用RDP客户端,而另一台计算机必须运行RDP服务器。

每个试图连接到另一台计算机的人,主要使用远程桌面服务或终端服务进行连接。如果您使用此服务,那么您已经知道远程桌面服务具有以下功能:如果您知道其密码,则可以连接到其他用户的会话。

这是我们常说的 3389/远程桌面。

TSCON是什么

Tscon 是一个 Windows 的功能,可连接到远程桌面会话主机服务器上的另一个会话。

tscon {<SessionID> | <SessionName>} [/dest:<SessionName>] [/password:<pw> | /password:*] [/v]

System权限

System权限是比Administrator权限还高的系统最高权限,利用它可以完成很多常规情况下无法完成的任务。


tscon的正常用法

测试系统: Windows Server 2008 x86

已创建三个用户: Administrator user1 test1

密码均为 test1234

远程桌面需要设置为第二项:

{% image https://i.loli.net/2019/03/23/5c958d1f22bed.jpg '' '' %}

步骤1 开启了远程桌面的 Windows 系统,用户 Administrator 为本地登录,用户 test1 为通过远程桌面服务(RDP)连接 3389 端口远程登录,会产生多个会话如下

{% image https://i.loli.net/2019/03/23/5c95ec32a049c.jpg '' '' %}

步骤2 接下来,如果用户Administrator想 要切换至用户b的远程桌面,可通过右键-连接进行连接,接着输入密码即可,如下图:

{% image https://i.loli.net/2019/03/23/5c95ec4c33dde.jpg '' '' %} {% image https://i.loli.net/2019/03/23/5c95ec6a1640a.jpg '' '' %}

步骤3 来到我们的 tscon ,它是命令行下使用的工具,可实现和上述相同的功能。首先获取用户对应的 sessionid,执行如下命令:

query user

步骤4 接着在 Administrator 用户命令行下运行 tscon 命令,上个命令查到 test 的会话 ID 为 2,输入 ID 和密码后:

tscon 2 /PASSWORD:test1234

你会发现你直接切换到了 test 用户的会话,这是 tscon 命令的正常用法。


利用tscon实现未授权登录远程桌面的方法

如果你拥有了 System 权限,在 System 权限下执行同样的命令,就能够绕过输入密码的过程,直接切换。

从 Administrator 权限切换到 System 权限的方法在大佬的文章渗透技巧——从Admin权限切换到System权限有过详细介绍,常用方法有如下四种:

  • 通过创建服务获得System权限
  • 利用 MSIExec 获得System权限
  • 利用 token 复制获得System权限
  • 各种提权漏洞

攻击场景1

在渗透 Windows Server 的时候,默认情况下 mimikatz 无法导出明文口令,测试环境下,通过某些方法获得了服务器的一个用户名密码,可以通过远程桌面进行登录。如果登录后发现后台存在另一用户,由于未导出明文口令,通过常规方法无法切换至另一用户的桌面,这里就可以借助上文提到的方法,先提权至 System 权限,再切换过去。

值得注意的是,如果当用户通过远程桌面登录后,直接点击关闭断开连接却没有注销,此时该会话并没有结束,后台显示Disconnected,如下图:

{% image https://i.loli.net/2019/03/23/5c95ed8f4dd1b.jpg '' '' %}

此时,仍能在 system 权限下通过 tscon 实现未授权连接。因此在平时的渗透中,可以利用这一点来获取 disconnected 用户会话的远程桌面。

这里利用 CVE-2018-8120 进行提权,提权 exe 已放到用户 user1 的桌面上。执行 tscon 2 即可无需密码顺利切换到 test1 用户的远程桌面。

{% image https://i.loli.net/2019/03/23/5c95edef99b0b.jpg '' '' %}

攻击场景2

假设你已经成功得到了 user1 这个用户的用户名密码,入侵到了一台 Windows Server 2008 主机,即我们的靶机,这个时候要提权到 System 权限有多种姿势,这里利用 CVE-2018-8120 进行提权,提权 exe 已放到用户 user1 的桌面上

{% image https://i.loli.net/2019/03/23/5c95e0ab5c7c2.jpg '' '' %}

得到 System 权限后,可以利用辅助工具(快捷键为 Win+U)给主机装个后门,命令如下(命令已放到 user1 桌面):

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

这时我们可以利用后门绕过登陆界面。锁定 user 1 用户回到登陆界面,可以点击轻松访问图标(或者快捷键 Win + U)对其调用,在登录界面启动辅助工具管理器,弹出 cmd.exe,权限为 system

这时通过 tscon 1无需密码直接切换至目标用户的桌面,大功告成。如果受限的话可以利用 WMI 做中转,具体可以看先知社区的利用文章

删除后门,使用 SYSTEM 权限执行命令:

REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe"

其它应用场景

  • 劫持系统上较旧的管理员会话。
  • 此技术还可用于解锁锁定的会话。
  • IT管理员可以劫持业务用户的会话以访问组织中的敏感系统。
  • 某个管理员可以通过劫持他的会话和执行未经授权的活动来暗中访问某些系统的其他管理员。

最重要的是,对于上述场景,攻击者不需要 Metasploit,mimikatz 等工具,这些工具通常用于用户的令牌操作和模拟登录用户。我们只要用到 tscon 这个内置命令就好了。每个管理员都可以通过物理访问本地模拟任何登录用户,也可以通过远程桌面远程模拟任何登录用户。


利用工具

  1. Github 上有一个 批处理攻击脚本
  2. Mimikatz 有一个模块也已经集成了这个漏洞,直接利用即可

如何避免

  1. 组策略:建议在用户断开连接后立即或快速使用组策略注销断开连接的会话。
  2. 在退出远程桌面的时候先注销,不要直接点关闭。
  3. 不要将RDS / RDP暴露给互联网:如果一定要这样做,则必须实施多因素身份验证。
  4. 打开事件日志、事件转发等功能。
  5. 不要滥用 SYSTEM 权限。

靶机搭建记录

找个可以远程登陆的WIN 7精简版

  1. 开启防火墙和配置远程桌面
  2. 创建测试账户并配置远程桌面权限
  3. 开启多个用户同时登陆:gpedit.msc–>计算机配置—>管理模板—>Windows组件—>远程桌面服务—>远程桌面会话主机—>连接—>限制连接的数量。如果是 Windows Server 版本的话默认为 3,无需设置。
  4. UniversalTermsrvPatch 破解dll配置可多人登陆

发现精简版把轻松访问都删了没法演示后门,因此找了完整版server08 32位来演示,靶机有点大,启动可能有点慢。