首页
社区
课程
招聘
[分享]如何使用Wireshark解密Windows远程桌面(RDP)协议
2019-10-23 19:38 20516

[分享]如何使用Wireshark解密Windows远程桌面(RDP)协议

2019-10-23 19:38
20516

前言

前一段时间的CVE-2019-0708 ( Keep Blue )这个漏洞非常引人关注, 如果想要分析这类RDP协议漏洞,那么对RDP通信细节的了解必不可少,由于RDP协议是加密的,直接使用Wireshark出来的是一对乱码,那有没有办法不乱码,看到RDP通信裸数据包呢?

 

当然是有的,原理是这样的:由于RDP协议通常会使用TLS/SSL加密,我们知道,解密TLS/SSL只要有私钥即可,分析协议只需要在本地虚拟机里面即可操作,那么我们去虚拟机里面拿私钥,然后放到Wireshark里面就可以解密了。具体的过程如下,有3个步骤。

步骤1:获取.pfx文件

.pfx文件就是私钥文件,但是Windows绝对不会提供任何导出方法,原因你懂的,这个时候我们就只能使用大神们开发的神器来帮忙了。

 

我们要用什么神器来导出私钥文件呢?答案是Mimikatz,没想到吧?Mimikatz不仅可以查看内存中的Windows密码,也可以用来导出Windows私钥文件,具体操作如下:

  1. 下载好最新版本的Mimikatz(https://github.com/gentilkiwi/mimikatz/releases)
  2. 把Mimikatz放到RDP服务器里,命令行执行Mimikatz.exe
  3. 运行下面3条命令
privilege::debug
crypto::capi
crypto::certificates -systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE -store:"Remote Desktop" /export


 

执行命令以后,我们就拿到.pfx文件了。(如果不成功,注意系统有没有开启UAC或者管理员权限问题)接下来我们开始下一步。

步骤2:把.pfx转换成.pem

虽然我们已经获取了私钥.pfx文件,但是不能直接使用,因为Wireshark只支持.pem文件,所以我们还需要转换一下文件格式,可以使用Openssl来转换格式。

 

一般电脑里面不会安装Openssl,直接去Openssl官网/github只有源码下载,所以需要去下载一个已经编译好的Windows版本即可,下载地址:https://slproweb.com/products/Win32OpenSSL.html

 

我下载安装的是Win64 OpenSSL v1.1.0L版本,安装在C盘。(如果运行不了,还需要安装VC运行库。)安装好了Openssl以后,在命令行运行以下命令,转换文件格式:

C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -in D:\win.pfx -out D:\mykey.pem –nodes

把.pfx文件放在D盘根目录操作比较方便,因为Openssl不支持相对路径。

 

运行上面的命令以后,会提示需要密码( password ),输入mimikatz即可,注意:密码输入没有回显,所以直接粘贴/回车就OK。

 

Nice,现在我们有.pem文件了,开始下一步。

步骤3:配置Wireshark

打开Wireshark,菜单栏选择:编辑 -> 首选项 -> Protocols -> TLS -> RSA key list -> 点击Edit

 

 

然后像下面这样设置即可:

  • IP address = RDP服务器地址(192.168.1.155)
  • port = 3389
  • protocol = 小写(tpkt)
  • Key file = 选择.pem文件地址
  • Password = 空。

好了,准备工作全部完成,我们来分析分析,拿出CVE-2019-0708 的POC测试下。

 

 

解密成功,看见CVE-2019-0708漏洞触发关键点MS_T120虚拟频道了没?

 

PS:RDP通信单单连接序列就使用了四个协议:TPKT、X224、MCS(T.125)和GCC(T.124),真是让人头大。

 


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞3
打赏
分享
最新回复 (14)
雪    币: 19584
活跃值: (60093)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2019-10-24 07:58
2
0
感谢分享!
雪    币: 2271
活跃值: (9988)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
jmpcall 3 2019-10-24 09:57
3
0
棒!
雪    币: 2271
活跃值: (9988)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
jmpcall 3 2019-10-24 10:01
4
0
用fiddler可以抓到不?
雪    币: 760
活跃值: (69)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
肯特君 2019-10-24 10:06
5
0
xinpoo 用fiddler可以抓到不?
fiddler只能抓HTTPS啊~
雪    币: 2271
活跃值: (9988)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
jmpcall 3 2019-10-24 10:24
6
0
肯特君 fiddler只能抓HTTPS啊~
所以可以试一下,看看会不会仍然解密tls层负载。
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Kikko 2019-10-24 10:42
7
0
问一个不相关的问题,HTTPS流量有证书能还原明文吗?谢谢
雪    币: 2044
活跃值: (237)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
dats 2019-10-25 01:45
8
0
mark.感谢分享
雪    币: 760
活跃值: (69)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
肯特君 2019-10-25 11:37
9
0
Kikko 问一个不相关的问题,HTTPS流量有证书能还原明文吗?谢谢
原理上讲,肯定是可以的~  如果使用fiddler,用它的根证书,无需服务器私钥也可以解密。
雪    币: 119
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
英雄主义山总 2019-12-13 23:05
10
0
有联系方式交流吗?
雪    币: 3148
活跃值: (244)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
MSA_Li 1 2019-12-16 09:13
11
0
90sec上一样的文章是贴主吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
豆小兜 2020-8-13 17:57
12
0
斗胆请教一下大神,您有遇到过同时产生三个密钥.pxf文件的情况吗? 我按您分享的步骤进行操作,生成了三个.pxf文件,最后在wireShark中也未能成功解析出加密数据
雪    币: 1
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
orangice 2021-6-30 16:11
13
1

雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
yuchen198 2023-12-11 18:17
14
0
大佬们真会玩
雪    币: 199
活跃值: (1332)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_一叶_733 2023-12-12 09:18
15
0
2.把Mimikatz放到RDP服务器里,命令行执行Mimikatz.exe  ----------这个具体是怎样操作?
游客
登录 | 注册 方可回帖
返回