Operator Foundation

Operator 提供易于使用的工具,以帮助世界各地的人们应对审查、安全和隐私问题。

Adversary Lab (对抗实验室)

Adversary Lab 是一项分析捕获的网络流量以提取统计属性的服务。通过使用此分析,可以合成过滤规则来阻止采样的流量。

Adversary Lab 的目的是为研究和开发网络过滤的研究人员和开发人员提供一种方式来了解阻止不同协议的难易程度。 如果您的应用程序使用自定义协议,Adversary Lab 将演示如何合成规则以系统地阻止使用该协议的所有流量。 类似地,如果您有网络过滤规避工具,那么 Adversary Lab 可以合成一个规则来阻止您的工具。 此分析还可以用于研究专门尝试击败网络过滤的工具,例如 Pluggable Transports(可插拔传输)。

Adversary Lab 分析的工作原理是在两个观察到的数据集(“允许”集和“阻止”集)上训练分类器。 例如,一个模拟的对抗者可能允许 HTTP,但阻止 HTTPS。 通过使用 HTTP 和 HTTPS 数据训练系统,它将生成一个规则,该规则基于流量中观察到的属性来区分这两种类型的流量。

AdversaryLabClientSwift

AdversaryLabClient 是用 Swift 编写的命令行工具,用于捕获流量并将其提交给 Adversary Lab 进行分析。

安装

Adversary Lab 是用 Swift 编程语言编写的。 要编译它,您需要安装 Swift 5.1 或更高版本。

https://swiftlang.cn/getting-started/

运行

客户端的所有命令都必须从 AdversaryLabClientSwift 项目目录运行。

要使用客户端,Adversary Lab 必须已经在运行。 请参阅 AdversaryLab 文档来设置和运行 Adversary Lab。

要与 Adversary Lab 服务交互,您需要使用命令行客户端。

运行不带参数的命令行客户端以获取使用信息。

./.build/x86_64-apple-macosx/debug/AdversaryLabClientSwift

通过捕获指定为允许或阻止的网络流量来训练模拟的对抗者。

sudo ./.build/x86_64-apple-macosx/debug/AdversaryLabClientSwift 80 allow

这将捕获目标端口为 80 的实时流量,并将其添加到数据集,作为对抗者应允许的流量的训练。

我们还需要使用捕获的网络流量来训练模拟的对抗者,该流量提供了阻止的示例。

sudo ./.build/x86_64-apple-macosx/debug/AdversaryLabClientSwift 443 block

这将捕获目标端口为 443 的实时流量,并将其添加到“示例”数据集,作为对抗者应阻止的流量的训练。

或者,您可以先捕获网络流量,然后在完成流量捕获后将数据分配为允许或阻止。

在这种情况下,您只需省略允许/阻止的指定,并仅提供您希望 Adversary Lab 监听的端口。 Adversary Lab 将缓冲您的流量,直到您输入“allow”或“block”。 此时,它将停止录制并根据您的输入将其添加到数据集。

例如

sudo ./.build/x86_64-apple-macosx/debug/AdversaryLabClientSwift 443

sudo ./.build/x86_64-apple-macosx/debug/AdversaryLabClientSwift 80

一旦模拟的对抗者既有“允许”流量又有“阻止”流量,并且观察到每种类型至少三个连接,它就可以合成阻止规则。