Galah 项目介绍
项目概述
Galah(发音为‘guh-laa’)是一个基于大语言模型(LLM)的网络蜜罐项目,旨在模拟各种应用程序,并动态响应任意的 HTTP 请求。相比于传统的网络蜜罐需要手动模拟特定的网络应用或漏洞,Galah 可以通过 LLM 来自动生成与请求相关的响应,包括 HTTP 头信息和正文内容。这些响应会根据配置进行缓存,从而避免对相同请求进行重复响应生成,降低 API 使用成本。值得注意的是,这种缓存是基于端口的,即在特定端口生成的响应不会在不同端口上重复使用。
支持的功能
Galah 主要支持以下几大 LLM 提供商:OpenAI、GoogleAI、GCP 的 Vertex AI、Anthropic、Cohere 和 Ollama。这意味着用户在使用这些服务时,可以集成到 Galah 的响应生成体系中。
缓存与配置
对于 Galah 来说,提示配置是其蜜罐功能的关键。配置文件中的提示可以进行更新,但必须要确保指引 LLM 生成指定的 JSON 格式响应的那一段代码不被修改。这一设计为动态网络环境提供了灵活性和适应性。
使用注意
Galah 是一个在周末开发的趣味项目,主要目的是探索 LLM 在组成 HTTP 消息方面的能力,因此不建议在生产环境中使用。由于 Galah 的响应可能被网络指纹识别技术、响应时间长度以及非标准响应检测到,因此使用时需谨慎。此外,为了防止“钱包攻击”(即过度调用 API 带来高成本),用户需要为 LLM API 设置使用限制。
快速入门
本地部署
- 确保已安装 Go 版本 1.22 或以上。
- 根据使用的 LLM 提供商,创建一个 API 密钥或设置认证凭证。
- 如果需要提供 HTTPS 端口服务,生成 TLS 证书。
- 克隆项目代码库并安装依赖项。
- 如有需要,更新
config.yaml
文件。 - 构建并运行 Go 二进制文件。
命令示例:
% git clone git@github.com:0x4D31/galah.git
% cd galah
% go mod download
% go build -o galah ./cmd/galah
% export LLM_API_KEY=your-api-key
% ./galah --help
Docker 运行
- 确保本地安装了 Docker CE 或 EE。
- 克隆代码库并构建 Docker 镜像。
- 你可以将本地目录挂载到容器中以存储日志。
- 运行 Docker 容器。
命令示例:
% git clone git@github.com:0x4D31/galah.git
% cd galah
% mkdir logs
% export LLM_API_KEY=your-api-key
% docker build -t galah-image .
% docker run -d --name galah-container -p 8080:8080 -v $(pwd)/logs:/galah/logs -e LLM_API_KEY galah-image -o logs/galah.json -p openai -m gpt-3.5-turbo-1106
示例用法
运行 Galah 的命令示例:
./galah -p gcp-vertex -m gemini-1.0-pro-002 --cloud-project galah-test --cloud-location us-central1 --temperature 0.2 --cache-duration 0
使用 curl
进行请求的示例:
% curl -i http://localhost:8080/.aws/credentials
这些操作可以帮助用户了解 Galah 的基本使用方式和响应生成能力。更多使用实例可以参见项目文档中的示例部分。
通过以上介绍,希望能够对 Galah 项目有一个全面的认识。该项目不仅展现了 LLM 在网络安全领域的创新应用,也为对这些技术感兴趣的开发者提供了实践的机会。