
एक स्वादिष्ट, लेकिन दुर्भावनापूर्ण SSL-VPN सर्वर 🌮
NachoVPN एक प्रूफ ऑफ कॉन्सेप्ट (Proof of Concept) है जो एक दुष्ट (rogue) VPN सर्वर का उपयोग करके SSL-VPN क्लाइंट्स के शोषण को प्रदर्शित करता है।
यह प्लगइन-आधारित आर्किटेक्चर का उपयोग करता है ताकि अतिरिक्त SSL-VPN उत्पादों के लिए समर्थन समुदाय द्वारा योगदान किया जा सके। यह वर्तमान में कई लोकप्रिय कॉर्पोरेट VPN उत्पादों का समर्थन करता है, जैसे Cisco AnyConnect, SonicWall NetExtender, Palo Alto GlobalProtect, और Ivanti Connect Secure।
अधिक जानकारी के लिए, हमारी ब्लॉग पोस्ट और HackFest Hollywood 2024 प्रस्तुति [स्लाइड्स|वीडियो] देखें।
NachoVPN को Ubuntu 22.04 पर बनाया और परीक्षण किया गया है।
python3-nftables और nftables इंस्टॉल करें
वैकल्पिक रूप से sudo की आवश्यकता से बचने के लिए setcap का उपयोग करें:
sudo setcap 'cap_net_raw,cap_net_bind_service,cap_net_admin=eip' /usr/bin/python3.10
IP फॉरवर्डिंग सक्षम करें:
sudo sysctl -w net.ipv4.ip_forward=1
NachoVPN को pip का उपयोग करके GitHub से इंस्टॉल किया जा सकता है। ध्यान दें कि इसके लिए git इंस्टॉल होना आवश्यक है।
सबसे पहले, एक वर्चुअल एनवायरनमेंट बनाएँ।
Linux पर, सुनिश्चित करें कि वर्चुअल एनवायरनमेंट के पास सिस्टम site-packages तक पहुँच हो, ताकि nftables काम करे:
python3 -m venv env --system-site-packages
source env/bin/activate
Windows पर, nftables (और इस प्रकार पैकेट फॉरवर्डिंग) अक्षम है, इसलिए उपयोग करें:
python -m venv env
.\env\Scripts\activate
फिर, NachoVPN इंस्टॉल करें:
pip install git+https://github.com/AmberWolfCyber/NachoVPN.git
यदि आप Docker का उपयोग करना पसंद करते हैं, तो आप GitHub Container Registry से कंटेनर खींच सकते हैं:
docker pull ghcr.io/AmberWolfCyber/nachovpn:release
सबसे पहले, इस रिपॉजिटरी को क्लोन करें, और pip के माध्यम से setuptools और wheel इंस्टॉल करें। फिर आप setup.py स्क्रिप्ट चला सकते हैं:
git clone https://github.com/AmberWolfCyber/NachoVPN
pip install -U setuptools wheel
python setup.py bdist_wheel
यह dist निर्देशिका में एक wheel फ़ाइल उत्पन्न करेगा, जिसे pip के साथ इंस्टॉल किया जा सकता है:
pip install dist/nachovpn-1.0.0-py3-none-any.whl
वैकल्पिक रूप से, स्थानीय विकास के लिए आप पैकेज को editable मोड में इंस्टॉल कर सकते हैं:
pip install -e .
आप निम्न कमांड के साथ कंटेनर इमेज बना सकते हैं:
docker build -t nachovpn:latest .
सर्वर को स्टैंडअलोन के रूप में चलाने के लिए, उपयोग करें:
python -m nachovpn.server
वैकल्पिक रूप से, आप Docker का उपयोग करके सर्वर चला सकते हैं:
docker run -e SERVER_FQDN=connect.nachovpn.local -e EXTERNAL_IP=1.2.3.4 -v ./certs:/app/certs -p 80:80 -p 443:443 --rm -it nachovpn
यह certbot का उपयोग करके SERVER_FQDN के लिए एक प्रमाणपत्र उत्पन्न करेगा, और इसे certs निर्देशिका में सहेजेगा, जिसे हमने कंटेनर में माउंट किया है।
वैकल्पिक रूप से, परीक्षण उद्देश्यों के लिए, आप SKIP_CERTBOT एनवायरनमेंट वेरिएबल सेट करके प्रमाणपत्र निर्माण को छोड़ सकते हैं।
इसके बजाय यह एक सेल्फ-साइनेड प्रमाणपत्र उत्पन्न करेगा।
docker run -e SERVER_FQDN=connect.nachovpn.local -e SKIP_CERTBOT=1 -e EXTERNAL_IP=1.2.3.4 -p 443:443 --rm -it nachovpn
सुविधा के लिए एक उदाहरण docker-compose फ़ाइल भी प्रदान की गई है।
आप लॉगिंग की विस्तृतता बढ़ाने के लिए nachovpn को -d या --debug कमांड लाइन आर्ग्युमेंट्स के साथ चला सकते हैं, जो डिबगिंग में सहायता कर सकता है।
वैकल्पिक रूप से, यदि लॉगिंग बहुत अधिक शोरगुल वाली है, तो आप इसके बजाय q या --quiet कमांड लाइन आर्ग्युमेंट का उपयोग कर सकते हैं।
NachoVPN निम्नलिखित प्लगइन्स और क्षमताओं का समर्थन करता है:
| प्लगइन | उत्पाद | CVE | Windows RCE | macOS RCE | विशेषाधिकार प्राप्त | URI हैंडलर | पैकेट कैप्चर | डेमो |
|---|---|---|---|---|---|---|---|---|
| Cisco | Cisco AnyConnect | N/A | ✅ | ✅ | ❌ | ❌ | ✅ | Windows / macOS |
| SonicWall | SonicWall NetExtender | CVE-2024-29014 | ✅ | ❌ | ✅ | ✅ | ❌ | Windows |
| PaloAlto | Palo Alto GlobalProtect | CVE-2024-5921 (आंशिक सुधार) | ✅ | ✅ | ✅ | ❌ | ✅ | Windows / macOS / iOS |
| PulseSecure | Ivanti Connect Secure | CVE-2020-8241 (बायपास किया गया) | ✅ | ✅ | ✅ | ✅ (केवल विंडोज़ - 22.8R1 में डिफ़ॉल्ट रूप से अक्षम) | ✅ | Windows |
| Netskope | Netskope | CVE-2025-0309 | ✅ | ❌ | ✅ | ❌ | ❌ | Windows |
| Delinea | Protocol Handler | CVE-2026-???? | ✅ | ✅ | ❌ | ✅ | ❌ | Windows |
/pulse URL पर जाकर ट्रिगर किया जा सकता है।/sonicwall URL पर जाकर ट्रिगर किया जा सकता है। इसके लिए आवश्यक है कि क्लाइंट मशीन पर SonicWall Connect Agent इंस्टॉल हो।/delinea URL पर जाकर ट्रिगर किया जा सकता है।