RDP协议流程详解(一)Connection Initiation阶段

        Connetction Initiation是RDP连接的第一个阶段,具体包含两个消息RDP Negotiation Request和RDP Negotiation Response,下面结合协议数据包详细分析。

        (1)RDP Negotiation Request

        从数据包可以清晰看到此时的协议栈依次是TCP-TPKT-X.224-RDP。其中TCP协议非常普遍,这里不详细说了。TPKT协议的全称是"Transport Protocol Data Unit",它在RDP中负责对RDP数据进行分割、传输和重组。TPKT协议主要用于在网络中可靠地传输RDP数据。TPKT协议具体定义了如何将RDP数据分割成数据单元(称为数据包)以及如何在网络中传输这些数据包。每个TPKT数据包包含一个特定的头部,用于标识包的开始和结束,并提供错误检测和纠正机制。TPKT头部中包含了数据包长度、版本号和其他必要的控制信息。TPKT示例如下,包含版本和长度。

        X.224协议是一种用于远程桌面协议(RDP)中的传输层协议。它提供了在网络中建立和管理RDP会话的功能,是RDP协议栈中的关键组成部分。X.224负责连接的建立和维护、可靠的数据传输、错误检测和纠正、会话管理以及安全性支持等功能。比如,X.224协议可以与其他安全协议结合使用,如SSL(Secure Sockets Layer)或TLS(Transport Layer Security),以提供传输层的数据加密和身份验证机制。通过这些安全协议,X.224可以确保RDP会话的机密性和保密性,示例如下。

        下面我们来重点分析RDP_NEG_REQ消息。

        RoutingToken/Cookie是可选字段,如果是RoutingToken则是用来作为负载均衡(load balancing),如果是Cookie则具体形式为“Cookie: mstshash=IDENTIFIER”,Token或Cookie只能是二者选一。

        Type取值为0x01,表明消息类型为TYPE_RDP_NEG_REQ。

        Flags字段包含8位,定义为0x01:RESTRICTED_ADMIN_MODE_REQUIRED (客户端要求为restricted admin mode,如果服务端支持则发送相应空证书),0x02:REDIRECTED_AUTHENTICATION_MODE_REQUIRED (客户端要求为Remote Credential Guard模式,如果服务器支持则基于CredSSP的重定向鉴别),0x08:CORRELATION_INFO_PRESENT(这里指示是否有rdpCorrelationInfo字段)。

        Length必须是0x0008,也就是8个字节。

        requestedProtocols指示支持的安全协议,长度为4字节。定义为0x00000000:PROTOCOL_RPD(支持标准RDP安全),0x00000001:PROTOCOL_SSL(支持TLS1.0,1.1或1.2),0x00000002:PROTOCOL_HYBRID(支持CredSSP,一般这里设置为1则TLS也设置为1),0x00000004:PROTOCOL_RDSTLS(支持RDSTLS协议),0x00000008:PROTOCOL_HYBRID_EX(一般这里设置为1则PROTOCOL_HYBRID也设置为1),0x00000010:PROTOCOL_RDSAAD(支持RDS AAD Auth安全)。

        (2)RDP Negotiation Response 

        TPKT和X.224层不具体说了,重点分析RDP_NEG_RSP。

        Type取值为0x02,表明消息类型为TYPE_RDP_NEG_RSP。

        Flags字段也是8位长度,指示的是服务端的协议支持能力。

        Length必须是0x0008,也就是8个字节。

        selectedProtocol指示协商使用的安全协议类型,这里是CredSSP类型0x0000002。其他定义如下。

取值说明
PROTOCOL_RDP 0x00000000standared RDP Security
PROTOCOL_SSL 0x00000001TLS1.0 1.1 1.2
PROTOCOL_HYBRID 0x00000002CredSSP
PROTOCOL_RDSTLS 0x00000004RDSTLS协议
PROTOCOL_HYBRID_EX 0x00000008Credential Security Support Provider protocol (CredSSP)基于
Early User Authorization Result PDU
PROTOCOL_RDSAAD 0x00000010
RDS AAD Auth安全协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反序列化漏洞

原理 反序列化是对象变成可以传输的字符串。 PHP反序列化的时候,基本都是围绕着serialize(),unserialize()这两个函数 serialize() 和 unserialize() 在 PHP内部没有漏洞的,产生反序列化漏洞是因为应用程序在处理对象、魔术函数以及序列化…

mysql面试题12:讲一讲MySQL中什么是半同步复制?底层实现?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲mysql中什么是半同步复制?底层实现? MySQL中的半同步复制(Semi-Synchronous Replication)是一种复制模式,它在主服务器将数据写入到二…

10.2 调试事件获取DLL装载

理解了如何通过调试事件输出当前进程中寄存器信息,那么实现加载DLL模块也会变得很容易实现,加载DLL模块主要使用LOAD_DLL_DEBUG_EVENT这个通知事件,该事件可检测进程加载的模块信息,一旦有新模块被加载或装入那么则会触发一个通知…

k8s集群-6(daemonset job cronjob控制器)

Daemonset 一个节点部署一个节点 当有节点DaemonSet 确保全部 (或者某些) 节点上运行一个 Pod 的副本。加入集群时,也会为他们新增一个 Pod 。当有节点从集群移除时,这些Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 DaemonSet 的典型用…

Swift SwiftUI CoreData 过滤数据 1

