ytisf/PyExfil

GitHub: ytisf/PyExfil

PyExfil 是一个汇集了多种数据外发与隐蔽通信技术的 Python 工具包,用于压力测试组织的 DLP 系统和入侵检测能力。

Stars: 808 | Forks: 145

# PyExfil 压力测试检测与创意 ![Logo](https://www.morirt.com/img/PyExfil_Logo.png) 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, 压力测试, 安全测试, 攻击性安全, 数据窃取, 无后门, 网络通信, 逆向工具