gryfman/DLPwn
GitHub: gryfman/DLPwn
DLPwn 是一款基于蓝牙音频传输的文件外传 Red Team 工具,解决在受监控或隔离环境中隐蔽绕过 DLP/EDR 的数据泄露防护问题。
Stars: 16 | Forks: 2
# DLPwn
**通过蓝牙音箱进行数据泄露防护测试**
DLPwn 是一款用于文件外传的 Red Team 工具,旨在绕过 EDR(终端检测与响应)、XDR(扩展检测与响应)、DLP(数据丢失防护)等安全系统,或更广义上任何物理隔离的信息系统。它使用蓝牙音频传输将任意文件编码为 FLAC 音频信号进行传输,并在另一端解码,利用了音频安全控制通常比网络或文件层面更宽松的现实。
## 工作原理
DLPwn 的操作分为三个主要步骤:
1. **编码**:将二进制文件转换为调制音频信号。
2. **捕获**:通过蓝牙接收传输的音频信号。
3. **解码**:从捕获的信号中重建原始文件。
这种方法可以在不触发监控网络连接、磁盘写入或可疑进程的安全系统的情况下进行数据外传。
## 使用的协议
DLPwn 基于以下音频传输协议:
- **FSK 调制(频移键控)**:采用连续相位频移键控(CPFSK)。默认使用 8-FSK,8 个音调(900 Hz 到 5100 Hz),每个符号传输 3 位,速率为 1500 符号/秒,有效比特率为 4500 比特/秒。
- **Reed-Solomon 纠错**:每个 223 字节块添加 32 字节校验码,可纠正最多 16 个错误。
- **CRC-32 校验和**:用于负载完整性验证。
- **帧结构**:
- 前导码(3 秒交替位)用于同步。
- 同步字(8 字节 = 64 位)。
- RS 编码后的负载。
- 后导码(1 秒交替位)用于避免蓝牙截断。
每个文件被分割为最大 212 字节的帧,并包含一个带有文件名的元数据帧。
## QoS(服务质量)机制
DLPwn 包含一套 QoS 指标系统,用于评估传输质量:
- **帧丢失率**:丢失或无法纠正的帧百分比。
- **纠错率**:被 Reed-Solomon 纠正的帧。
- **BER(比特错误率)**:估算的比特错误率。
- **详细报告**:关于错误、纠正和丢失的完整统计。
这允许根据音频条件优化传输参数(如波特率、音调数量)。
## 安装
```
pip install -r requirements.txt
```
## 使用
### 第一步:编码文件
```
python main.py encode myfile.bin --output transmission.flac
```
### 第二步:捕获音频(目标机器)
在蓝牙音箱上播放 FLAC 文件,然后在另一台机器上捕获:
```
python main.py bluetooth --filename capture.flac
```
**注意:蓝牙配置(仅限 Linux)**
`bluetooth` 命令仅在 Linux 系统上有效,且需使用 PulseAudio 或 PipeWire 进行蓝牙音频捕获。要让目标设备将本机识别为蓝牙耳机:
1. 如需安装 `bluetoothctl`:
sudo apt install bluez-tools
2. 启动 `bluetoothctl` 并配置设备类以模拟立体声耳机:
bluetoothctl
> power on
> discoverable on
> pairable on
> class 0x240404 # 立体声耳机设备类
> quit
这允许源设备(手机或 PC)将本机连接为蓝牙耳机,从而通过 PulseAudio 捕获音频。
或进行实时捕获:
```
python main.py decode --loopback --duration 35 --output recovered.bin
```
### 第三步:解码
```
python main.py decode --input capture.flac --output recovered.bin
```
### 一次性命令
用于播放、捕获和解码的一体化命令:
```
python main.py stream transmission.flac --output recovered.bin
```
## 高级选项
- `--baud`:符号速率(默认 1500)。
- `--m`:FSK 音调数量(2、4 或 8)。
- `--rs-nsym`:RS 校验字节数(默认 32)。
- `--f0`、`--f1`:基础频率。
## 诊断
用于分析传输文件:
```
python diagnose.py transmission.flac
```
## 红队使用场景
在红队场景中,DLPwn 可用于:
- 无网络连接的数据外传。
- 绕过阻止上传的 DLP 系统。
- 逃避监控网络进程的 EDR。
- 通过无监督音频通道传输。
**警告**:仅应在授权环境中使用。音频传输可能被周围摄像头或麦克风检测到。
## 依赖项
- numpy, scipy, soundfile, sounddevice, reedsolo, tqdm
## 作者
- Noé Susset
- Yassine Damiri
标签:Air-gapped, CPFSK, CRC-32, DLP, EDR绕过, FLAC音频, FSK调制, Reed-Solomon纠错, XDR绕过, 代码生成, 信息隐蔽, 域名侦查, 安全规避, 数据泄露防护, 文件外传, 无网络外联, 渗透测试工具, 端点安全绕过, 网络探测, 蓝牙外设, 蓝牙音频传输, 逆向工具, 隐蔽通道, 音频隐写, 高交互蜜罐