
对于开启远程桌面服务的 Windows 系统,当有多个用户登录该系统时,会产生多个会话,如下图:

其中,管理员用户Administrator和用户test均为通过远程桌面服务(RDP)登录。接下来,如果用户Administrator想要切换至用户test的远程桌面,可通过右键—> 连接(Connect)进行连接,接着输入密码即可切换到test用户:


点击确定后,如下图所示,成功切换到了test用户的远程桌面:

此外,在 Windows 中有一个 tscon 命令,是命令行下使用的工具,也可以实现与上述相同的功能。
首先执行query user命令获取用户对应的会话 ID:

可以看到用户test对应的会话ID为 3,然后通过执行tscon命令即可成功切换至用户test的远程桌面,命令如下:
tscon3 PASSWORD:(test用户的密码)

可见,tscon 命令提供了一个切换用户会话的功能,并且,在正常情况下,切换会话时需要提供目标用户的登录密码。但这并不能完全确保会话安全,攻击者通过特殊的利用方法完全能够绕过验证,不输入密码即可切换到目标会话,从而实现目标用户的未授权登录。

可以通过计划任务,服务等系统自带命令获取system权限的cmd命令窗口,但高版本例如Windows10的服务似乎就不能直接获取system权限的cmd,但可以直接跟上tscon命令,默认情况下服务将作为SYSTEM权限运行。
执行query user命令获取用户对应的会话 ID:

创建劫持用户会话的服务:
sccreate rdp binpath= "cmd.exe k tscon 3 dest:console"
scqc rdp
scstart rdp

执行sc start rdp后,我们创建的劫持会话的服务将会启动,由于cmd是以SYSTEM权限运行服务的,所以tscon命令也会以SYSTEM权限运行,此时便可以在不提供目标用户密码的情况下成功劫持目标用户的会话:


相对刚刚服务来说,更推荐家中常备Psexec微软签名正版授权(免杀杠杠的)操作简单。直接使用Psexec 来获得一个SYSTEM权限的cmd(Psexec 获得的shell是SYSTEM权限的),然后再这个SYSTEM权限的cmd中直接执行tscon劫持命令:
psexec -s -i cmd
query user
tscon 3 dest:console







