-
-
[分享]如何使用Wireshark解密Windows远程桌面(RDP)协议
-
发表于:
2019-10-23 19:38
22888
-
[分享]如何使用Wireshark解密Windows远程桌面(RDP)协议
前一段时间的CVE-2019-0708 ( Keep Blue )这个漏洞非常引人关注, 如果想要分析这类RDP协议漏洞,那么对RDP通信细节的了解必不可少,由于RDP协议是加密的,直接使用Wireshark出来的是一对乱码,那有没有办法不乱码,看到RDP通信裸数据包呢?
当然是有的,原理是这样的:由于RDP协议通常会使用TLS/SSL加密,我们知道,解密TLS/SSL只要有私钥即可,分析协议只需要在本地虚拟机里面即可操作,那么我们去虚拟机里面拿私钥,然后放到Wireshark里面就可以解密了。具体的过程如下,有3个步骤。
.pfx文件就是私钥文件,但是Windows绝对不会提供任何导出方法,原因你懂的,这个时候我们就只能使用大神们开发的神器来帮忙了。
我们要用什么神器来导出私钥文件呢?答案是Mimikatz,没想到吧?Mimikatz不仅可以查看内存中的Windows密码,也可以用来导出Windows私钥文件,具体操作如下:
执行命令以后,我们就拿到.pfx文件了。(如果不成功,注意系统有没有开启UAC或者管理员权限问题)接下来我们开始下一步。
虽然我们已经获取了私钥.pfx文件,但是不能直接使用,因为Wireshark只支持.pem文件,所以我们还需要转换一下文件格式,可以使用Openssl来转换格式。
一般电脑里面不会安装Openssl,直接去Openssl官网/github只有源码下载,所以需要去下载一个已经编译好的Windows版本即可,下载地址:https://slproweb.com/products/Win32OpenSSL.html
我下载安装的是Win64 OpenSSL v1.1.0L版本,安装在C盘。(如果运行不了,还需要安装VC运行库。)安装好了Openssl以后,在命令行运行以下命令,转换文件格式:
把.pfx文件放在D盘根目录操作比较方便,因为Openssl不支持相对路径。
运行上面的命令以后,会提示需要密码( password ),输入mimikatz即可,注意:密码输入没有回显,所以直接粘贴/回车就OK。
Nice,现在我们有.pem文件了,开始下一步。
打开Wireshark,菜单栏选择:编辑 -> 首选项 -> Protocols -> TLS -> RSA key list -> 点击Edit
然后像下面这样设置即可:
Password = 空。
好了,准备工作全部完成,我们来分析分析,拿出CVE-2019-0708 的POC测试下。
解密成功,看见CVE-2019-0708漏洞触发关键点MS_T120虚拟频道了没?
PS:RDP通信单单连接序列就使用了四个协议:TPKT、X224、MCS(T.125)和GCC(T.124),真是让人头大。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)