maxi-schaefer/dns-keylogger

GitHub: maxi-schaefer/dns-keylogger

一个演示DNS隐蔽通道数据渗出技术的概念验证键盘记录器,将击键数据编码为Base32并通过DNS子域名查询发送到自定义DNS服务器。

Stars: 0 | Forks: 0

# 🛰️ DNS Keylogger ### 🎬 演示 ![演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/83531721e6091803.gif) ### 📖 概述 该项目展示了一个概念验证:**通过 DNS 查询渗透捕获按键记录的键盘记录器** 与传统通过 HTTP 请求或 sockets 发送数据不同,捕获的按键记录会: 1. 由 Python 键盘记录脚本在本地收集 > [logger.py](./logger.py) 2. 使用 **Base32** 进行编码 3. 作为 **DNS 子域名查询** 的一部分发送 4. 由使用 dnslib 的 **自定义 DNS 服务器** 接收 > [server.py](./server.py) 5. 解码并存储在文本文件中 该项目的目的是演示如何使用 DNS 实现隐蔽的数据渗透通道,因为 DNS 通常被防火墙和安全控制所允许。 ### ⚙️ 架构 ``` ┌───────────────┐ │ Victim Host │ │ │ │ Keylogger │ │ │ └───────┬───────┘ │ │ DNS Query ▼ encoded-data.domain.com │ ▼ ┌────────────────────┐ │ Custom DNS Server │ │ │ │ • Extract label │ │ • Base32 decode │ │ • Save keystrokes │ └─────────┬──────────┘ │ ▼ logs.txt ``` ### 📂 项目结构 ``` dns-keylogger/ │ ├── logger.py ├── server.py ├── logs.txt │ ├── assets/ │ └── demo.gif │ └── README.md ``` ### 🔐 为什么选择 Base32? DNS 标签有严格的字符限制。 允许的字符: - a-z - 0-9 *Base32 确保编码后的数据保持 DNS 安全。* 示例: `hello -> NBSWY3DP` ### ⭐ 可添加的功能 - [ ] Data Chunking | *将长消息拆分为多个 DNS 查询* - [ ] Encryption | *在编码前加密按键记录* - [ ] Session Tracking | *追踪多个客户端* - [ ] Packet Camouflage | *将真实 DNS 查询与渗透流量混合*
标签:Base32 编码, C2 通信, Covert Channel, DNS 渗透, DNS 隐蔽通道, ETW劫持, pdftotext, PoC, Python, 域名系统安全, 子域名攻击, 安全演示, 恶意软件研究, 数据窃取, 数据编码, 无后门, 日志记录, 暴力破解, 概念验证, 网络协议滥用, 逆向工具, 键盘记录器, 防火墙绕过