
उच्च-अंतःक्रियात्मक हनीपॉट जो एक कमजोर Laravel/Livewire ऐप का अनुकरण करता है। CVE-2024-47823, CVE-2025-54068 और CVE-2025-14894 को लक्षित करने वाले RCE एक्सप्लॉइट्स और वेबशेल्स को कैप्चर करता है, फिर IOCs निकालने के लिए उनका सैंडबॉक्स्ड Docker कंटेनरों में विश्लेषण करता है।
एक उच्च-अंतःक्रिया हनीपॉट जो एक कमजोर Laravel/Livewire एप्लिकेशन के रूप में प्रस्तुत होता है। यह ज्ञात Livewire CVE को लक्षित करने वाले शोषण प्रयासों को कैप्चर करता है, अपलोड की गई दुर्भावनापूर्ण फ़ाइलों (वेबशेल्स) और रिमोट कोड निष्पादन (RCE) पेलोड को SHA-256 डिडुप्लीकेशन के साथ संग्रहीत करता है, और वैकल्पिक रूप से उन्हें एक सैंडबॉक्स्ड Docker कंटेनर में निष्पादित करता है ताकि संक्रमण के संकेतक (IOCs) — URLs, IPs, और डोमेन जो मैलवेयर से संपर्क करने का प्रयास करता है — निकाले जा सकें।
सिस्टम सुरक्षा के लिए दो अलग-अलग प्रक्रियाओं के रूप में चलता है: एक वेब सर्वर जो पेलोड कैप्चर करता है (Docker तक पहुंच नहीं) और एक सैंडबॉक्स वर्कर जो उन्हें पृथक कंटेनरों में विश्लेषित करता है।
Attacker → Nginx → FastAPI → SQLite ← Sandbox Worker (Docker)
(capture) (polls jobs, writes IOCs)
Facade — यथार्थवादी Laravel लॉगिन/रजिस्टर पेजों को Livewire wire: विशेषताओं, XSRF टोकन, और X-Powered-By: PHP/8.3.12 हेडर के साथ प्रस्तुत करता है। स्वचालित स्कैनर एक वास्तविक कमजोर ऐप के समान देखते हैं।
Capture — प्रत्येक HTTP अनुरोध को SQLite में लॉग किया जाता है (IP, हेडर, बॉडी हैश, टाइमस्टैम्प) एक ASGI मिडलवेयर परत द्वारा, पारदर्शी रूप से, किसी भी रूटिंग से पहले।
Traps — Livewire एंडपॉइंट फ़ाइल अपलोड और कंपोनेंट संदेशों को ठीक उसी तरह स्वीकार करते हैं जैसे वास्तविक फ्रेमवर्क करता है। पेलोड को वर्गीकृत किया जाता है (PHP कोड, सीरियलाइज़्ड ऑब्जेक्ट, शेल कमांड) और SHA-256 डिडुप्लीकेशन के साथ संग्रहीत किया जाता है। प्रत्येक दिलचस्प पेलोड sandbox_jobs कतार में एक स्थायी जॉब बनाता है।
Sandbox — एक अलग वर्कर प्रक्रिया लंबित जॉब्स के लिए पोल करती है और प्रत्येक पेलोड को एक अस्थायी Docker कंटेनर में निष्पादित करती है (केवल-पढ़ने के लिए फाइलसिस्टम, कोई नेटवर्क नहीं, cap_drop=ALL)। एक LD_PRELOAD शिम C2 (कमांड-एंड-कंट्रोल) संचार प्रयासों को लॉग करने के लिए libc नेटवर्क कॉल को इंटरसेप्ट करता है। विश्लेषणकर्ता IOCs निकालता है और ह्यूरिस्टिक्स का उपयोग करके संभावित C2 एंडपॉइंट को स्कोर करता है।
एक *.php कैच-ऑल ट्रैप सामान्य वेबशेल फ़ाइल नामों (जैसे accesson.php, wp-login.php, admin.php) के लिए पोस्ट-एक्सप्लॉइटेशन जांच को भी कैप्चर करता है।
पूर्वापेक्षाएँ: Python 3.11+ और uv।
git clone https://github.com/HelgeSverre/livewire-honeypot.git
cd livewire-honeypot
# निर्भरताएँ स्थापित करें
uv sync
# वेब सर्वर शुरू करें (केवल-कैप्चर, Docker की आवश्यकता नहीं)
DATA_DIR=./data uv run uvicorn honeypot.main:app --reload --port 8000
# दूसरे टर्मिनल में — सैंडबॉक्स वर्कर शुरू करें (Docker आवश्यक)
DATA_DIR=./data uv run python -m honeypot.worker
# परीक्षण चलाएँ
uv run pytest tests/ -v
वेब सर्वर अकेले काम करता है — यह सैंडबॉक्स वर्कर के बिना भी सब कुछ कैप्चर और संग्रहीत करता है। जब आप स्वचालित पेलोड विश्लेषण चाहते हैं तो वर्कर शुरू करें।
नोट:
src/निर्देशिकाpyproject.toml(src-layout) के माध्यम से Python पथ पर है, इसलिएhoneypot.main:appsrc/honeypot/main.pyपर मैप होता है।
आपको आवश्यकता होगी:
VPS के अस्तित्व में आने के बाद पूर्ण तैनाती एक ही कमांड है। स्क्रिप्ट "नंगे ड्रॉपलेट" से "TLS के साथ चल रही सेवा" तक हर कदम संभालती है — apt पैकेज, उपयोगकर्ता और समूह, Python venv, सैंडबॉक्स इमेज, nginx, certbot, और फ़ायरवॉल नियम।
# 1. $6/माह का ड्रॉपलेट प्रोविज़न करें (Ubuntu 24.04, 1 GB RAM पर्याप्त है)।
# DigitalOcean पर:
doctl compute droplet create veritron-honeypot \
--size s-1vcpu-1gb \
--image ubuntu-24-04-x64 \
--region fra1 \
--ssh-keys "$(doctl compute ssh-key list --format ID --no-header | head -1)" \
--wait
# 2. अपने डोमेन के A रिकॉर्ड को ड्रॉपलेट IP पर इंगित करें।
# जारी रखने से पहले DNS के हल होने तक प्रतीक्षा करें।
dig +short your-domain.example # ड्रॉपलेट IP लौटाना चाहिए
# 3. प्रोजेक्ट को ड्रॉपलेट पर कॉपी करें।
rsync -az --exclude='.git' --exclude='.venv' --exclude='data' \
./ root@<droplet-ip>:/opt/honeypot/
# 4. बूटस्ट्रैप स्क्रिप्ट चलाएँ। अपने डोमेन को पास करने से certbot के माध्यम से TLS सक्षम होता है।
ssh root@<droplet-ip> 'cd /opt/honeypot && [email protected] \
bash deploy/setup.sh your-domain.example'
बस इतना ही। हनीपॉट अब HTTPS पर एक नकली Laravel/Livewire लॉगिन पेज परोस रहा है, SQLite में हर अनुरोध को कैप्चर कर रहा है, और Docker सैंडबॉक्स में पेलोड का विश्लेषण करने के लिए तैयार है।
deploy/setup.sh आइडेम्पोटेंट है — इसे पुनः चलाना सुरक्षित है। क्रम में, यह:
honeypot (वेब) और sandbox (वर्कर) सेवा उपयोगकर्ता बनाता है, साथ ही साझा honeypot-data समूह।uv sync --python /usr/bin/python3.12 चलाता है। हम जानबूझकर uv के बंडल इंटरप्रेटर के बजाय apt-स्थापित Python का उपयोग करते हैं — uv का Python /root/.local/share/uv/ में रहता है, जिसे एक अनप्रिविलेज्ड सेवा उपयोगकर्ता पार नहीं कर सकता, और यदि आप uv को इंटरप्रेटर चुनने देते हैं तो आपको systemd से status=203/EXEC का भ्रमित करने वाला संदेश मिलता है।/var/honeypot/ को setgid बिट और साझा समूह स्वामित्व के साथ बनाता है, ताकि दोनों सेवाएँ एक-दूसरे के लेखन को पढ़ सकें।ExecStart को सिस्टम Docker डेमॉन का उपयोग करने के लिए फिर से लिखता है (शिप की गई यूनिट रूटलेस Docker मानती है, जिसे सेट करना कठिन है)।docker build -t honeypot-sandbox sandbox/)।limit_req_zone निर्देश को में डालता है (यह ब्लॉक में होना चाहिए, में नहीं)।यदि आप setup.sh चलाने के बजाय प्रत्येक चरण स्वयं करना चाहते हैं, तो समतुल्य शेल हिस्ट्री टिप्पणी किए गए चरणों के रूप में deploy/setup.sh में रहती है।
| सेवा | उपयोगकर्ता | उद्देश्य | Docker पहुंच |
|---|---|---|---|
honeypot.service |
दोनों सेवाएँ SQLite डेटाबेस और पेलोड स्टोरेज के लिए /var/honeypot/ साझा करती हैं। वेब प्रक्रिया के पास Docker सॉकेट तक पहुंच नहीं है, इसलिए हमलावर ट्रैफ़िक के माध्यम से समझौता होने पर भी यह होस्ट पर कंटेनर नहीं बना सकती।
# लॉग देखें
journalctl -u honeypot -f
journalctl -u honeypot-worker -f
# सेवाएँ पुनरारंभ करें
systemctl restart honeypot honeypot-worker
# अपग्रेड
cd /opt/honeypot && git pull && uv sync
docker build -t honeypot-sandbox sandbox/
systemctl restart honeypot honeypot-worker
सभी सेटिंग्स पर्यावरण चरों के माध्यम से नियंत्रित की जाती हैं (systemd यूनिट फ़ाइलों में सेट या चलाने से पहले निर्यात):
सभी डेटा एकल SQLite डेटाबेस (डिफ़ॉल्ट: /var/honeypot/captures.db) में रहता है।
# हाल के अनुरोध
sqlite3 /var/honeypot/captures.db \
"SELECT timestamp, source_ip, method, path, matched_trap
FROM requests ORDER BY id DESC LIMIT 20;"
# आवृत्ति के अनुसार अद्वितीय पेलोड
sqlite3 /var/honeypot/captures.db \
"SELECT sha256, filename, payload_type, times_seen, sandbox_status
FROM payloads ORDER BY times_seen DESC;"
# शीर्ष हमलावर IP
sqlite3 /var/honeypot/captures.db \
"SELECT ip, total_requests, first_seen, last_seen
FROM attackers ORDER BY total_requests DESC LIMIT 10;"
# निकाले गए IOCs के साथ सैंडबॉक्स परिणाम (JSON)
sqlite3 /var/honeypot/captures.db \
"SELECT payload_id, exit_code, duration_seconds, c2_urls_found, iocs
FROM sandbox_runs ORDER BY id DESC LIMIT 5;"
# लंबित सैंडबॉक्स जॉब
sqlite3 /var/honeypot/captures.db \
"SELECT id, payload_sha256, status, created_at
FROM sandbox_jobs ORDER BY id DESC LIMIT 10;"
sandbox_runs.iocs में IOC डेटा कुंजियों के साथ JSON के रूप में संग्रहीत है: domains, ips, emails, urls, hashes। आवश्यकतानुसार निकालें और अपने थ्रेट इंटेल प्लेटफ़ॉर्म (MISP, OpenCTI, आदि) में फ़ीड करें।
src/honeypot/
main.py # FastAPI वेब ऐप (केवल-कैप्चर, कोई Docker नहीं)
worker.py # स्टैंडअलोन सैंडबॉक्स वर्कर (SQLite पोल, Docker आवश्यक)
config.py # पर्यावरण चरों से सेटिंग्स
capture/
database.py # Async SQLite — अनुरोध, पेलोड, sandbox_jobs कतार
logger.py # ASGI मिडलवेयर — हर अनुरोध लॉग करता है
payloads.py # SHA-256 डिडुप स्टोरेज + पेलोड वर्गीकरण
facade/
routes.py # Laravel-फिंगरप्रिंटेड पेज (लॉगिन, रजिस्टर, आदि)
templates/ # Livewire wire: विशेषताओं के साथ Jinja2 HTML
static/ # नकली livewire.js (v3.5.1 फिंगरप्रिंट)
traps/
livewire.py # POST /livewire/message, /upload-file, /preview-file
php_catchall.py # *.php जांच के लिए कैच-ऑल
sandbox/
orchestrator.py # Docker कंटेनर जीवनचक्र + सख्तीकरण
analyzer.py # आर्टिफैक्ट पार्सिंग + IOC निष्कर्षण + C2 स्कोरिंग
deploy/
nginx.conf # दर सीमित करने वाला रिवर्स-प्रॉक्सी
honeypot.service # systemd यूनिट (वेब)
honeypot-worker.service # systemd यूनिट (सैंडबॉक्स वर्कर)
setup.sh # VPS बूटस्ट्रैप स्क्रिप्ट
sandbox/
Dockerfile # सैंडबॉक्स कंटेनर इमेज (PHP 8.3 + हमलावर उपकरण)
entrypoint.sh # LD_PRELOAD नेटवर्क शिम के साथ कंटेनर एंट्री-पॉइंट
यह एक शोध उपकरण है जो आपके स्वामित्व वाले बुनियादी ढांचे पर मैलवेयर नमूने एकत्र करने और हमलावर व्यवहार का निरीक्षण करने के लिए है। यह एक उत्पादन सुरक्षा उत्पाद नहीं है। केवल उन सिस्टमों पर तैनात करें जिन्हें आप नियंत्रित करते हैं, और ध्यान रखें कि हमलावर पेलोड को कैप्चर करना और निष्पादित करना आपके क्षेत्राधिकार में कानूनी निहितार्थ हो सकते हैं। SQLite डेटाबेस और पेलोड फ़ाइलें असीमित रूप से बढ़ती हैं — डिस्क उपयोग की निगरानी करें और आवश्यकतानुसार प्रतिधारण नीतियां लागू करें।
मुद्दे और पुल अनुरोधों का स्वागत है।
| CVE | CVSS | सारांश | ट्रैप एंडपॉइंट |
|---|
| CVE-2024-47823 | 9.8 क्रिटिकल | Livewire फ़ाइल अपलोड RCE MIME प्रकार बाईपास के माध्यम से। फ़ाइल एक्सटेंशन फ़ाइल नाम के बजाय MIME प्रकार से अनुमानित किए जाते हैं, जिससे .php अपलोड को छवियों के रूप में प्रच्छन्न करने की अनुमति मिलती है। Livewire < 2.12.7 और < 3.5.2 को प्रभावित करता है। | POST /livewire/upload-file |
| CVE-2025-54068 | 9.2 क्रिटिकल | Livewire प्रॉप हाइड्रेशन RCE। हाइड्रेशन प्रक्रिया कंपोनेंट प्रॉपर्टी अपडेट में ऑब्जेक्ट प्रकारों को सैनिटाइज़ करने में विफल रहती है, जिससे इंजेक्ट किए गए पेलोड सर्वर-साइड निष्पादित हो सकते हैं। Livewire 3.0.0-beta.1 से 3.6.3 तक प्रभावित करता है। | POST /livewire/message |
| CVE-2025-14894 | क्रिटिकल | Livewire Filemanager असीमित अपलोड RCE। फ़ाइल प्रकार और MIME सत्यापन की कमी से बिना प्रमाणीकरण के निष्पादन योग्य PHP फ़ाइलों का अपलोड संभव है। | POST /livewire/upload-file |
/etc/nginx/conf.d/http {}server {}certbot --nginx चलाता है।honeypot |
| वेब सर्वर — अनुरोधों और पेलोड को कैप्चर करता है |
| नहीं |
honeypot-worker.service | sandbox | सैंडबॉक्स वर्कर — Docker में पेलोड का विश्लेषण करता है | हाँ |
| वेरिएबल | डिफ़ॉल्ट | विवरण |
|---|
DATA_DIR | /var/honeypot | सभी डेटा के लिए आधार निर्देशिका |
DB_PATH | $DATA_DIR/captures.db | SQLite डेटाबेस पथ |
SANDBOX_TIMEOUT | 60 | प्रति सैंडबॉक्स रन अधिकतम सेकंड |
SANDBOX_MEMORY | 128m | कंटेनर मेमोरी सीमा |
SANDBOX_CPUS | 0.5 | कंटेनर CPU सीमा |
SANDBOX_MAX_CONCURRENT | 3 | अधिकतम समवर्ती सैंडबॉक्स कंटेनर |
SANDBOX_IMAGE | honeypot-sandbox | सैंडबॉक्स के लिए Docker इमेज |
WORKER_POLL_INTERVAL | 2.0 | जॉब पोल के बीच सेकंड |