
LLM-प्रथम धोखा ढांचा: "वह हनीपॉट जो बात करता है!™"

परिचय honeyprompt, एक LLM-प्रथम धोखा ढाँचा जो वेब डेवलपर्स द्वारा/के लिए बनाया गया है। @alectrocute का व्यक्तिगत जुनून प्रोजेक्ट।
सभी प्रमुख क्लाउड और स्थानीय LLM प्रदाताओं का समर्थन करता है। SSH, HTTP, TLS, TCP, telnet और अधिक। यह एक छोटे कंटेनर (और एक एकल स्थैतिक बाइनरी) के रूप में आता है और सभी नॉब एक honeyprompt.yaml में रखता है।
कोई प्लगइन संकलित करने की आवश्यकता नहीं, कोई डेटाबेस चलाने की आवश्यकता नहीं, आसानी से विस्तार योग्य और कम-अंत हार्डवेयर पर तैनात किया जा सकता है।
एक डेमो इंस्टेंस 172.233.151.216 पर उपलब्ध है, जिसमें बिना प्रमाणीकरण वाला वेब पैनल यहाँ है: http://172.233.151.216:9090। यह एक सस्ते Linode VPS पर चल रहा honeyprompt का एक सार्वजनिक इंस्टेंस है, जिसमें एकमात्र LLM प्रदाता/मॉडल के रूप में openrouter/free है।
2026 में सबसे आसान सेटअप के लिए, हम Docker और OpenRouter/openrouter/free को LLM प्रदाता के रूप में अनुशंसित करते हैं। सभी प्रमुख क्लाउड और स्थानीय LLM प्रदाता समर्थित हैं। तीन फ़ाइलें और एक कमांड पूर्ण डिफ़ॉल्ट तैनाती स्थापित करते हैं: सात LLM-समर्थित डिकॉय, टिकाऊ घटना संग्रहण और ऑपरेटर पैनल।
1. डिफ़ॉल्ट कॉन्फ़िग, कंपोज़ फ़ाइल और env टेम्पलेट प्राप्त करें:
# if you don't have Docker:
# curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
mkdir honeypot && cd honeypot
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/honeyprompt.yaml
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/compose.yaml
wget -O .env https://raw.githubusercontent.com/alectrocute/honeyprompt/main/.env.example
(या रिपो खींचें और उसमें cd करें — वही तीन फ़ाइलें।)
2. .env भरें। दो मान आवश्यक हैं:
OPENROUTER_API_KEY=sk-or-... # use a dedicated key with a spend limit
HONEYPROMPT_PANEL_PASSWORD=changeme # basic-auth password for the panel
3. इसे शुरू करें:
docker compose up -d
4. इसे परीक्षण करें:
ssh -p 2222 root@localhost # password: root — then type anything
curl http://localhost:2375/v1.54/containers/json # "exposed" Docker API
5. इसे होते हुए देखें रीड-ओनली पैनल पर http://127.0.0.1:9090 (अपने पैनल पासवर्ड के साथ admin के रूप में साइन इन करें)। हर कनेक्शन, क्रेडेंशियल और कमांड लाइव स्ट्रीम होता है। यदि आप किसी रिमोट होस्ट पर तैनात हैं, तो आपको compose.yaml में :9090 पोर्ट को एक्सपोज़ करना होगा। यह उत्पादन तैनाती के लिए अनुशंसित नहीं है।
उत्पादन तैनाती के लिए
latestके बजाय एक क्रमांकित रिलीज़ को पिन करें —.envमेंHONEYPROMPT_IMAGEसेट करें।
आपके द्वारा अभी डाउनलोड किया गया honeyprompt.yaml पूरी तरह से व्याख्यायित शोकेस है। इसमें प्रोफाइल शामिल हैं:
/ तुरंत स्टॉक nginx वेलकम पेज परोसता है, और गहरे पथ LLM के पास जाते हैं पूर्ण HTML/CSS इंट्रानेट पेज, लॉगिन फॉर्म और एडमिन पैनल के लिए जो हमलावर को क्लिक करते रहने के लिए बनाए गए हैं।[!महत्वपूर्ण] भले ही आप LLM का उपयोग कर रहे हों, सबसे अधिक उपयोग किए जाने वाले पथ निर्धारित करें और उनके लिए स्थिर नियम जोड़ें। इससे आपको LLM टोकन की भारी मात्रा बचेगी और उन अनुरोधों के प्रति प्रतिक्रिया तेज होगी जो LLM कॉल की लागत के लायक नहीं हैं। यादृच्छिक उदाहरण:
whoami, स्वास्थ्य जांच, favicon, संस्करण प्रोब आदि।
यह न्यूनतम honeyprompt.yaml दो स्थिर नियमों और बिना LLM के एक SSH बॉक्स का नकली बनाता है:
panel:
enabled: true
address: "0.0.0.0:8080"
events:
buffer: 2000
file: /data/events.jsonl # durable attacker activity
services:
- protocol: ssh
address: "0.0.0.0:2222"
description: "Ubuntu 26.04 LTS build runner"
serverName: "gpu-runner-07"
passwordRegex: "^(root|admin|123456)$" # which passwords "work"
commands:
- regex: "^whoami$"
handler: "root"
- regex: "^(.+)$"
handler: "bash: command not found"
docker run --rm \
-p 2222:2222 -p 8080:8080 \
-v "$(pwd)/honeyprompt.yaml:/etc/honeyprompt/honeyprompt.yaml:ro" \
-v honeyprompt-data:/data \
alectrocute/honeyprompt:latest
एक स्थायी तैनाती के लिए, शामिल compose.yaml का उपयोग करें। तैनाती गाइड Docker Hub रिलीज़, आवश्यक GitHub रहस्य, पोर्ट और फायरवॉल सेटअप, SSH पर पैनल पहुंच, अपग्रेड, रोलबैक, घटना संग्रहण और अलगाव को कवर करता है।
एक हनीपॉट को केवल एक काम अच्छी तरह से करना होता है: इतना विश्वसनीय बने रहना कि हमलावर टाइप करता रहे। वे जो भी कमांड चलाते हैं वह खुफिया जानकारी है — वे उपकरण जिन तक वे पहुँचते हैं, वे क्रेडेंशियल जिनका वे पुन: उपयोग करते हैं, वे CVE जिन्हें वे मानते हैं कि आपने पैच नहीं किया है। स्थिर हनीपॉट उस समय चरित्र तोड़ देते हैं जब कोई ऐसा कमांड चलाता है जिसकी लेखक ने उम्मीद नहीं की थी। honeyprompt उस पल को LLM को सौंप देता है, ताकि शेल dmesg | tail या cat /etc/shadow का उत्तर उसी तरह दे जैसे एक वास्तविक शेल देता, और सत्र जारी रहता है।
Adel Karimi के उत्कृष्ट DEF CON 32 प्रस्तुति को देखें Galah पर, (पहला?) LLM हनीपॉट, जिसने इस प्रोजेक्ट को प्रेरित किया: https://www.youtube.com/watch?v=XGsm4Qcc_Ag
यह वह हिस्सा है जिसे पहले से समझना उचित है, क्योंकि दोनों को जानबूझकर अलग रखा गया है:
आप उन्हें अलग-अलग कॉन्फ़िगर करते हैं:
# The honey: attacker activity.
events:
buffer: 2000 # recent events kept in memory for the panel
file: /data/events.jsonl # persist every event as JSON Lines
# The runtime's own diagnostics.
logging:
level: info # debug | info | warn | error
format: text # how it looks on the console: text (human) or json
file: /data/honeyprompt.log # optional; on disk it's always JSON
events.jsonl प्रति पंक्ति एक स्व-निहित JSON ऑब्जेक्ट है — tail -f करने, SIEM को भेजने, या jq के साथ पुनः चलाने के लिए तैयार। ऊपर दिए गए Docker कमांड नामित वॉल्यूम honeyprompt-data को /data पर माउंट करते हैं, जिससे कंटेनर प्रतिस्थापन पर घटनाएँ बची रहती हैं। दोनों फ़ाइलों को जोड़ा जाता है और साफ शटडाउन पर फ्लश किया जाता है।
format केवल प्रभावित करता है कि परिचालन लॉग कंसोल पर कैसे प्रस्तुत किए जाते हैं; परिचालन लॉग फ़ाइल, जब सक्षम होती है, हमेशा संरचित JSON होती है ताकि इसे पार्स करना आसान हो।
