
docker-compose का उपयोग करके स्थानीय पेनिट्रेशन टेस्टिंग लैब।
अब मैं इस पर सक्रिय रूप से डेवलप नहीं कर रहा हूँ, लेकिन बग्स को ठीक करूंगा और इश्यू और पुल रिक्वेस्ट देखूंगा। सहायता की सराहना है :)
यह स्थानीय पेंटेस्ट लैब docker compose का उपयोग करके कई पीड़ित सेवाओं (victim services) और एक हमलावर सेवा (Kali Linux चलाने वाली) को स्पिन अप करती है। यदि आप इस लैब को पहली बार चलाते हैं तो विभिन्न डॉकर इमेजेज को डाउनलोड करने में कुछ समय लगेगा।
निष्पादित कमांड:
./lab.sh --help./lab.sh --check-dependencies./lab.sh --up --all-services./lab.sh --info./lab.sh --overview allssh root@kali -o "UserKnownHostsFile /dev/null"./lab.sh --downयदि सभी आवश्यक निर्भरताएँ स्थापित हैं तो लैब को बिना किसी अतिरिक्त कॉन्फिगरेशन के काम करना चाहिए। स्टार्टअप पर लैब एक निर्भरता जाँच चलाएगी।
git clone https://github.com/oliverwiegers/pentest_lab
cd pentest_lab
./lab.sh -u
डिफ़ॉल्ट रूप से लैब सभी पीड़ित सेवाओं (victim services) और एक रेड टीम सेवा (red team service) शुरू करेगा। अन्य सेवाओं को शुरू किया जा सकता है और जोड़ा जा सकता है। इसके बारे में अधिक जानकारी नीचे दी गई है।
आगे के उपयोग की जानकारी के लिए ./lab.sh -h | --help द्वारा दिखाए गए सहायता संदेश को पढ़ने पर विचार करें।
लैब में एक अंतर्निहित निर्भरता जाँच है जो स्टार्टअप पर चलती है। इसे मैन्युअल रूप से भी चलाया जा सकता है ./lab.sh -C।
उपयोग में आसानी के लिए एक Heimdall इंटरफ़ेस जोड़ा गया है जो localhost:7000 पर उपलब्ध है।
वे सभी सेवाएँ जो आपकी स्थानीय मशीन पर उपलब्ध हैं और ब्राउज़र के माध्यम से एक्सेस की जा सकती हैं, वहाँ सूचीबद्ध हैं।
इंटरफ़ेस में किए गए परिवर्तन स्वचालित रूप से ./etc/heimheimdall में सहेजे जाते हैं। फिर लैब को रोकते समय इस निर्देशिका को ./etc/heimdall.tar में बदल दिया जाता है। इस tar archive को स्टार्टअप पर निकाला जाएगा। ./etc/heimdall.tar और ./etc/heimdall दोनों डिफ़ॉल्ट रूप से git द्वारा अनदेखा किए जाते हैं।
उपयोग की गई वॉलपेपर यहाँ पाई जा सकती है।
यह लैब निम्नलिखित चार प्रकार की सेवाओं को जानता है।
डिफ़ॉल्ट रेड टीम सेवा - Kali सेवा - एक बहुत ही बुनियादी Kali इंस्टेंस है।
फिर भी kali-tools-web मेटापैकेज स्थापित है। एक वेब एप्लिकेशन परीक्षण लैब के लिए बुनियादी वेब टेस्टिंग टूल उपयोगी लगते हैं।
इसे उस Dockerfile को संपादित करके बदला जा सकता है जिससे इमेज बनाई गई है। यह ./dockerfiles/kali पर स्थित है।
Kali सेवा डिफ़ॉल्ट रूप से इन dotfiles को स्थापित करती है। इसे Dockerfile में बदलाव करके भी बदला जा सकता है।
हालाँकि निगरानी सेवाएँ भी blue_team सेवाएँ हैं, फिर भी इन्हें एक अलग श्रेणी में विभाजित किया गया है।
यह स्टैक लॉग और प्रदर्शन अवलोकन कार्यक्षमता प्रदान करता है।
एकल इंस्टेंस के बारे में अधिक जानकारी के लिए नीचे देखें।
वर्तमान में निगरानी सेटअप निम्नलिखित सेवाओं से बना है:
Grafana इंस्टेंस दो डैशबोर्ड प्रदान करता है: एक लॉग के लिए और एक मेट्रिक्स के लिए।
ये काफी बुनियादी हैं। कोई Grafana इंटरफ़ेस के माध्यम से डैशबोर्ड जोड़कर और अधिक जोड़ सकता है। ये डैशबोर्ड तब खो जाएंगे जब grafana वॉल्यूम हटा दिया जाएगा। स्थायी रूप से डैशबोर्ड जोड़ने के लिए Grafana द्वारा प्रावधान दस्तावेज़ देखें। प्रावधान के लिए उपयोग की जाने वाली निर्देशिकाएँ ./etc/grafana/ पर स्थित हैं।
Grafana इंटरफ़ेस के माध्यम से सेटिंग्स बदलने के लिए admin के रूप में लॉगिन करना होगा। क्रेडेंशियल डिफ़ॉल्ट हैं: admin:admin। #hacktheplanet
Loki के लिए डॉकर लॉग एकत्र करने में सक्षम होने के लिए, यह लैब Loki Docker Driver को डॉकर प्लगइन के रूप में स्थापित करता है।
Prometheus के लिए क्लस्टर में चल रहे कंटेनरों के प्रदर्शन मेट्रिक्स तक पहुँचने में सक्षम होने के लिए cAdvisor का उपयोग किया जाता है।
अतिरिक्त सेवाएँ जोड़ने के लिए docker-compose.yml फ़ाइलों का थोड़ा ज्ञान आवश्यक है। इस रिपॉजिटरी के रूट में docker-compose.yml लैब शुरू होने पर ऑटो-जनरेट होता है। यह प्रक्रिया ./etc/services के अंतर्गत स्थित yaml फ़ाइलों का उपयोग करती है।
➜ pentest_lab tree ./etc/services
./etc/services
├── blue_team
│ └── endlessh.yml
├── default.yml
├── monitoring
│ ├── cadvisor.yml
│ ├── grafana.yml
│ ├── loki.yml
│ └── prometheus.yml
├── red_team
└── victim
├── beginner
│ ├── bwapp.yml
│ ├── dvwa.yml
│ ├── hackazon.yml
│ ├── tiredful.yml
│ ├── webgoat.yml
│ └── xvwa.yml
├── expert
│ └── juice-shop.yml
└── intermediate
└── ninjas.yml
कौन सी सेवाएँ शुरू होंगी, यह ./lab.sh को संबंधित विकल्पों के साथ आह्वान करके नियंत्रित किया जाता है। किसी सेवा को स्थायी रूप से अक्षम करने के लिए .yml फ़ाइल एक्सटेंशन हटा दें।
एक पीड़ित सेवा का उदाहरण होगा:
bwapp:
labels:
class: 'victim'
cluster: 'pentest_lab'
level: 'beginner'
image: raesene/bwapp
ports:
- '8080:80'
networks:
pentest_lab:
ipv4_address: 10.5.0.100
hostname: bwapp
volumes:
- bwapp-data:/var/lib/mysql
नोट: यदि किसी सेवा को पहले उपयोग पर किसी प्रकार की स्थापना की आवश्यकता है, तो docker inspect <image_name> का उपयोग करके पता करें कि डॉकर इमेज डेटा कहाँ संग्रहीत करती है और इस निर्देशिका की ओर इशारा करते हुए एक वॉल्यूम जोड़ें। ऊपर दिए गए उदाहरण में यह है:
volumes:
- bwapp-data:/var/lib/mysql
यह सुनिश्चित करता है कि जब भी आप लैब को पुनरारंभ करते हैं तो आपको सेवा को फिर से सेटअप नहीं करना पड़ता है। लेकिन यदि आप लैब को रीसेट करना चाहते हैं और पूरी तरह से फिर से शुरू करना चाहते हैं, तो आप ./lab.sh -p | --prune का उपयोग कर सकते हैं। यह लैब के स्वामित्व वाले सभी संसाधनों को हटा देगा।
हमने स्थिर IP पतों का उपयोग करने का कारण यह है कि Kali बॉक्स में एक IP पता होना चाहिए जो SSH लॉगिन को सरल बनाने के लिए बदलता नहीं है। अधिक जानकारी नीचे टिप्स/ट्रिक्स अनुभाग में दी गई है।
यदि आप सेवाएँ जोड़ते हैं और कोई अतिरिक्त जानकारी है जो इस लैब को चलाने वाले किसी भी व्यक्ति के लिए उपयोगी है, तो आप इस जानकारी को ./etc/services_info में जोड़ सकते हैं। इस फ़ाइल की सामग्री ./lab.sh -i चलाकर पंक्ति दर पंक्ति मुद्रित की जाएगी।
Kali सेवा से आसानी से कनेक्ट करने के लिए कोई $HOME/.ssh/cofig में निम्नलिखित जोड़ सकता है:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
इसलिए ssh [email protected] -o "UserKnownHostsFile /dev/null" के बजाय कोई ssh kali चला सकता है।
tmux उपयोगकर्ताओं के लिए निम्नलिखित स्वचालित रूप से tmux सत्र से जुड़ जाएगा:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
RequestTTY yes
RemoteCommand tmux -L tmux new-session -As hacktheplanet