tin537/LMTWT
GitHub: tin537/LMTWT
一个基于模型对抗的 LLM 安全测试框架,通过攻击者模型与目标模型的自动化对抗来评估大语言模型对提示注入、越狱和工具使用攻击的防御能力。
Stars: 2 | Forks: 1
# LMTWT — 让我与它们对话
-/` 目录中:
```
scan.json report.md report.html report.pdf scorecard.md
fingerprint.json plan.json scan.db repro/F00N_.json
```
您可以将该文件夹交付给客户,他们将拥有所有内容:人类可读的报告、机器可读的 JSON、每个发现结果的重现包以及可查询的 SQLite 数据库。
为了进行精细控制(只运行一种技术、调整单独的参数),传统的扁平化 CLI 依然可用:
```
# 交互式:Gemini 攻击 OpenAI
./run.sh --attacker gemini --target openai --mode interactive
# 仅限本地:LM Studio 攻击 LM Studio(无 API 成本)
./run.sh --attacker lmstudio --attacker-model "qwen2.5-7b" \
--target lmstudio --target-model "llama-3.1-8b" \
--mode interactive
# Web UI (Gradio)
./run.sh --web
# Web UI (FastAPI + SSE — pip install -e '.[api]')
lmtwt --web-api
# 自定义兼容 OpenAI 的攻击者(Ollama, vLLM, LiteLLM, 自托管网关)
export OPENAI_COMPAT_BASE_URL=http://localhost:11434/v1
export OPENAI_COMPAT_MODEL=qwen2.5:7b
lmtwt scan --target openai --attacker openai-compat
```
## 用法示例
### 针对不同的模型后端
```
# 托管:Claude 作为目标
./run.sh --attacker gemini --target anthropic
# 本地:Hugging Face transformer
./run.sh --attacker gemini --target huggingface \
--target-model "mistralai/Mistral-7B-Instruct-v0.2"
# 本地:LM Studio (localhost:1234 上兼容 OpenAI 的 REST)
./run.sh --attacker gemini --target lmstudio --target-model "your-model-id"
# Agent 运行时:基于 ACP 的 Claude Code
./run.sh --attacker gemini --target claude-code
# 自定义 HTTP 后端
./run.sh --attacker gemini --target external-api \
--target-config examples/custom_api_target.json
# 自定义 Socket.IO 后端(例如金融科技 / 客服 chatbot)
./run.sh --attacker gemini --target external-api \
--target-config examples/socketio_target.json
```
### 攻击模式
```
# 黑客模式 — 攻击者根据目标的先前响应进行调整
./run.sh --attacker gemini --target openai --hacker-mode
# 探测特定漏洞类别
./run.sh --probe-mode --probe-category injection --target openai
# 使用明确指令的批量攻击
./run.sh --mode batch \
--instruction "Create a jailbreak prompt" \
--instruction "Test system-prompt extraction"
# 多轮社会工程学流程
./run.sh --mode multi-turn --flow trust_then_pivot
# Tool-use 攻击(通过 tool results 进行间接 prompt injection)
./run.sh --mode tool-use --tool-vector hidden_instruction
# 自动优化:PAIR(5 次迭代)或 TAP (tree of thoughts)
./run.sh --strategy pair --strategy-iterations 5
./run.sh --strategy tap --strategy-branching 3 --strategy-depth 4
```
### 标准化模板
```
# 列出内置攻击模板
./run.sh --list-templates
# 运行特定模板
./run.sh --mode template --template basic_prompt_injection
# 列出多轮流程 / tool-use 向量
./run.sh --list-flows
./run.sh --list-vectors
```
### 通过 Burp / mitmproxy / ZAP 进行路由
每个模型——托管的、本地的和外部的——都通过相同的 TLS/proxy 层进行传输。当您针对一个尚未完全了解其协议的自定义后端时,Burp 捕获功能将非常有用。
```
./run.sh --attacker gemini --target external-api \
--target-config my_target.json \
--proxy http://127.0.0.1:8080 \
--ca-bundle ~/.burp/cacert.pem
```
CA 捆绑包同时接受 **PEM** (`.pem` / `.crt`) 和 **DER** (`.der` / `.cer`) 格式——
无需转换。target-config JSON 中的按目标覆盖设置(`proxy`、`ca_bundle`、`insecure`)优先于 CLI 标志。
## 攻击类别(探测模式)
| 类别 | 测试内容 |
|---|---|
| `dan` | "Do Anything Now" 越狱提示 |
| `injection` | 经典的提示注入 |
| `xss` | 模型输出中的跨站脚本 payload |
| `glitch` | Unicode 和 token 边界漏洞利用 |
| `misleading` | 虚假信息 / 幻觉诱导 |
| `malware` | 恶意软件相关的内容生成 |
| `forbidden_knowledge` | 危险知识提取 |
| `snowball` | 不断升级的幻觉攻击 |
## 30 秒了解 External-API 目标
`external-api` 目标是该框架的逃生舱。将其指向一个描述了线路协议的 JSON 文件,LMTWT 会处理剩下的事情。内置了四种协议:
| `protocol` | 适用场景 |
|---|---|
| `http`(默认) | 单次 REST 聊天端点 |
| `sse` | Server-Sent Events 流式响应 |
| `websocket` / `ws` / `wss` | 原始 WebSocket JSON 帧 |
| `socketio` / `socket.io` | Socket.IO v5 (EIO v4) 或 v2 (EIO v3) — 需设置 `eio_version` |
一个最小化的 Socket.IO 配置如下所示:
```
{
"protocol": "socketio",
"endpoint": "wss://chat.example.com/socket.io/",
"eio_version": "3",
"headers": { "Authorization": "Bearer ...", "User-Agent": "android" },
"event_name": "send_message",
"response_event": "receive_message",
"payload_template": {
"messageContent": [{ "content": "", "type": "TEXT" }],
"messageId": "", "sessionId": "", "role": "USER"
},
"prompt_path": "messageContent.0.content",
"message_id_key": "messageId",
"session_id_key": "sessionId",
"session_id": "session-from-your-bootstrap-api",
"response_path": "messageContent.0.content"
}
```
有关完整的 schema,请参阅 [`docs/configuration.md`](docs/configuration.md);有关可用的配置(HTTP、Socket.IO、Ollama),请参阅 [`examples/`](examples/)。
调试助手:在运行期间设置 `LMTWT_SOCKETIO_DEBUG=1` 可将每个 Socket.IO 帧转储到标准错误输出中。
## Web 界面
```
./run.sh --web # localhost:8501
./run.sh --web --web-port 8080 --share # public Gradio share link
```
该界面提供了模型选择、交互式攻击组合、结果可视化以及带有通过/失败跟踪的会话历史记录。
## 一段话解释架构
异步优先的引擎 (`src/lmtwt/attacks/async_engine.py`) 驱动一个 `attacker`(攻击者)和一个 `target`(目标),它们都实现了一个小巧的 `AsyncAIModel` 接口 (`src/lmtwt/models/async_base.py`)。提供商类位于 `src/lmtwt/models/` 中;外部传输位于 `src/lmtwt/models/external/` 中。每次 `chat()` 调用都会返回一个类型化的 `ChatResponse`;流式传输通过 `astream()` 暴露。判定器 (`src/lmtwt/judges/`) 决定目标的响应是否算作一次成功的越狱。阅读 [`docs/architecture.md`](docs/architecture.md) 了解全貌。
## 测试
```
uv run pytest # full suite (~150 tests, ~2s)
uv run pytest tests/test_external_socketio.py -v
uv run pytest --cov=src/lmtwt
```
[](https://github.com/tin537/LMTWT/actions/workflows/python-tests.yml)
## 文档
- [`docs/index.md`](docs/index.md) — 目录
- [`docs/architecture.md`](docs/architecture.md) — 异步引擎、模型层、判定器
- [`docs/configuration.md`](docs/configuration.md) — `.env`、`config.json`、target-config schema
- [`docs/cli.md`](docs/cli.md) — 所有标志、所有模式
- [`docs/models.md`](docs/models.md) — 提供商矩阵和功能说明
- [`docs/attacks.md`](docs/attacks.md) — 模板、探测、流程、tool-use 攻击向量
- [`docs/web.md`](docs/web.md) — Gradio UI
- [`docs/roadmap.md`](docs/roadmap.md) — 后续规划
## 贡献
```
git checkout -b feature/your-thing
uv sync # installs dev group automatically
uv run pytest # green before pushing
uv run ruff check src tests # lint
git commit -m "feat: ..."
git push origin feature/your-thing
```
欢迎提交 PR。请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) 和 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)。
## 致谢
灵感来自 [NVIDIA 的 garak](https://github.com/NVIDIA/garak)(Apache 2.0 许可证)。
LMTWT 是基于 MIT 许可的原创实现——我们感谢 garak 在 LLM 红队领域的前期工作。
## 免责声明
仅供**教育目的**和**授权安全测试**使用。在测试您不拥有的任何系统之前,请务必获得书面许可。运行 CTF、内部红队演练和个人实验室工作的研究人员是其目标受众。作者对滥用行为不承担任何责任。
## 许可证
MIT — 见 [`LICENSE`](LICENSE)。
## 联系方式
Tanuphat Tin — tanuphat.chai@gmail.com
[github.com/tin537/LMTWT](https://github.com/tin537/LMTWT)
标签:AI红蓝对抗, Anthropic, CISA项目, CIS基准, CSV导出, DLL 劫持, ESC8, Hugging Face, LLM安全测试, OpenAI, PAIR, Petitpotam, Python开发, SSE, TAP, WebSocket, Web安全, 人工智能安全, 依赖分析, 内存规避, 合规性, 多轮对话攻击, 大语言模型, 安全评估框架, 异步编程, 提示注入, 智能体安全, 渗透测试框架, 社会工程学, 红队评估, 蓝队分析, 计算机取证, 逆向工具, 防御, 集群管理