
यादृच्छिक रूप से असुरक्षित VMs बनाएं
SecGen कमजोर वर्चुअल मशीन, लैब वातावरण, और हैकिंग चुनौतियाँ बनाता है, ताकि छात्र सुरक्षा पेनेट्रेशन परीक्षण तकनीकें सीख सकें।
Metasploitable2 जैसे बॉक्स हमेशा एक जैसे होते हैं, यह प्रोजेक्ट Vagrant, Puppet, और Ruby का उपयोग करके यादृच्छिक रूप से कमजोर वर्चुअल मशीन बनाता है जिनका उपयोग सीखने या CTF इवेंट होस्ट करने के लिए किया जा सकता है।
नवीनतम संस्करण यहाँ उपलब्ध है: http://github.com/cliffe/SecGen/
कृपया एक छोटा सर्वेक्षण पूरा करें ताकि हमें बता सकें कि आप SecGen का उपयोग कैसे कर रहे हैं।
होस्टेड समाधान के लिए यहाँ जाएँ: https://hacktivity.co.uk/
कंप्यूटर सुरक्षा के छात्रों को हैकिंग चुनौतियों में शामिल होने से लाभ होता है। व्यावहारिक लैब कार्य और पूर्व-कॉन्फ़िगर की गई हैकिंग चुनौतियाँ सुरक्षा शिक्षा में और सुरक्षा-जागरूक व्यक्तियों के लिए एक शौक के रूप में भी आम प्रथा हैं। प्रतिस्पर्धी हैकिंग चुनौतियाँ, जैसे कैप्चर द फ्लैग (CTF) प्रतियोगिताएँ, उद्योग सम्मेलनों में एक मुख्य आकर्षण बन गई हैं और बड़े ऑनलाइन समुदायों का केंद्र हैं। वर्चुअल मशीन (VM) हैकिंग के लिए लक्ष्य साझा करने का एक प्रभावी तरीका प्रदान करती हैं, और हमलावर के कौशल का परीक्षण करने के लिए डिज़ाइन की जा सकती हैं। Vulnhub जैसी वेबसाइटें पूर्व-कॉन्फ़िगर की गई हैकिंग चुनौती VM होस्ट करती हैं और कंप्यूटर सुरक्षा में सीखने और अपने कौशल को आगे बढ़ाने वालों के लिए एक मूल्यवान संसाधन हैं। हालाँकि, इन हैकिंग चुनौतियों को विकसित करना समय लेने वाला है, और एक बार बनाए जाने के बाद, अनिवार्य रूप से स्थिर होती हैं। अर्थात्, एक बार चुनौती "हल" हो जाने के बाद छात्र के लिए कोई शेष चुनौती नहीं रहती, और यदि चुनौती किसी प्रतियोगिता या मूल्यांकन के लिए बनाई गई है, तो चुनौती को साहित्यिक चोरी और मिलीभगत के जोखिम के बिना पुनः उपयोग नहीं किया जा सकता।
सुरक्षा परिदृश्य जनरेटर (SecGen) यादृच्छिक कमजोर सिस्टम उत्पन्न करता है। VM एक परिदृश्य विनिर्देश के आधार पर बनाई जाती हैं, जो बनाई जाने वाली VM की बाधाओं और गुणों का वर्णन करता है। उदाहरण के लिए, एक परिदृश्य एक ऐसे सिस्टम के निर्माण को निर्दिष्ट कर सकता है जिसमें एक दूरस्थ रूप से शोषण योग्य कमजोरी हो जिसके परिणामस्वरूप उपयोगकर्ता-स्तरीय समझौता हो, और एक स्थानीय रूप से शोषण योग्य दोष हो जिसके परिणामस्वरूप रूट-स्तरीय समझौता हो। इसके लिए हमलावर को सिस्टम तक रूट पहुँच प्राप्त करने के लिए दोनों यादृच्छिक रूप से चयनित कमजोरियों को खोजना और उनका शोषण करना होगा। वैकल्पिक रूप से, परिभाषित परिदृश्य अधिक विशिष्ट हो सकता है, जो कुछ प्रकार की सेवाओं (जैसे FTP या SMB) या यहाँ तक कि सटीक कमजोरियों (CVE द्वारा) को निर्दिष्ट करता है।
SecGen एक Ruby एप्लिकेशन है, जिसमें एक XML कॉन्फ़िगरेशन भाषा है। SecGen अपने कॉन्फ़िगरेशन को पढ़ता है, जिसमें उपलब्ध कमजोरियाँ, सेवाएँ, नेटवर्क, उपयोगकर्ता, और सामग्री शामिल हैं, अनुरोधित परिदृश्य की परिभाषा पढ़ता है, परिदृश्य को यादृच्छिक बनाने के लिए तर्क लागू करता है, और आवश्यक VM को प्रावधान करने के लिए Puppet और Vagrant का लाभ उठाता है।
SecGen मुक्त सॉफ़्टवेयर है: आप इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं जैसा कि फ्री सॉफ़्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है, या तो लाइसेंस का संस्करण 3, या (आपके विकल्प पर) कोई भी बाद का संस्करण।
SecGen में मॉड्यूल हैं, जो विभिन्न सॉफ़्टवेयर पैकेज स्थापित करते हैं। प्रत्येक SecGen मॉड्यूल में सॉफ़्टवेयर शामिल हो सकता है या दूरस्थ रूप से स्रोत से लिया जा सकता है, और प्रत्येक मॉड्यूल अपने स्वयं के लाइसेंस को साथ में दिए गए secgen_metadata.xml फ़ाइल में परिभाषित करता है।
SecGen को Ubuntu Linux पर विकसित और परीक्षण किया गया है। सिद्धांत रूप में, SecGen को Mac या Windows पर चलना चाहिए, यदि आपके पास सभी आवश्यक सॉफ़्टवेयर स्थापित हैं।
SecGen को आवश्यकता है:
इसे स्थापित करने के दो तरीके हैं। दोनों का परीक्षण एक ताज़ा Ubuntu इंस्टॉल से किया गया है।
होस्ट पर Docker और VirtualBox स्थापित करें, फिर docker/secgen-docker.sh को बाकी सब कुछ के साथ एक कंटेनर बनाने दें। इसके कर्नेल ड्राइवर के लिए होस्ट पर VirtualBox की अभी भी आवश्यकता है। docker/README.md देखें।
git clone https://github.com/cliffe/SecGen.git
cd SecGen
docker/secgen-docker.sh run -s scenarios/default_scenario.xml
Oracle के रिपॉज़िटरी से VirtualBox इंस्टॉल करें। Ubuntu 24.04 में virtualbox पैकेज (7.0.16) वर्तमान HWE कर्नेल के लिए अपना कर्नेल ड्राइवर बिल्ड नहीं कर सकता, और Linux 7.0 के लिए VirtualBox 7.2.8 या उससे नया संस्करण आवश्यक है:
sudo apt-get update
sudo apt-get install -y wget gpg lsb-release
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc \
| sudo gpg --yes --dearmor -o /usr/share/keyrings/oracle-virtualbox-2016.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" \
| sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt-get update
sudo apt-get install -y virtualbox-7.2
यदि KVM लोड है, तो VirtualBox VMs शुरू नहीं कर सकता जब तक KVM VT-x को होल्ड करता है (VERR_VMX_IN_VMX_ROOT_MODE)। कर्नेल 6.12 और उसके बाद के संस्करणों पर आप उन्हें सहअस्तित्व में रहने दे सकते हैं:
echo "options kvm enable_virt_at_load=0" | sudo tee /etc/modprobe.d/kvm-virtualbox.conf
sudo modprobe -r kvm_intel kvm_amd kvm; sudo modprobe kvm_intel || sudo modprobe kvm_amd
SecGen परिदृश्य VirtualBox के डिफ़ॉल्ट 192.168.56.0/21 के बाहर host-only नेटवर्क रेंज का उपयोग करते हैं, इसलिए किसी भी रेंज की अनुमति दें:
sudo mkdir -p /etc/vbox
echo '* 0.0.0.0/0 ::/0' | sudo tee /etc/vbox/networks.conf
Vagrant को HashiCorp के रिपॉज़िटरी से इंस्टॉल करें (Ubuntu 26.04 अब इसे पैकेज नहीं करता, और पुराने Vagrant रिलीज़ अब Vagrant Cloud से boxes डाउनलोड नहीं कर सकते):
wget -qO- https://apt.releases.hashicorp.com/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update
sudo apt-get install -y vagrant
Ruby और अन्य आवश्यक पैकेज इंस्टॉल करें:
sudo apt-get install -y git ruby-full ruby-dev build-essential patch pkg-config zlib1g-dev liblzma-dev \
imagemagick exiftool libpq-dev libcurl4-openssl-dev libxml2-dev libxslt1-dev graphviz libgraphviz-dev \
libpcap-dev libsqlite3-dev libgpgme-dev libyaml-dev libffi-dev libssl-dev
SecGen को क्लोन करें और gems इंस्टॉल करें। bundle install का उपयोग करें, bundle update का नहीं: Gemfile.lock उन versions को pin करता है जो हर समर्थित Ruby पर काम करते हैं, और bundle update उन्हें नवीनतम releases से बदल देता है, जो शायद काम न करें।
git clone https://github.com/cliffe/SecGen.git
cd SecGen
sudo gem install bundler -v '~> 2.4'
sudo bundle install
फिर डिफ़ॉल्ट परिदृश्य आज़माएँ (यह पहली बार hacktivity.co.uk से बेस बॉक्स डाउनलोड करता है):
ruby secgen.rb run
नोट्स: