Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pyrdp — 用于Python的RDP中间人(mitm)攻击库,能够实时或事后查看连接 | Kitploit
工具/GitHubGitHub/gosecure/pyrdp
漏洞利用网络取证信息收集网络安全恶意软件分析CTF渗透测试学习与教育红队事件响应Payload 开发实验室与实践
1.8k272414个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubgosecure/pyrdp

pyrdp

用于Python的RDP中间人(mitm)攻击库,能够实时或事后查看连接

查看仓库网站

PyRDP

Tests Black Hat Arsenal 2019 Black Hat Arsenal 2021 Black Hat Arsenal 2022

PyRDP 是一个使用 Python 编写的远程桌面协议 (RDP) 中间人 (MITM) 工具和库。

PyRDP Logo

它包含以下几个工具:

  • RDP 中间人攻击
    • 记录连接时使用的明文凭据或 NetNTLM 哈希值
    • 窃取复制到剪贴板的数据
    • 保存通过网络传输的文件副本
    • 后台爬取共享驱动器并将其本地保存
    • 保存连接回放,以便日后查看
    • 在新连接上自动运行控制台命令或 PowerShell 负载
  • RDP 播放器:
    • 查看来自 MITM 的实时 RDP 连接
    • 查看 RDP 连接回放
    • 在隐藏操作的同时控制活跃的 RDP 会话
    • 在活跃会话期间列出客户端映射的驱动器并从其中下载文件
  • 转换工具:
    • 将 RDP 回放转换为视频,便于共享
    • 将 RDP 回放转换为序列化的 JSON 格式低级事件序列
    • 将 PCAP 转换为回放、视频或 JSON 事件
    • 将解密的 PCAP(L7 PDU)转换为回放、视频或 JSON 事件
  • RDP 证书克隆器:
    • 创建与 RDP 服务器证书具有相同字段的自签名 X509 证书

PyRDP 于 2018 年推出,当时我们演示了能够捕获真实的威胁行为者。该工具的开发同时考虑了渗透测试和恶意软件研究的使用场景。

PyRDP Player Replaying an RDP session

目录

  • 支持的平台
  • 安装
    • 使用 pipx
    • 使用 Docker 镜像
  • 使用 PyRDP
    • 使用 PyRDP 中间人工具
    • 使用 PyRDP 播放器
    • 使用 PyRDP 证书克隆器
    • 使用 PyRDP 转换工具
    • 配置 PyRDP
    • 高级用法
    • Docker 特定用法说明
  • PyRDP 掌故
  • 为 PyRDP 做贡献
  • 致谢

支持的平台

PyRDP 应适用于 Python 3.7 及以上版本,支持 x86-64、ARM 和 ARM64 平台。

该工具已在 Linux(Ubuntu 20.04、22.04)、Raspberry Pi 和 Windows 上的 Python 3.7 上测试通过。尚未在 macOS 上测试。

安装

推荐两种安装方式:使用 pipx 或使用 Docker 容器。从源码安装或自行构建 Docker 容器的方法在开发文档中有介绍。

使用 pipx

依赖项

Linux

首先,确保安装必要的包(以下针对 Ubuntu 22.04 列出,其他发行版可能需要调整)。我们提供两种类型的安装:完整版和精简版。根据您的使用场景安装相应的依赖项。```sh

Full install (GUI, convert captures to video)

sudo apt install python3 python3-pip python3-venv
build-essential python3-dev openssl
libegl1 libxcb-cursor0 libxkbcommon-x11-0 libxcb-icccm4 libxcb-keysyms1
libnotify-bin
libavcodec58 libavdevice58

Slim install (no GUI, no conversion to video possible)

sudo apt install python3 python3-pip python3-venv
build-essential python3-dev git openssl

这将安装运行PyRDP所需的依赖项。如果选择不安装GUI或视频转换依赖项,则将无法使用
`pyrdp-player`(除非使用无头模式 `--headless`)或通过 `pyrdp-convert` 生成视频输出。

请确保已安装 `pipx`。在Ubuntu 22.04上:```sh
python3 -m pip install --user pipx
python3 -m pipx ensurepath
Windows

请确保已安装 Python。 在 Windows 11 上,Windows 商店版 Python 对我而言无法正常工作。 我们建议通过 Scoop 安装 Python。```sh scoop install python # if not installed already scoop install pipx pipx ensurepath

注销并重新登录(以更新您的PATH)。

##### 其他操作系统

要在其他操作系统上安装 `pipx`,请参见此处:<https://github.com/pypa/pipx#install-pipx>

#### 安装

为了获得完整的PyRDP体验,包括QT图形界面以及将捕获转换为视频的能力:```sh
pipx install pyrdp-mitm[full]

对于设计在无头环境(服务器、树莓派)中运行的紧凑版本:```sh pipx install pyrdp-mitm

准备好开始吧!请参阅[使用说明](#using-pyrdp)。

### 使用 Docker 镜像

如果已安装并正常使用 Docker,这是最简单的安装方法。```sh
docker pull gosecure/pyrdp:latest

作为替代,我们提供了一个更精简的镜像,不含GUI和ffmpeg依赖项。这是在ARM平台上唯一提供的镜像。```sh docker pull gosecure/pyrdp:latest-slim

您可以在 [gosecure/pyrdp DockerHub 页面](https://hub.docker.com/r/gosecure/pyrdp/tags) 上找到我们所有 Docker 镜像的列表。
`latest` 标签指向最新的发布版本,而 `devel` 标签是根据我们的 `main` 分支构建的 Docker 镜像。

## 使用 PyRDP

### 使用 PyRDP 中间人攻击工具

使用 `pyrdp-mitm <ServerIP>` 或 `pyrdp-mitm <ServerIP>:<ServerPort>` 运行 MITM。

假设您有一个 RDP 服务器运行在 `192.168.1.10`,并在端口 3389 上侦听,您将运行:```sh
pyrdp-mitm 192.168.1.10

