前言
前一段时间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私钥文件,具体操作如下:
- 下载好最新版本的Mimikatz(https://github.com/gentilkiwi/mimikatz/releases)
- 把Mimikatz放到RDP服务器里,命令行执行Mimikatz.exe
- 运行下面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),真让人头大。
- 通过
- 未通过
0 投票者