攻防世界HITBGSEC CTF 2017 - arrdeepee (Misc)
Arrdeepee
题目描述:
我们某一个box被pwn了。在检查过程中,我们发现了一个叫mimikatz的东西,我们以前没有安装过,所以我们清除了,并且重新安装了box。但是,我们忘记备份我们的flag文件了。幸运的是,我们有一个攻击者网络流量捕获。你可以帮我们恢复出flag文件吗?

流量分析,废话不多说,直接开始.
发现大量tls,同时还有较为罕见的rdp流量,没接触过,试试.
我们知道rdp流量中 TPKT 是 RDP 的传输封装层,同时默认端口:TCP 3389, 这种情况下如果没有TPKT流量,就需要wireshark对协议进行解析:

将从59921端口发往3389端口的TCP协议解析为TPKT协议,就可以看到了.

那这时我们看一下比较有嫌疑的RDP流量,发现其被TLS加密了,这时我们的目的就变成了寻找key.

那么key就大概率出现在UDP流量包中了,根据协议分级统计,发现UDP占比还是很高的.

我们追踪一下UDP的流量包.

大致看一下,发现并不是常见文件,但是仔细观察不难发现tss,key等字样,查阅资料:
1 | |
TSSE = Terminal Services Security
EcKeySet10 = KeySet 标识
→ CredSSP / RDP 安全握手数据
1 | |
这段 hex 属于 CredSSP / NTLM / TLS over RDP 流量中的 ASN.1 编码结构,常见于:
✔ RDP 握手
✔ NTLMSSP AUTH
✔ 公钥传递(Public Key Authentication)
✔ 加密提供程序标识(Crypto Provider Name)
特别是:
Microsoft Strong Cryptographic Provider→ Windows 默认加密提供器名称TSSEcKeySet10→ RDP/CredSSP 密钥交换结构总的来说, 这无疑就是我们需要寻找的关键key所在文件.
将这段数据完整dump下来.

进一步分析,首先丢进随波逐流里看看.


1: Certificate in DER format (x509 v3), header length: 4, sequence length: 2376
2: Certificate in DER format (x509 v3), header length: 4, sequence length: 1466
3: Private key in DER format (PKCS header length: 4, sequence length: 860)
✔ Binwalk 检测到:
项 类型 格式 长度说明
1 证书 X.509 v3 DER Sequence 2376 bytes
2 证书 X.509 v3 DER Sequence 1466 bytes
3 私钥 Private Key (PKCS#1 / PKCS#8) DER Sequence 860 bytes
也就是说,文件里包含:
🟦 两份证书(很可能是:服务器证书中间证书 or 客户端证书) 🟥 一份私钥
那么显然我们需要将私钥提取,接下来开始提取工作.
这里我们用openssl进行解密提取,

1 | |
OpenSSL 提示:
1 | |
这里的密码说是题目描述中的mimikatz,输入之后即可拿到私钥文件. (关于mimikatz会有另一文章介绍).
私钥文件内容:

很明显是RSA私钥的标准格式.
我们进行私钥解密加密流量协议.
我这里直接用命令行对第七层进行解密出的.
tshark -r "rdp.pcap" -d "tcp.port==3389,tls" -o "tls.keys_list:0.0.0.0,0,tpkt,private.key" -o "tpkt.tcp.port:3389" -U "OSI layer 7" -F "pcap" -w "rdp_dec.pcap"

解密成功!这里就可以看到大量RDP流了.
之后的步骤我也没见过,总的就是重放一下中间人攻击,因为官方用的工具十年前的版本,无人问津了,包括会出现各种兼容性,库等等问题,所以这里求助大佬得知了一个工具——pyrdp
具体想了解使用教程和原理的可以看看这个老外的一个教程:
PyRDP: Remote Desktop Protocol MITM for Purple Teamers - Black Hat Arsenal 2022
接下来我们看一下我们的题目,即使是pyrdp这个工具在没有具体的教程的情况还是非常的难用.
我们进行简单的一个命令对解密的流量包文件进行验证,如果没有解密成功就会报错unknown tls.
1 | |

1 | |
这里我当时不太会使用导致直接用pyrdp-convert命令进行对rdp还原为mp4文件,但是仅仅还原视频文件没什么用,需要视频中的输入信息(即剪切板信息).

但是由于pyrdp的限制, pyrdp-player(可以UI图形化) 重放文件时,文件格式必须为pyrdp(如果不转换直接用player进行重放会出现内存报错),但是在转换时老是报错,无奈我这里只能使用mcp(trae)进行了对工具源码进行篡改(似乎也增添了一个扩展),使其可以被自动转换为pyrdp文件进行重放.

可以看到转换成功,所以说在功能性的开发上,mcp还是具有很大的优势和解决问题的能力的.

这样的话就轻松多了,整个过程最复杂头疼的还是这个工具.
之后就是一个base64加密了一个加密压缩包的元数据,逆向解密一下就行了,base64编码和压缩包密码都在剪切板的信息里了.
接下来就一路到底拿到flag.




○( ^皿^)っHiahiahia…
- Title: 攻防世界HITBGSEC CTF 2017 - arrdeepee (Misc)
- Author: HuAmI
- Created at : 2025-11-26 12:12:57
- Updated at : 2025-11-27 09:33:58
- Link: https://redefine.ohevan.com/2025/11/26/Misc-HITBGSEC CTF 2017-arrdeepee/
- License: This work is licensed under CC BY-NC-SA 4.0.