ytisf/PyExfil
GitHub: ytisf/PyExfil
PyExfil 是一个汇集了多种数据外发与隐蔽通信技术的 Python 工具包,用于压力测试组织的 DLP 系统和入侵检测能力。
Stars: 808 | Forks: 145
# PyExfil
压力测试检测与创意

PyExfil 最初只是作为一个 PoC 和某种试验场而诞生的,后来发展得更具规模。在我看来,它仍然是一个混乱的 PoC,需要大量的工作和测试才能变得 `stable`。PyExfil 的目的是整理出尽可能多的数据外发(以及现在的通信)技术,这些技术**可以**被各种威胁行为者/恶意软件用来绕过各种检测和缓解工具及技术。你可以在官方的 [GitHub 页面](https://PyExfil.MoriRT.com/)追踪其变更。
简单来说,它旨在作为一款测试工具,而不是一款真正的红队工具。尽管大多数技术和方法应该能轻松地移植和编译到各种操作系统上(有些很稳定,有些则是实验性的),但其传输机制在所有技术中都应当是稳定的。克隆它,部署在你组织中的一台节点上,看看哪些系统能捕捉到哪些技术。
## 入门指南
### PIP
如果使用 `pip`(不一定是最新版本):
```
pip install --user PyExfil
```
### 前置条件
获取源码:
```
git clone https://www.github.com/ytisf/PyExfil
cd PyExfil
pip install --user -r requirements.txt
```
我们还建议安装 [`py2exe`](http://www.py2exe.org/),这样你就可以将各种模块交叉编译为二进制文件,以便于传输。你可以通过以下方式执行此操作:
```
pip install py2exe
```
### 安装说明
转到克隆 `PyExfil` 的同一文件夹下,然后:
```
pip setup.py --user install
```
## 技术列表
* **Network**
* [DNS query](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#dns-query)
* [HTTP Cookie](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#http-cookies)
* [ICMP (8)](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#icmp-echo-8)
* [NTP Body](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#ntp-body)
* [BGP Open](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#bgp-open)
* [HTTPS Replace Certificate](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#https-replace-certificate)
* [QUIC - No Certificate](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#quic)
* [Slack Exfiltration](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#slack)
* [POP3 Authentication](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#pop3-authentication)(作为密码) - 感谢 [Itzik Kotler](https://github.com/ikotler) 提供的思路
* [FTP MKDIR](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#ftp-mkdir) - 感谢 [Itzik Kotler](https://github.com/ikotler) 提供的思路
* [Source IP-based Exfiltration](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#source-ip-based-exfiltration)
* [HTTP Response](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#http-response)
* [IMAP_Draft](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#imap-draft)
* **Communication**
* [NTP Request](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#ntp-request)
* [DropBox LSP](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#dropbox-lsp)(Broadcast 或 Unicast)
* [DNS over TLS](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#dns-over-tls)
* [ARP Broadcast](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#arp-broadcast)
* [JetDirect](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#jetdirect)
* [GQUIC](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#gquic) - [Google Quick UDP](https://www.chromium.org/quic) Internet Connections (Client Hello)
* [MDNS Query](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#mdns-query) - *可用作 broadcast。*
* [AllJoyn](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#alljoyn)。Name Service Protocol (IoT discovery) Version 0 ISAT。
* [PacketSize](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#packet-size)。使用 packet 的大小而不是实际数据。
* [UDP-Source-Port](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#udp-sport) 使用 UDP 中的 source port 作为传输介质。
* [CertExchange](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#Certificate-Exchange) 利用证书交换功能进行短促的通信突发。
* [DNSQ](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#DNSQ) 利用 DNS Queries 进行通信。
* [ICMP_TTL](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#ICMP_TTL) 利用 TTL 字节进行通信。非常短小但也很隐蔽。
* **Physical**
* [Audio](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#audio) - *无监听器*。
* [QR Codes](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#qr-codes)
* [WiFi - On Payload](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#wifi-frame-payload)
* [3.5mm Jack](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#3.5mm-jack)
* [UltraSonic](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#ultrasonic)
* **Steganography**
* [Binary Offset](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#image-binary-offset)
* [Video Transcript to Dictionary](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#video-dictionary)
* [Braille Text Document](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#braille-text-document)
* [PNG Transparency](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#png-transparency)
* [ZIPCeption](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#zip-loop)
* [DataMatrix over LSB](https://github.com/ytisf/PyExfil/blob/master/USAGE.md#datamatrix-over-lsb)
有关各模块的用法,请查看 [USAGE](https://www.github.com/ytisf/PyExfil/USAGE.md) 文件。
## 数据生成
尽管这个工具最初是作为一个游戏创建的,后来转变为红队导向的工具,但在一天结束的时候,`PyExfil` 的一个主要用途是测试各种 DLP(Data Leakage Protection)系统以及入侵检测。为了让后一项任务变得更简单,我们创建了一个小模块来生成假数据,其结构同时匹配 PII 和 PCI 数据集。这些数据旨在被广播到网络外部时触发警报。
以下是使用方法:
```
from pyexfil.includes import CreateTestData
c = CreateTestData(rows=1000, output_location="/tmp/list.csv")
c.Run()
```
在此之后,你可以使用任何你想尝试的 `PyExfil` 模块来外发生成的数据集。通过这种方式,你可以测试你的检测能力,而无需承担外发有价值数据的风险。
## 未来变更
### 版本控制
有关版本的详细信息,请查看[此仓库上的 tags](https://www.github.com/ytisf/PyExfil/tags)。
### 版本 1.0.0!
- [x] 重构带来的惊喜 (Add Another)。
- [x] 将 `DOCUMENTATION.md` 和 `README.md` 拆分为两个不同的文件。
- [x] 获得一个漂亮的 Logo。
- [x] 为更新的模块统一调用约定。
- [x] 数据外发数据集生成器 (PII&PCI)。
### 版本 1.3 - Harpax:
- [x] 添加 4 个新模块。
- [x] 常规修复。
- [x] 一些旧模块被重新编码以适应新标准。
- [x] Python2 和 Python3 之间的完全兼容。
### 版本 1.5 - Lorax
- [x] 终于创建了结构...
- [x] 提供适当的贡献文档。
- [x] 添加 `CALL_TO_ACTION.md` 以寻求社区帮助。
- [x] 修复了一些旧版遗留模块。
- [x] 为一些基本的 smoketests 添加了 `tests`。稍后将添加更多面向模块的测试。
### 希望 - 不久的将来
- [x] 尝试创建更统一的调用约定。*参见 DOCUMENTATION.md*。
- [ ] 修复那个写得很糟糕的 *setup.py*。
- [ ] 将所有旧模块向后移植到新的调用约定。
### 在遥远的未来 - The Year 2000
- [ ] 增加 Golang/C++ 支持以提高可移植性。
- [ ] 对 py2exe 支持进行广泛测试。
## 鸣谢
### 个人与公司
- 向 [JetBrains](https://www.jetbrains.com/) 致以最强烈的感谢!!!
- 感谢 barachy 和 AM 提供有关使用协议的思路。
- 感谢 [Itzik Kotler](https://github.com/ikotler) 提供的一些想法。
- 感谢 [@cac0ns3c](https://github.com/cac0ns3c) 解决了一些 dependency hell。
- 感谢 [@Nilesh0301](https://github.com/Nilesh0301) 指出了一些 Python 兼容性问题。
- 非常感谢 [@hbmartin](https://github.com/hbmartin) 向我们指出了 [pytube3](https://github.com/get-pytube/pytube3) 的最新更新和支持。
### 资源
- 感谢 [Wireshark](https://wireshark.com/) 提供出色的 wiki 和工具。尤其是 [packet dumps](http://wiki.wireshark.org/SampleCaptures)。
- 向 [nmap](https://nmap.org/) 团队致敬。
- 感谢 [Trey Hunner](https://github.com/treyhunner) 提供 [`names`](https://github.com/treyhunner/names) 包。
- [Faker](https://faker.readthedocs.io/en/master/) 包。
- 特别感谢 Thomas Baruchel 和 Fredrik de Vibe 提供我们在 `braille` 数据外发包中使用的 [txt2pdf](https://github.com/baruchel/txt2pdf) 包。
标签:ASM汇编, IP 地址批量处理, Python, 压力测试, 安全测试, 攻击性安全, 数据窃取, 无后门, 网络通信, 逆向工具