RDP连接降级攻击以及规避方法解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

如果终端服务器(Terminal Servers)配置不正确,那么RDP(Remote Desktop Protocal,远程桌面协议)连接就可能会面临降级攻击的危险。在这篇文章中,我们会使用一个名为rdp-downgrade.py的POC工具来演示降级攻击。

RDP安全层

在讨论降级攻击之前,我们需要明白,所谓的降级究竟从什么级别降到什么级别。

在RDP协议中有下面三个可用的安全层。都可以在Terminal Server终端服务器上进行配置。

Classic RDP Protocol–在tscc.msc配置工具中,它又叫“RDP Security Layer”,协议说明(见PDF的40页)则将之称为PROTOCOL_RDP。

SSL–GUI界面中就被称作“SSL”或“SSL(TLS 1.0)”,协议说明里面则称之为PROTOCOL_SSL。

CredSSP–当选中“Network Layer Authentication”(网络层认证)选项时,也就有了响应的功能。它也使用了SSL,在协议规格中描述为PROTOCOL_HYBRID。

这里面第一个选项是不安全的。如果协商后使用这个协议,连接就比较容易遭受中间人攻击。实施这一攻击的人可以看到客户端和服务器之间传递的所有输入信息和数据。我们的目标就是要降级到这个协议之上。

剩下的两个选项都使用了SSL封装,就安全多了。我们就是从这两个协议降级。

怎么才能知道连接使用了哪个安全层

可以利用终端服务客户端mstsc.exe的警告信息来识别使用了什么协议。

Classic RDP

提示不能认证服务器的警告信息,在上面还提到了中间人攻击。

  Classic RDP连接的警告

SSL

如果你没有配置主机信任RDP服务器的SSL证书,你会看到下面的证书警告:

  (Non-CredSSP)SSL连接的警告

CredSSP(NLA + SSL)

你会收到一个输入用户名和口令的弹出窗口。而Classic RDP和SSL都通过完整的Windows桌面来输入密码。

  NLA连接的对话框

有漏洞的配置

如果把Terminal Servers配置成“Negotiate”协商安全层,就有降级攻击的可行性。下面就是Windows 2003服务器的配置,在更新版本的Windows上也有。

  降级攻击

我们要连接至一台Windows 2003 RDP服务器,这台服务器配置为协商安全层(Negotiate)。我们连接所用的系统自然就是支持Classic RDP、SSL和NLA的Windows系统。这台服务器则只支持Classic RDP和SSL。可以预见,两者一般情况下应该会协商出双方都支持的最安全的协议:SSL。

在攻击的时候,我们对流量进行篡改,让服务器认为客户端只支持Classic RDP。至于流量拦截,我们可以用ARP欺骗或者DNS欺骗或者其它方法实现。

在连上TCP 3389端口之后,客户端(mstsc)会发送类似于下面的数据(十六进制显示):

03 00 00 13 0e e0 00 00 00 00 00 01 00 08 00 *03* 00 00 00

其中的03就表示客户端支持的协议,这个位置的值分别对应下面这些含义:

00 –只支持Classic RDP

01 –支持Classic RDP和SSL

03 –除上面两个之外,还支持CredSSP

这在协议规范的37页有描述。

我们的POC就是简单的把03换成00,让客户端和服务器最终协商出Classic RDP,而不是SSL。

用我们的工具在192.168.190.170上监听TCP 3389端口。并让它把流量转发到192.168.2.96。

$ python rdp-downgrade.py 192.168.2.96

[Proxy] Listening for connections on 0.0.0.0:3389

这个例子中,我们没有做真实的ARP欺骗攻击,直接连向了中间人。

  输入了攻击者的IP地址

在我们的POC工具里,看到了来自于RDP客户端(192.168.190.1)的连接,并且代理向目标服务器发起了连接。

[Proxy] Incoming connection from 192.168.190.1:58715

[Proxy] New outgoing request to 192.168.2.96:3389

[Proxy] Connected

接下来,我们看到客户端发送了19个字节,注意靠近数据末尾的03,POC工具将其识别了出来,并提示信息告诉我们,已经将03改成00。

[From 192.168.190.1] Received 19 bytes

0000 03 00 00 13 0E E0 00 00 00 00 00 01 00 08 00 03 ................

0010 00 00 00 ...

[From 192.168.190.1] Modified data to downgrade connection

接着,我们不做任何更改就可以自由地查看流量了:

[From 192.168.2.96] Received 19 bytes

0000 03 00 00 13 0E D0 00 00 12 34 00 02 00 08 00 00 .........4......

0010 00 00 00 ...

...snip...

mstsc会显示Classic RDP连接的警告框,这就表明降级攻击成功了。这个警告对话框,我们在前面提到Classic RDP的时候就已经见过了。

  Classic RDP连接的警告信息

结论

通过上面的攻击过程,我们当然建议不要将终端服务器的安全层配置成“Negotiate”协商,而是配置成使用SSL,这理论上就能有效阻止上面这样的降级攻击了。





====================================分割线================================


本文转自d1net(转载)

目录
相关文章
|
2月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
438 89
|
1月前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
105 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
7天前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
3月前
|
存储 Java 开发者
浅析JVM方法解析、创建和链接
上一篇文章《你知道Java类是如何被加载的吗?》分析了HotSpot是如何加载Java类的,本文再来分析下Hotspot又是如何解析、创建和链接类方法的。
345 132
|
15天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
39 5
|
3月前
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
230 84
|
3月前
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
207 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
2月前
|
人工智能 监控 数据可视化
提升开发效率:看板方法的全面解析
随着软件开发复杂度提升,并行开发模式下面临资源分配不均、信息传递延迟及缺乏全局视图等瓶颈问题。看板工具通过任务状态实时可视化、流量效率监控和任务依赖管理,帮助团队直观展示和解决这些瓶颈。未来,结合AI预测和自动化优化,看板工具将更高效地支持并行开发,成为驱动协作与创新的核心支柱。
|
3月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
153 3
|
6天前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
46 29

推荐镜像

更多