RDP连接建立过程,在Connection Initiation后,RDP客户端和服务端将进行双方基础配置信息交换,也就是basic settings exchange阶段。在此阶段,将包含两条消息Client MCS Connect Initial PDU和Server MCS Connect Response PDU,示例如下。
这里Wireshark并未对TPKT协议做具体解析,我们参照RDP Open Specifications文档解释。
(1)Client MCS Connect Initial PDU
字段名 | 说明 |
tpkHeader | 4字节,包括TPKT版本以及数据包长度 |
x224Data | 3字节,包括长度、PDU类型、EOT |
mcsCi | 可变长度,通过userdata封装 GCC Conference Create Request数据 |
gccCCrq | 可变长度,GCC Conference Create Request |
ClientCoreData | 可变长度,类型CS_CORE 0xC001。包括RDP客户端版本、客户端图形显示设备、输入设备、客户端桌面信息以及serverSelectedProtocol(在上个阶段从server端接受到) |
ClientSecurityData | 12字节,CS_SECURITY 0xC002。当使用标准RDP安全时本字段有效,包括客户端支持的数据完整性和机密性算法信息,如128-bit安全强度的RC4 |
ClientNetworkData | 可变长度,CS_NET 0xC003 |
ClientClusterData | 12字节,CS_CLUSTER 0xC004 |
ClientMonitorData | 可变长度,CS_MONITOR 0xC005 |
ClientMessageChannelData | 可选,CS_MCS_MSGCHANNEL 0xC006 |
ClientMultitransportChannelData | 可选,CS_MULTITRANSPORT 0xC00A |
clientMonitorExtendData | 可变长度,CS_MONITOR_EX 0xC008 |
(2)Server MCS Connect Response PDU
字段名 | 说明 |
tpktHeader | 4字节,包括TPKT版本以及数据包长度 |
x.224Data | 3字节,包括长度、PDU类型、EOT |
mcsCrsp | 可变长度,通过userdata封装 GCC Conference Create Response数据 |
gccCCrsp | 可变长度,GCC Conference Create Response |
serverCoreData | 可变长度,类型SC_CORE (0x0C01)。包括服务端支持RDP版本、clientRequestedProtocols(在上个阶段从client接收到) |
serverNetworkData | 可变长度, |
serverSecurityData | 可变长度,类型SC_SECURITY (0x0C02)。包括选定的数据机密性和完整性保护算法(若使用加强加密方式则为ENCRYPTION_METHOD_NONE )、加密保护级别、随机数长度及随机数、数字证书长度及数字证书。 |
serverMessageChannelData | 可选,类型SC_NET 0x0C03 |
serverMultitransportChannelData | 可选,类型SC_MULTITRANSPORT (0x0C08) |