
TL ؛ DR: GALAH (/ ɡəˈlːlː/-وضوحا 'Guh-laa') هو مصيبة على شبكة الإنترنت مدفوعة LLM مصممة لتقليد التطبيقات المختلفة والاستجابة ديناميكيًا لطلبات HTTP التعسفية. يدعم GALAH مقدمي خدمات LLM الرئيسية ، بما في ذلك Openai و Googleai و GCP's Vertex AI و Anthropic و Cohere و Ollama.
على عكس مصيبة الويب التقليدية التي تحاكي تطبيقات ويب محددة أو نقاط الضعف يدويًا ، تقوم Galah بصنع الاستجابات ذات الصلة ديناميكيًا - بما في ذلك رؤوس HTTP ومحتوى الجسم - إلى أي طلب HTTP. يتم تخزين الاستجابات التي تم إنشاؤها بواسطة LLM لفترة قابلة للتكوين لمنع التوليد المتكرر للطلبات المتطابقة ، مما يقلل من تكاليف واجهة برمجة التطبيقات. يعتبر التخزين المؤقت خاصًا بالمنفذ ، مما يضمن عدم إعادة استخدام الاستجابات التي تم إنشاؤها لمنفذ معين لنفس الطلب على منفذ مختلف.
التكوين المطالج هو المفتاح في مصيبة هوني. على الرغم من أنه يمكنك تحديث المطالبة في ملف التكوين ، إلا أنه من الأهمية بمكان الحفاظ على الجزء الذي يوجه LLM لإنتاج ردود في تنسيق JSON المحدد.
ملاحظة: تم تطوير Galah كمشروع عطلة نهاية الأسبوع ممتعًا لاستكشاف قدرات LLMS في صياغة رسائل HTTP وليس مخصصًا للاستخدام في الإنتاج. يمكن التعرف على Honeypot من خلال طرق مختلفة مثل تقنيات بصمات الأصابع الشبكة ، وأوقات الاستجابة المطولة اعتمادًا على مزود LLM ونموذجه ، والاستجابات غير القياسية. للحماية من رفض هجمات المحفظة ، تأكد من تعيين حدود الاستخدام على واجهة برمجة تطبيقات LLM الخاصة بك .
config.yaml إذا لزم الأمر.% git clone [email protected]:0x4D31/galah.git
% cd galah
% go mod download
% go build -o galah ./cmd/galah
% export LLM_API_KEY=your-api-key
% ./galah --help
██████ █████ ██ █████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██
██ ███ ███████ ██ ███████ ███████
██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██ ██ ███████ ██ ██ ██ ██
llm-based web honeypot // version 1.0
author: Adel " 0x4D31 " Karimi
Usage: galah --provider PROVIDER --model MODEL [--server-url SERVER-URL] [--temperature TEMPERATURE] [--api-key API-KEY] [--cloud-location CLOUD-LOCATION] [--cloud-project CLOUD-PROJECT] [--interface INTERFACE] [--config-file CONFIG-FILE] [--event-log-file EVENT-LOG-FILE] [--cache-db-file CACHE-DB-FILE] [--cache-duration CACHE-DURATION] [--log-level LOG-LEVEL]
Options:
--provider PROVIDER, -p PROVIDER
LLM provider (openai, googleai, gcp-vertex, anthropic, cohere, ollama) [env: LLM_PROVIDER]
--model MODEL, -m MODEL
LLM model (e.g. gpt-3.5-turbo-1106, gemini-1.5-pro-preview-0409) [env: LLM_MODEL]
--server-url SERVER-URL, -u SERVER-URL
LLM Server URL (required for Ollama) [env: LLM_SERVER_URL]
--temperature TEMPERATURE, -t TEMPERATURE
LLM sampling temperature (0-2). Higher values make the output more random [default: 1, env: LLM_TEMPERATURE]
--api-key API-KEY, -k API-KEY
LLM API Key [env: LLM_API_KEY]
--cloud-location CLOUD-LOCATION
LLM cloud location region (required for GCP ' s Vertex AI) [env: LLM_CLOUD_LOCATION]
--cloud-project CLOUD-PROJECT
LLM cloud project ID (required for GCP ' s Vertex AI) [env: LLM_CLOUD_PROJECT]
--interface INTERFACE, -i INTERFACE
interface to serve on
--config-file CONFIG-FILE, -c CONFIG-FILE
Path to config file [default: config/config.yaml]
--event-log-file EVENT-LOG-FILE, -o EVENT-LOG-FILE
Path to event log file [default: event_log.json]
--cache-db-file CACHE-DB-FILE, -f CACHE-DB-FILE
Path to database file for response caching [default: cache.db]
--cache-duration CACHE-DURATION, -d CACHE-DURATION
Cache duration for generated responses (in hours). Use 0 to disable caching, and -1 for unlimited caching (no expiration). [default: 24]
--log-level LOG-LEVEL, -l LOG-LEVEL
Log level (debug, info, error, fatal) [default: info]
--help, -h display this help and exit% git clone [email protected]: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 -p gcp-vertex -m gemini-1.0-pro-002 --cloud-project galah-test --cloud-location us-central1 --temperature 0.2 --cache-duration 0 % curl -i http://localhost:8080/.aws/credentials
HTTP/1.1 200 OK
Date: Sun, 26 May 2024 16:37:26 GMT
Content-Length: 116
Content-Type: text/plain; charset=utf-8
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
سجل حدث JSON:
{
"eventTime": "2024-05-26T18:37:26.742418+02:00",
"httpRequest": {
"body": "",
"bodySha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"headers": "User-Agent: [curl/7.71.1], Accept: [*/*]",
"headersSorted": "Accept,User-Agent",
"headersSortedSha256": "cf69e186169279bd51769f29d122b07f1f9b7e51bf119c340b66fbd2a1128bc9",
"method": "GET",
"protocolVersion": "HTTP/1.1",
"request": "/.aws/credentials",
"userAgent": "curl/7.71.1"
},
"httpResponse": {
"headers": {
"Content-Length": "127",
"Content-Type": "text/plain"
},
"body": "[default]naws_access_key_id = AKIAIOSFODNN7EXAMPLEnaws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYn"
},
"level": "info",
"llm": {
"model": "gemini-1.0-pro-002",
"provider": "gcp-vertex",
"temperature": 0.2
},
"msg": "successfulResponse",
"port": "8080",
"sensorName": "mbp.local",
"srcHost": "localhost",
"srcIP": "::1",
"srcPort": "51725",
"tags": null,
"time": "2024-05-26T18:37:26.742447+02:00"
}
رؤية المزيد من الأمثلة هنا.