概念验证远程桌面(RDP)会话劫持实用程序

科技   2024-12-31 13:48   广东  

SharpRDPHijack

Sharp RDP Hijack 是一个概念验证的 .NET/C# 远程桌面协议 (RDP) 会话劫持实用程序。

背景

RDP 会话劫持是一种后利用技术,用于控制(强制)断开的交互式登录会话。该技术在Mitre ATT&CK T1563.002 - 远程服务会话劫持:RDP 劫持中有描述。

笔记

  • SharpRDPHijack.cs 在 .NET Framework v.4.8(以及可能的更早版本)下的 Visual Studio 2022 中编译。

  • TS/RDP 会话查询可能需要根据目标机器的权限。

  • 会话劫持需要提升的(管理员)上下文才能连接到另一个会话。

  • 除非知道目标会话用户的密码,否则需要 NT AUTHORITY\SYSTEM 上下文来控制会话。如果没有提供密码,SharpRDPHijack 将(尝试)冒充 NT AUTHORITY\SYSTEM。

  • 与以前的操作系统版本相比,Windows 2019+ Server 会话劫持表现出有趣的行为。劫持重定向到已激活的 RDP 会话的会话后,Windows 登录屏幕会提示输入用户的密码/凭据。如果重定向到控制台会话,则此重定向成功且无缝。利用 --shadow 选项和 --console 选项尝试通过 RDP 阴影连接到会话。

  • 一些人询问了这个实用程序的功能/必要性,因为您可以使用 tscon.exe 或 Mimikatz TS 执行相同的操作。编写此 POC 的目的是更好地了解 Win32 API 级别(更具体地说是 Wtsapi32)发生的事情,并拥有一个更简单的选项来连接到其他会话(最好使用 C#)。在此实现中,执行繁重工作的两个函数/方法是WTSConnectSession和WTSDisconnectSession。

  • 潜在的优势在于,此实用程序可以逃避针对 tscon.exe + 支持命令使用的特定检测分析。链接资源页面中的防御指南对于解决此技术的滥用(例如,在组策略中超时后注销断开连接的会话)以及实施域管理员登录弹性最佳实践非常有用,以最大限度地减少域暴露,其中非 DA 帐户在 DA 使用的计算机上拥有管理员权限。

用法

[*] Parameters:
[*] A proof-of-concept Remote Desktop (RDP) session hijack utility
    - For session hijacking, this utility must be run in an elevated context to connect to another session
    - If a password is not specified, NT AUTHORITY\SYSTEM is impersonated
    - For session query, admin privileges or "Remote Desktop Users" group membership is required on the target machine

[*] Parameters:
    --tsquery=<host> : Query a host to identify RDP/TS session information (not required for other switches)
    --session=<ID> : Target session identifier
    --password=<User's Password> : Session password if known (otherwise optional - not required for disconnect switch)
    --console : Redirect session to console session instead of current (active) session
    --shadow : Shadow an active session (experimental)
    --disconnect : Disconnect an active (remote) session

[*] Example Usage 1: Impersonate NT AUTHORITY\SYSTEM to hijack session #6 and redirect to the current session
    SharpRDPHijack.exe --session=6

[*] Example Usage 2: Impersonate NT AUTHORITY\SYSTEM to hijack session #2 and redirect to the console session
    SharpRDPHijack.exe --session=2 --console

[*] Example Usage 3: Hijack Remote Desktop session #4 with knowledge of the logged-on user'
s password
    SharpRDPHijack.exe --session=4 --password=P@ssw0rd

[*] Example Usage 4: Disconnect active session #3
    SharpRDPHijack.exe --session=3 --disconnect

[*] Example Usage 5: Query the local host for RDP/TS session information
    SharpRDPHijack.exe --tsquery=localhost

[*] Example Usage 6: Shadow active session #3
    SharpRDPHijack.exe --session=3 --shadow

[*] Example Usage 7: Shadow inactive session #2 by redirecting the session to the console
    SharpRDPHijack.exe --session=2 --shadow --console

具有防御性考虑的资源

  • 红队实验 | T1076:使用 tscon 劫持 RDP 进行横向移动

    https://ired.team/offensive-security/lateral-movement/t1076-rdp-hijacking-for-lateral-movement

  • Kevin Beaumont | RDP 劫持 - 如何透明地劫持 RDS 和 RemoteApp 会话以在组织内移动

    https://doublepulsar.com/rdp-hijacking-how-to-hijack-rds-and-remoteapp-sessions-transparently-to-move-through-an-da2a1e73a5f6

项目地址:   

https://github.com/bohops/SharpRDPHijack


感谢您抽出

.

.

来阅读本文

点它,分享点赞在看都在这里

Ots安全
持续发展共享方向:威胁情报、漏洞情报、恶意分析、渗透技术(工具)等,不会回复任何私信,感谢关注。
 最新文章