首次运行MITM时,会在当前工作目录下创建一个名为 pyrdp_output/ 的目录。
以下是该目录的示例布局:```sh pyrdp_output/ ├── certs │   ├── WinDev2108Eval.crt │   └── WinDev2108Eval.pem ├── files │   ├── e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c │   ├── b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 ├── filesystems │   ├── romantic_kalam_8214773 │   │   └── device1 │   │   └── clipboard | └── priv-esc.exe -> ../../../files/b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 │   └── happy_stonebraker_1992243 │   ├── device1 │   └── device2 | └── Users/User/3D Objects/desktop.ini -> ../../../../../../e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c ├── logs │   ├── crawl.json │   ├── crawl.log │   ├── mitm.json │   ├── mitm.log │   ├── mitm.log.2021-08-26 │   ├── ntlmssp.log │   ├── player.log │   └── ssl.log └── replays ├── rdp_replay_20231214_01-20-28_965_happy_stonebraker_1992243.pyrdp └── rdp_replay_20231214_00-42-24_295_romantic_kalam_8214773.pyrdp

* `certs/` 包含生成的证书,这些证书以证书的 `CN` 作为文件名存储
* `files/` 包含所有捕获的文件,并通过使用内容的 SHA-256 哈希作为文件名进行去重存储
* `filesystems/` 包含按会话 ID 分类的目标文件系统的重建。
   为了节省相似会话的空间,文件是指向 `files/` 下实际文件的符号链接
* `logs/` 包含各种日志,大多数以 JSON 和纯文本两种格式存储:
  * `crawl`: 文件爬虫日志
  * `mitm`: 主 MITM 日志
  * `ntlmssp.log`: 捕获的 NetNTLM 哈希
  * `player.log`: 播放器日志
  * `ssl.log`: 以与 Wireshark 兼容的格式存储的 TLS 主密钥
* `replays/` 包含所有先前记录的 PyRDP 会话,文件名中包含时间戳和会话 ID

#### 指定私钥和证书

如果密钥生成失败,或者您想使用自定义密钥和证书,您可以使用
`-c` 和 `-k` 参数:```sh
pyrdp-mitm 192.168.1.10 -k private_key.pem -c certificate.pem
Monster-in-the-Middle Network Level Authentication (NLA) 连接

网络级别身份验证(NLA)是自 Windows Vista 起可用的一项安全功能,它为 RDP 连接增加了安全性。 NLA 依赖于新的安全支持提供程序 CredSSP,有时也以该名称称呼。 强制实施 NLA 的服务器更难受到攻击。 有三种不同的策略可供使用:

  • 获取服务器的证书和私钥
  • 使用主机重定向功能
  • 捕获客户端的 NetNTLMv2 哈希并破解它
Monster-in-the-Middle NLA

如果我们拥有服务器的证书和私钥,即使强制实施了 NLA,我们也能成功地对 RDP 进行中间人攻击(MITM)。 我们在 1.0 版本发布博客文章中记录了此攻击。 提取 RDP 证书和私钥的说明可在我们的 GitHub 上找到。

拥有证书和私钥后,您只需在 pyrdp-mitm 命令行中添加以下内容,将身份验证设置为 ssp:```sh --auth ssp -c <certificate.pem> -k <private-key.pem>

这将使得拦截启用NLA的连接成为可能。

###### 当服务器强制NLA时的备用主机重定向

![解释NLA重定向的图示](https://assets.kitploit.com/production/public/readmes/2804/e74aa87cc1cfb892b9070fe387c9530e4e99973b2d780b72f6c118abf1ec8a5b.png)

当PyRDP连接到目标RDP服务器时(1),如果该服务器强制NLA,则PyRDP(2)会替换连接,转而连接到您选择的另一台主机(3)。

例如,这可用于重定向到一个已知不强制NLA的服务器,甚至重定向到攻击者控制的虚拟机。

要启用此功能,请按如下方式指定备用主机的地址和端口:```sh
--nla-redirection-host 192.168.1.12 --nla-redirection-port 3389

该功能在 PyRDP 1.1.0 中引入。

捕获 NetNTLMv2 哈希

NetNTLMv2 哈希对攻击者很有用,因为它们相对容易破解,从而使攻击者能够利用合法的 RDP 访问或尝试凭证填充。 从 1.1.0 版本开始,PyRDP 能够通过 NLA (CredSSP) 连接捕获客户端的 NetNTLMv2 哈希,方法是进行协商并捕获 NTLMSSP 认证消息。 在 1.2.0 版本中,该支持得到扩展,即使我们没有服务器的证书和私钥也能工作,这意味着连接无法成功进行中间人攻击 (MITM)。 这与 Responder 对 RDP 所做的类似。 捕获到的 NetNTLMv2 哈希可以在 ntlmssp.log 日志文件中找到,其格式使得 John The Ripper 或 hashcat 等破解工具可以读取它。

该技术已在一篇博客文章中详细描述:捕获 RDP NetNTLMv2 哈希:攻击细节与技术操作指南

此功能与 --auth ssp 兼容,但与 --nla-redirection-host 不兼容。

连接到 PyRDP 播放器

如果你想通过 PyRDP 播放器查看实时的 RDP 连接,你需要使用 -i 和 -d 参数指定播放器监听的 IP 地址和端口。注意:端口参数是可选的,默认端口为 3000。```sh pyrdp-mitm 192.168.1.10 -i 127.0.0.1 -d 3000

##### 当MITM在服务器上运行时连接到PyRDP查看器
下载工具