Windows RDP那些事儿

前言

正文

连接记录

当前用户的的RDP连接记录保存在注册表的一下位置:

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers

可以通过以下powershell命令查看当前用户的所有连接记录地址

dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name

也可以在cmd中执行:

powershell -Command "&{dir 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers' -Name}"

通过powershell查看指定地址的连接用户名

(Get-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.0.30").UsernameHint

也可以使用ps1脚本进行遍历:

$RegPath = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\"$QueryPath = dir $RegPath -Nameforeach($Name in $QueryPath){       Try      {          $User = (Get-ItemProperty -Path $RegPath$Name -ErrorAction Stop | Out-Null).UsernameHint            Write-Host "Server:"$Name            Write-Host "User:"$User"`n"        }        Catch          {        Write-Host "No RDP Connections History"        }}

所有脚本:https://github.com/3gstudent/List-RDP-Connections-History

凭据

查看 Windows凭据: 使用 win + s 调出搜索框,输入 凭据管理器,选择 windows凭据

凭据默认是保存在磁盘的一下位置:

C:\Users\<用户名>\AppData\Local\Microsoft\Credentials

image-20220803113100012

图示显示目录下不存在文件,是因为文件被隐藏了,我们使用dir /a 查看一下.

image-20220803113859393

当然,我们也可以通过cmd 查看当前主机上保存的连接凭据

cmdkey /list
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

不过可以看到凭据是加密了的,

我们尝试使用 Mimikatz 导出远程桌面的凭据.

RDP 劫持

原理:

系统管理员和用户通常可以通过 RDP 远程桌面登录指定服务器 3389 远程桌面,而攻击者可以通过可以特权提升至 SYSTEM 权限的用户,可以在不知道其他用户登录凭据的情况下,用来劫持其他用户的 RDP 会话,该漏洞在 2017 年由以色列安全研究员 Alexander Korznikov 在个人博客中披露。利用条件只需要获取机器 SYSTEM 权限执行 tscon 命令。

Windows系统中,如果多用户同时登录,则会产生多个会话.

我们可以通过以下命令查看当前系统存在的登录会话(有哪些用户在线)

query user

假设存在以下结果:

图片来自https://cloud.tencent.com/developer/article/1838765?from=article.detail.1861370

在知道用户buuny密码的情况下,可以使用 tscon进行登录用户切换:

tscon 2 /PASSWORD:Bunny2021

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

而这里所讲的特殊的利用方法便是在 SYSTEM 权限下直接执行 tscon 会话切换命令:

特别注意的是,即使远程连接的用户关闭了远程连接窗口,也不会劫持该回话,只是在后台显示 “已断开连接”(Disconnected):

此时,仍能在 SYSTEM 权限下通过 tscon 实现未授权连接

当我们拥有system权限后,直接使用以下命令,就能直接切换了登陆了.

tscon 2

参考

https://cloud.tencent.com/developer/article/1861370

https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E8%8E%B7%E5%BE%97Windows%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E8%BF%9E%E6%8E%A5%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95

https://cloud.tencent.com/developer/article/1838765

https://www.mdsec.co.uk/2019/11/rdpthief-extracting-clear-text-credentials-from-remote-desktop-clients/