maxi-schaefer/dns-keylogger
GitHub: maxi-schaefer/dns-keylogger
一个演示DNS隐蔽通道数据渗出技术的概念验证键盘记录器,将击键数据编码为Base32并通过DNS子域名查询发送到自定义DNS服务器。
Stars: 0 | Forks: 0
# 🛰️ DNS Keylogger
### 🎬 演示

### 📖 概述
该项目展示了一个概念验证:**通过 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, 域名系统安全, 子域名攻击, 安全演示, 恶意软件研究, 数据窃取, 数据编码, 无后门, 日志记录, 暴力破解, 概念验证, 网络协议滥用, 逆向工具, 键盘记录器, 防火墙绕过