
एक प्रयोगात्मक एवं अनुसंधान मंच जो एक अमूर्त अनुकरणित नेटवर्क वातावरण में स्वचालित एजेंटों की परस्पर क्रिया का अध्ययन करने के लिए है।
8 अप्रैल, 2021: Microsoft Security Blog पर घोषणा देखें।
CyberBattleSim एक प्रयोगात्मक अनुसंधान मंच है जो एक अनुकरणीय अमूर्त उद्यम नेटवर्क वातावरण में काम करने वाले स्वचालित एजेंटों की अंतर्क्रिया की जांच करने के लिए है। यह सिमुलेशन कंप्यूटर नेटवर्क और साइबर सुरक्षा अवधारणाओं का एक उच्च-स्तरीय अमूर्त प्रदान करता है। इसका पायथन-आधारित Open AI Gym इंटरफ़ेस सुदृढीकरण अधिगम एल्गोरिदम का उपयोग करके स्वचालित एजेंटों के प्रशिक्षण की अनुमति देता है।
सिमुलेशन वातावरण एक निश्चित नेटवर्क टोपोलॉजी और कमजोरियों के एक सेट द्वारा पैरामीटराइज़ किया गया है जिसका उपयोग एजेंट नेटवर्क में पार्श्व रूप से स्थानांतरित होने के लिए कर सकते हैं। हमलावर का लक्ष्य कंप्यूटर नोड्स में लगाई गई कमजोरियों का शोषण करके नेटवर्क के एक हिस्से पर स्वामित्व प्राप्त करना है। जबकि हमलावर नेटवर्क में फैलने का प्रयास करता है, एक रक्षक एजेंट नेटवर्क गतिविधि पर नज़र रखता है और किसी भी हमले का पता लगाने और हमलावर को बाहर निकालकर सिस्टम पर प्रभाव को कम करने का प्रयास करता है। हम एक बुनियादी स्टोकेस्टिक रक्षक प्रदान करते हैं जो सफलता की पूर्वनिर्धारित संभावनाओं के आधार पर चल रहे हमलों का पता लगाता है और उन्हें कम करता है। हम संक्रमित नोड्स को फिर से इमेज करके शमन को लागू करते हैं, यह एक प्रक्रिया है जिसे कई सिमुलेशन चरणों में फैले एक ऑपरेशन के रूप में अमूर्त रूप से मॉडल किया गया है।
एजेंटों के प्रदर्शन की तुलना करने के लिए हम दो मैट्रिक्स देखते हैं: अपने लक्ष्य को प्राप्त करने के लिए उठाए गए सिमुलेशन चरणों की संख्या और प्रशिक्षण युगों में सिमुलेशन चरणों पर संचयी पुरस्कार।
हम इस परियोजना को एक प्रयोगात्मक मंच के रूप में देखते हैं जो अमूर्त अनुकरणीय नेटवर्क वातावरण में स्वचालित एजेंटों की अंतर्क्रिया पर अनुसंधान करने के लिए है। इसे ओपन-सोर्स करके, हमें उम्मीद है कि अनुसंधान समुदाय को प्रोत्साहित किया जाएगा कि वे जांच करें कि ऐसे नेटवर्क वातावरण में साइबर-एजेंट कैसे अंतःक्रिया करते हैं और विकसित होते हैं।
हम जो सिमुलेशन प्रदान करते हैं वह निस्संदेह सरल है, लेकिन इसके लाभ हैं। इसकी अत्यधिक अमूर्त प्रकृति वास्तविक दुनिया की प्रणालियों पर प्रत्यक्ष आवेदन को रोकती है, इस प्रकार इसके साथ प्रशिक्षित स्वचालित एजेंटों के संभावित दुरुपयोग के खिलाफ एक सुरक्षा प्रदान करती है। साथ ही, इसकी सरलता हमें उन विशिष्ट सुरक्षा पहलुओं पर ध्यान केंद्रित करने की अनुमति देती है जिनका हम अध्ययन करना चाहते हैं और हाल के मशीन लर्निंग और एआई एल्गोरिदम के साथ तेजी से प्रयोग करना चाहते हैं।
उदाहरण के लिए, वर्तमान कार्यान्वयन पार्श्व आंदोलन साइबर-हमले तकनीकों पर केंद्रित है, इस उम्मीद के साथ कि यह समझा जा सके कि नेटवर्क टोपोलॉजी और कॉन्फ़िगरेशन उन्हें कैसे प्रभावित करता है। इस लक्ष्य को ध्यान में रखते हुए, हमने महसूस किया कि वास्तविक नेटवर्क ट्रैफ़िक का मॉडलिंग करना आवश्यक नहीं था। यह हमारे सिस्टम में एक महत्वपूर्ण सीमा का सिर्फ एक उदाहरण है जिसे भविष्य के योगदान संबोधित कर सकते हैं।
एल्गोरिथमिक पक्ष पर, हम शुरुआती बिंदुओं के रूप में कुछ बुनियादी एजेंट प्रदान करते हैं, लेकिन हम यह जानने के लिए उत्सुक होंगे कि अत्याधुनिक सुदृढीकरण अधिगम एल्गोरिदम उनसे कैसे तुलना करते हैं। हमने पाया कि किसी भी कंप्यूटर सिस्टम में निहित बड़ी क्रिया स्थान सुदृढीकरण अधिगम के लिए एक विशेष चुनौती है, वीडियो गेम या रोबोट नियंत्रण जैसे अन्य अनुप्रयोगों के विपरीत। एजेंटों को प्रशिक्षित करना जो क्रेडेंशियल्स को स्टोर और पुनर्प्राप्त कर सकते हैं, आरएल तकनीकों को लागू करते समय एक और चुनौती है जहां एजेंटों में आमतौर पर आंतरिक मेमोरी नहीं होती है। ये अनुसंधान के अन्य क्षेत्र हैं जहां सिमुलेशन का उपयोग बेंचमार्किंग उद्देश्यों के लिए किया जा सकता है।
रुचि के अन्य क्षेत्रों में स्वायत्त साइबर-सुरक्षा प्रणालियों का जिम्मेदार और नैतिक उपयोग शामिल है: एक उद्यम नेटवर्क कैसे डिज़ाइन किया जाए जो रक्षक एजेंटों को एक आंतरिक लाभ देता है? स्वायत्त साइबर-हमलों के खिलाफ उद्यमों की रक्षा करने के उद्देश्य से सुरक्षित अनुसंधान कैसे किया जाए, साथ ही ऐसी तकनीक के दुरुपयोग को रोका जाए?
परियोजना का त्वरित परिचय पढ़ें।
| प्रकार | शाखा | स्थिति |
|---|---|---|
| CI | master | |
| Docker image | master |
बेंचमार्क दस्तावेज़ीकरण देखें। नवीनतम रनों वाली Jupyter नोटबुक एक समर्पित टैग के तहत /notebooks/benchmarks (latest_benchmark) पर चेक-इन की गई हैं।
लिनक्स वातावरण में काम करने की दृढ़ता से अनुशंसा की जाती है, या तो सीधे या विंडोज पर WSL के माध्यम से। विंडोज पर सीधे Python चलाना काम करना चाहिए लेकिन अब समर्थित नहीं है।
रिपॉजिटरी को चेकआउट करके शुरू करें:
git clone https://github.com/microsoft/CyberBattleSim.git
यदि नोटबुक पर papermill चलाते समय (या वैकल्पिक रूप से orca --help चलाते समय) आपको निम्न त्रुटि मिलती है:
/home/wiblum/miniconda3/envs/cybersim/lib/orca_app/orca: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
या अन्य शेयर लाइब्रेरी जैसे libgdk_pixbuf-2.0.so.0,
तो निम्न कमांड चलाएँ:
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4
निर्देश एक Linux Ubuntu वितरण (देशी और WSL दोनों) पर परीक्षण किए गए थे।
यदि conda पहले से स्थापित नहीं है, तो आपको install_conda.sh स्क्रिप्ट चलाकर इसे स्थापित करना होगा।
bash install-conda.sh
एक बार यह हो जाने के बाद, एक नया टर्मिनल खोलें और आरंभीकरण स्क्रिप्ट चलाएँ:
bash init.sh
यह सभी आवश्यक OS और पायथन निर्भरताओं के साथ cybersim नामक एक conda वातावरण बनाएगा।
वातावरण को सक्रिय करने के लिए चलाएँ:
conda activate cybersim
विंडोज पर समर्थित डेव वातावरण WSL के माध्यम से है। आपको पहले अपनी विंडोज मशीन पर एक Ubuntu WSL वितरण स्थापित करना होगा, और फिर लिनक्स निर्देशों (अगला खंड) के साथ आगे बढ़ना होगा।
Git के साथ प्रमाणीकरण करने के लिए, आप या तो SSH-आधारित प्रमाणीकरण का उपयोग कर सकते हैं या वैकल्पिक रूप से स्वचालित रूप से PAT टोकन उत्पन्न करने के लिए क्रेडेंशियल-हेल्पर ट्रिक का उपयोग कर सकते हैं। बाद वाला WSL के तहत निम्न कमांड चलाकर किया जा सकता है (यहाँ अधिक जानकारी):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
अपने वातावरण को एक डॉकर कंटेनर के भीतर चलाने के लिए, हम निम्नलिखित निर्देशों का उपयोग करके लिनक्स (WSL) पर विंडोज सबसिस्टम के माध्यम से docker चलाने की अनुशंसा करते हैं:
WSL पर विंडोज के तहत डॉकर स्थापित करना।
यह विधि अब बनाए नहीं रखी गई है, कृपया इसके बजाय WSL सबसिस्टम लिनक्स वातावरण के तहत चलाना पसंद करें।
लेकिन यदि आप जोर देते हैं तो आप Python 3.10 स्थापित करके शुरू कर सकते हैं, फिर एक Powershell प्रॉम्प्ट में ./init.ps1 स्क्रिप्ट चलाएँ।
सबसे तेज़ तरीका Docker कंटेनर के माध्यम से है।
नोट: लाइसेंसिंग कारणों से, हम किसी भी बिल्ड आर्टिफैक्ट को सार्वजनिक रूप से पुनर्वितरित नहीं करते हैं। विशेष रूप से, नीचे दिए गए कमांड में संदर्भित डॉकर रजिस्ट्री
spinshot.azurecr.ioकेवल परियोजना अनुरक्षकों के लिए निजी रखा गया है।एक वर्कअराउंड के रूप में, आप प्रदान किए गए
Dockerfileका उपयोग करके स्वयं डॉकर इमेज को फिर से बना सकते हैं, परिणामी इमेज को अपनी स्वयं की डॉकर रजिस्ट्री पर प्रकाशित कर सकते हैं और नीचे दिए गए कमांड में रजिस्ट्री नाम बदल सकते हैं।