Xcode: Version 14.3.1 (14E300c) iOS: 16 预览&#xff1a; Code: import SwiftUI import CoreDatastruct TodosSearch: View {State private var search_title "测试"FetchRequest var todos_search: FetchedResults<Todo>init() {let request: NSFetchReq…

《机器学习实战》学习记录-ch2

PS: 个人笔记&#xff0c;建议不看 原书资料&#xff1a;https://github.com/ageron/handson-ml2 2.1数据获取 import pandas as pd data pd.read_csv(r"C:\Users\cyan\Desktop\AI\ML\handson-ml2\datasets\housing\housing.csv")data.head() data.info()<clas…

Access注入---Cookie注入

Access注入----Cookie注入Access数据库&#xff08;微软&#xff09; 逐渐淘汰 &#xff08;没有库的概念&#xff0c;是表的集合&#xff09;Access没有系统自带库Cookie注入&#xff08;头注入HEAD注入的&#xff09;php中产生Cookie注入的可能性小&#xff0c;但ASP产生Cook…

代码随想录算法训练营第五十七天 | 动态规划 part 15 | 392.判断子序列、115.不同的子序列

目录 392.判断子序列思路代码 115.不同的子序列思路代码 392.判断子序列 Leetcode 思路 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]递推公式&#xff1a; 初始化&#xff1a;为0遍历顺序&#xff…

【Spring】Bean作用域和生命周期

Bean作用域和生命周期 一. Bean 的作用域1. Bean 的 6 种作⽤域&#xff1a;①. singleton②. prototype③. request④. session⑤. application⑥. websocket单例作用域(singleton) VS 全局作⽤域(application) 2. 设置作用域 二. Spring 执行流程和 Bean 的生命周期1. Spring…

【实操记录】Oracle数据整库同步至Apache Doris

本文是Oracle数据整库同步至Apache Doris实操记录&#xff0c;仅供参考 参考&#xff1a;https://cn.selectdb.com/blog/104 1、Oracle 配置 [rootnode1 oracle]# pwd /u01/app/oracle [rootnode1 oracle]# mkdir recovery_area [rootnode1 oracle]# chown -R oracle:dba re…

使用云服务器部署SpringBoot+Vue项目

一、购买云服务器并配置安全组 二、准备好前后端项目并先打包好 对于前端文件。新建文件 .env.development VUE_APP_BASEURLhttp://localhost:9090 还有新建文件 .env.production VUE_APP_BASEURLhttp://:9090 main.js 设置全局变量 $baseUrl Vue.prototype.$baseUrlproc…

【已解决】 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘.

问题描述 团队都是用mac&#xff0c;只有我自己是windows&#xff0c;启动项目一直报错 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘. 但我不能因为自己的问题去改团队配置&#xff0c;也尝试过该vscode配置默认是LF还是报错 思路 看文章vscode如何替换所有文件的…

http请求报错:406 Not Acceptable的解决办法

目录 应用场景 基本概念 解决方法 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 应用场景 接口在返回结果集的时候出现了406的报错&#xff0c;但是返回String类型不会报错&#xff0c;正常返回。 基本概念 406 Not Acceptable是一个HTTP响应状态码&…

Mesa新版来袭

Mesa 17.1.6 发布了&#xff0c;Mesa 是一个三维&#xff08;3D&#xff09;图形库的开源集合&#xff0c;其主要目标是在 Linux / UNIX 操作系统下实现各种 API&#xff08;应用程序编程接口&#xff09;和 OpenGL 规范。 它面向 3D 计算机图形&#xff0c;硬件加速 3D 渲染和…

springboot 集成 PageHelper 分页失效

前言 项目启动初期&#xff0c;在集成mybatis的分页插件&#xff0c;自定义封装了一个分页的工具类&#xff0c;方便后期项目的扩展。部分的代码如下&#xff1a; /*** 分页查询* 进行count计算** param pageNum 页数* param pageSize 每页数量* param supplier 查询操作* re…

2024级199管理类联考之数学基础(下篇)

平面几何(平均2题) 三角形(性质、特殊三角形、全等与相似) 性质 由不在同一直线的三条线段首尾依次连接所组成的图形三条边、三个内角、三个定点三角形内角和为180度,外角和为360度,多边形的外角和为360度,n多边形的内角和为(n-2)*180度一个外角等于不相邻的两个内角之和任意…

大选择核网络在遥感目标检测中的应用

摘要 论文链接&#xff1a;https://arxiv.org/pdf/2303.09030.pdf 最近关于遥感目标检测的研究主要集中在改进有向边界框的表示&#xff0c;但忽略了遥感场景中呈现的独特先验知识。这种先验知识很有用&#xff0c;因为如果没有参考足够远的上下文&#xff0c;可能会错误地检测…

华为云云耀云服务器L实例评测|部署个人在线电子书库 calibre

华为云云耀云服务器L实例评测&#xff5c;部署个人在线电子书库 calibre 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 应用场景1.3 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 calibre3.1 calibre 介绍3.2 Docker 环境搭建3.3 c…

第81步 时间序列建模实战:Adaboost回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍AdaBoost回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndr…

Boost程序库完全开发指南:1.1-C++基础知识点梳理

主要整理了N多年前&#xff08;2010年&#xff09;学习C的时候开始总结的知识点&#xff0c;好长时间不写C代码了&#xff0c;现在LLM量化和推理需要重新学习C编程&#xff0c;看来出来混迟早要还的。 1.shared_ptr 解析&#xff1a;shared_ptr是一种计数指针&#xff0c;当引…