
Mitre ATT&CK Framework के साथ इंटरैक्ट करने के लिए एक Python पैकेज
.______ ____ ____ ___ .___________.___________. ______ __ ___
| _ \ \ \ / / / \ | | | / || |/ /
| |_) | \ \/ / / ^ \ `---| |----`---| |----`| ,----'| ' /
| ___/ \_ _/ / /_\ \ | | | | | | | <
| | | | / _____ \ | | | | | `----.| . \
| _| |__| /__/ \__\ |__| |__| \______||__|\__\
MITRE ATT&CK Frameworks के साथ इंटरैक्ट करने के लिए एक Python पैकेज
वर्तमान संस्करण 7.1.1 है
pyattck MITRE ATT&CK Frameworks के लिए एक हल्का-फुल्का फ्रेमवर्क है। यह पैकेज MITRE Enterprise, PRE-ATT&CK, Mobile, और ICS Frameworks से विवरण निकालता है।
pyattck संगठनों और व्यक्तियों को MITRE ATT&CK Framework(s) को प्रोग्रामेटिक तरीके से एक्सेस करने में सहायता करता है। इसका मतलब है, आप Enterprise, Mobile, Pre-Attck, और ICS फ्रेमवर्क द्वारा परिभाषित सभी अभिनेताओं, मैलवेयर, शमन, रणनीतियों, तकनीकों और टूल्स को कमांड-लाइन उपयोगिता या अपने कोड बेस में एम्बेड करके एक्सेस कर सकते हैं।
इस डेटा को स्वचालित (स्क्रिप्टेड/कोडेड) तरीके से एक्सेस करने के कई कारण हो सकते हैं, लेकिन कुछ उदाहरण हैं:
pyattck के अन्य लाभ भी हैं जिनमें अतिरिक्त प्रासंगिक डेटा प्रदान करने की क्षमता शामिल है। आप इस डेटा के बारे में अधिक जानकारी यहाँ पा सकते हैं, लेकिन मूल बात यह है कि pyattck अतिरिक्त प्रासंगिक डेटा एकत्र करने के लिए कई ओपन-सोर्स रिपॉजिटरी का उपयोग करता है, जैसे कि किसी तकनीक को निष्पादित करने के लिए उपयोग किए जाने वाले कमांड, किसी दुर्भावनापूर्ण अभिनेता के बारे में देश और अन्य विवरण, परिभाषित टूल/मैलवेयर के समान मैलवेयर के अन्य वेरिएंट, आदि।
यह अतिरिक्त संदर्भ ही pyattck को वास्तव में शक्तिशाली बनाता है और लोगों को अपने डिटेक्शन नियमों के अधिक मजबूत परीक्षण और सत्यापन, परीक्षण धारणाओं को मान्य करने आदि में सक्षम बनाता है। वास्तव में, pyattck का उपयोग ब्लू, रेड और पर्पल टीमों को संगठनों (और स्वयं) की रक्षा करने में मदद करने के अनगिनत तरीके हैं।
pyattck पैकेज MITRE ATT&CK Frameworks से सभी रणनीतियाँ, तकनीकें, अभिनेता, मैलवेयर, टूल और शमन, साथ ही MITRE ATT&CK डेटासेट (उप-तकनीकों सहित) के भीतर कोई भी परिभाषित संबंध प्राप्त करता है।
इसके अलावा, तकनीकों, अभिनेताओं और टूल (यदि लागू हो) के पास अब तीसरे पक्ष के संसाधनों से एकत्रित डेटा है जो विभिन्न गुणों के माध्यम से सुलभ है। इन सुविधाओं के बारे में अधिक विस्तृत जानकारी के लिए, External Datasets देखें।
pyattck पैकेज आपको निम्न की अनुमति देता है:
आप pyattck को OS X, Linux या Windows पर स्थापित कर सकते हैं। आप इसे सीधे स्रोत से भी स्थापित कर सकते हैं। स्थापित करने के लिए, नीचे संबंधित ऑपरेटिंग सिस्टम शीर्षक के अंतर्गत कमांड देखें।
pip install pyattck
git clone https://github.com/swimlane/pyattck.git
cd pyattck
python setup.py install
pyattck का उपयोग करने के लिए आपको एक Attck ऑब्जेक्ट को इंस्टैंशिएट करना होगा। यद्यपि आप सीधे प्रत्येक वर्ग के साथ बातचीत कर सकते हैं, लेकिन इच्छित उपयोग Attck ऑब्जेक्ट के माध्यम से है:
from pyattck import Attck
attack = Attck()
डिफ़ॉल्ट रूप से, sub-techniques प्रत्येक तकनीक ऑब्जेक्ट के अंतर्गत सुलभ हैं। आप अपना Attck ऑब्जेक्ट बनाते समय nested_techniques=False पास करके इस व्यवहार को बंद कर सकते हैं।
उदाहरण के लिए, डिफ़ॉल्ट व्यवहार निम्नलिखित उदाहरण जैसा दिखता है:
from pyattck import Attck
attack = Attck()
for technique in attack.enterprise.techniques:
print(technique.id)
print(technique.name)
for subtechnique in technique.techniques:
print(subtechnique.id)
print(subtechnique.name)
आप अपने Attck ऑब्जेक्ट पर निम्नलिखित मुख्य गुणों तक पहुँच सकते हैं:
एक बार जब आप MITRE ATT&CK Framework निर्दिष्ट कर देते हैं, तो आप अतिरिक्त गुणों तक पहुँच सकते हैं।
यहाँ Enterprise गुण के अंतर्गत सुलभ ऑब्जेक्ट दिए गए हैं:
enterprise गुण के अंतर्गत ऑब्जेक्ट प्रकारों के बारे में अधिक जानकारी के लिए, Enterprise देखें।
यहाँ PreAttck गुण के अंतर्गत सुलभ ऑब्जेक्ट दिए गए हैं:
preattck गुण के अंतर्गत ऑब्जेक्ट प्रकारों के बारे में अधिक जानकारी के लिए, PreAttck देखें।
यहाँ Mobile गुण के अंतर्गत सुलभ ऑब्जेक्ट दिए गए हैं:
mobile गुण के अंतर्गत ऑब्जेक्ट प्रकारों के बारे में अधिक जानकारी के लिए, Mobile देखें।
यहाँ ICS गुण के अंतर्गत सुलभ ऑब्जेक्ट दिए गए हैं:
ics गुण के अंतर्गत ऑब्जेक्ट प्रकारों के बारे में अधिक जानकारी के लिए, ICS देखें।
pyattck के भीतर नई इंटरेक्टिव मेनू सिस्टम का उपयोग करने के लिए, आपको interactive को True पर सेट करना होगा। ऐसा करने पर, यह इंटरेक्टिव कंसोल मेनू सिस्टम लॉन्च करेगा।
एक स्क्रिप्ट का उपयोग करके आप इसे चलाकर लॉन्च कर सकते हैं:
from pyattck import Attck
Attck(interactive=True)
या आप कमांड लाइन पर इंटरेक्टिव मोड भी चला सकते हैं:
pyattck --interactive
नीचे एक gif उदाहरण देखें:

pyattck आपको यह कॉन्फ़िगर करने की अनुमति देता है कि आप बाहरी डेटा संग्रहीत करते हैं या नहीं और इसे कहाँ संग्रहीत किया जाता है।
from pyattck import Attck
attck = Attck(
nested_techniques=True,
use_config=False,
save_config=False,
config_file_path='~/pyattck/config.yml',
data_path='~/pyattck/data',
enterprise_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_enterprise_attck_v1.json",
pre_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_pre_attck_v1.json",
mobile_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_mobile_attck_v1.json",
ics_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_ics_attck_v1.json",
nist_controls_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_nist_controls_v1.json",
generated_nist_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/attck_to_nist_controls.json",
**kwargs
)
डिफ़ॉल्ट रूप से, pyattck अब HTTP GET अनुरोधों का उपयोग करके अपने संबंधित स्थानों से नवीनतम बाहरी डेटा खींचता है। pyattck वर्तमान में निम्नलिखित स्थानों से खींचता है:
Attck ऑब्जेक्ट को इंस्टैंशिएट करते समय आपके पास कई विकल्प हैं। 4.0.0 से, आप अब निम्नलिखित में से कोई भी विकल्प निर्दिष्ट कर सकते हैं:
True के रूप में निर्दिष्ट करते हैं तो pyattck config_file_path स्थान में निर्दिष्ट कॉन्फ़िगरेशन को पुनः प्राप्त करने का प्रयास करेगा। यदि यह फ़ाइल दूषित है या नहीं मिल पाती है, तो हम निर्दिष्ट *_attck_json स्थानों से डेटा पुनः प्राप्त करने के लिए डिफ़ॉल्ट होंगे।True के रूप में निर्दिष्ट करते हैं तो pyattck कॉन्फ़िगरेशन फ़ाइल को config_file_path द्वारा निर्धारित स्थान पर सहेजेगा। इसके अतिरिक्त, हम सभी डाउनलोड की गई फ़ाइलों को निर्दिष्ट data_path स्थान पर सहेजेंगे। यदि आपने किसी भी *_attck_json पैरामीटर के लिए डाउनलोड URL के बजाय एक स्थानीय पथ स्थान निर्दिष्ट किया है, तो हम इस स्थान को अपने कॉन्फ़िगरेशन में सहेजेंगे और भविष्य में इस स्थान का संदर्भ देंगे।~/pyattck/config.yml है~/pyattck/data हैइसके अतिरिक्त, आप प्रत्येक व्यक्तिगत *_attck_json फ़ाइलों के लिए स्थान निर्दिष्ट कर सकते हैं या तो URI या स्थानीय फ़ाइल पथ पास करके। यदि आपने स्थानीय फ़ाइल पथ पास किया है, तो हम केवल इस फ़ाइल से पढ़ेंगे।
यदि आपने डिफ़ॉल्ट मानों का उपयोग किया है या इन JSON फ़ाइलों को पुनः प्राप्त करने के लिए एक वैकल्पिक URI स्थान निर्दिष्ट किया है, तो आप अतिरिक्त रूप से **kwargs पास कर सकते हैं जो किसी भी HTTP अनुरोध को करते समय Requests पायथन पैकेज को भेज दिया जाएगा।
हम समझते हैं कि कई अलग-अलग ओपन-सोर्स प्रोजेक्ट जारी किए जा रहे हैं, यहां तक कि दैनिक आधार पर भी, लेकिन हम एक सीधा-सादा Python पैकेज प्रदान करना चाहते थे जो उपयोगकर्ता को MITRE ATT&CK Framework के सभी वर्टिकल के बीच ज्ञात संबंधों की पहचान करने की अनुमति देता है।
यदि आप MITRE ATT&CK Framework से अपरिचित हैं, तो कुछ प्रमुख घटक हैं जिन्हें आपको अच्छी तरह से समझना चाहिए। पहला है रणनीतियाँ और तकनीकें। MITRE ATT&CK Framework को देखते समय, रणनीतियाँ स्तंभ हैं और एक हमले के विभिन्न चरणों का प्रतिनिधित्व करती हैं।
MITRE ATT&CK Framework एक सर्वव्यापी/डिफ़ॉल्ट सुरक्षा कवरेज मानचित्र नहीं है - यह बल्कि एक फ्रेमवर्क है और अपनी सुरक्षा स्थिति का आकलन करते समय अतिरिक्त पहलुओं पर भी विचार किया जाना चाहिए।
तकनीकें फ्रेमवर्क की पंक्तियाँ हैं और विशिष्ट रणनीतियों (स्तंभों) के अंतर्गत वर्गीकृत की जाती हैं। वे फ्रेमवर्क के भीतर डेटा बिंदु हैं जो आपकी सुरक्षा कमियों का आकलन करते समय मार्गदर्शन प्रदान करते हैं। इसके अलावा, (अधिकांश) तकनीकों में शमन मार्गदर्शन के साथ-साथ उन टूल, मैलवेयर और यहां तक कि अभिनेताओं/समूहों के बारे में जानकारी होती है जिन्होंने रिकॉर्ड किए गए हमलों के दौरान इस तकनीक का उपयोग किया है।
इसका मतलब है, यदि आपका संगठन कुछ अभिनेताओं/समूहों द्वारा उपयोग की जाने वाली TTPs (रणनीतियाँ तकनीकें और प्रक्रियाएं) पर केंद्रित है तो MITRE ATT&CK Framework आपके लिए एकदम सही है। यदि आप अपने संगठन के भीतर इस सुरक्षा परिपक्वता पर नहीं हैं, तो कोई चिंता नहीं! ATT&CK Framework अभी भी एक सरल और सीधी लेआउट में वास्तव में अच्छा मार्गदर्शन प्रदान करता है, लेकिन प्रोग्रामेटिक रूप से यह सीधा नहीं है—खासकर यदि आप फ्रेमवर्क का उपयोग करके अपने सुरक्षा नियंत्रणों को मापना (या मैप करना) चाहते हैं।
आप सुविधाएँ जोड़ सकते हैं या बग्स को ठीक कर सकते हैं या कोड को विकास परिवेश में चला सकते हैं।
विकास और परीक्षण वातावरण स्थापित करने के लिए, इस Dockerfile का उपयोग करें।
Dockerfile का उपयोग करने के लिए, इस रिपॉजिटरी निर्देशिका में cd करें और चलाएँ:
docker build --force-rm -t pyattck .
docker run pyattck
यह चलाने पर bin/test.py में परीक्षण Python फ़ाइल कॉल होती है।
इस परियोजना के भीतर परीक्षणों को सभी उपलब्ध गुणों और विधियों को कवर करना चाहिए। जैसे-जैसे यह परियोजना बढ़ेगी, परीक्षण अधिक मजबूत होते जाएंगे, लेकिन अभी के लिए हम परीक्षण कर रहे हैं कि वे मौजूद हैं और आउटपुट लौटाते हैं।
कृपया हमारे आचार संहिता और हमें पुल अनुरोध प्रस्तुत करने की प्रक्रिया के विवरण के लिए CONTRIBUTING.md पढ़ें।
हम संस्करण निर्धारण के लिए SemVer का उपयोग करते हैं।
pyattck के किसी विशिष्ट संस्करण की सुविधाओं के विवरण के लिए, CHANGELOG.md देखें।
योगदानकर्ताओं की सूची भी देखें।
यह परियोजना MIT License के तहत लाइसेंस प्राप्त है।
सबसे पहले, मैं उन सभी को धन्यवाद देना चाहूंगा जो ओपन-सोर्स परियोजनाओं में योगदान करते हैं, विशेष रूप से इन परियोजनाओं के अनुरक्षकों और निर्माताओं को। उनके बिना, यह क्षमता संभव नहीं होगी।
यह डेटा सेट कई अलग-अलग स्रोतों से उत्पन्न होता है। जैसे-जैसे हम अधिक स्रोत जोड़ते रहेंगे, हम उन्हें यहाँ जोड़ते रहेंगे। इन सभी परियोजनाओं के लिए फिर से धन्यवाद। किसी विशेष क्रम में नहीं, pyattck निम्नलिखित परियोजनाओं से डेटा का उपयोग करता है:
.. toctree::
:titlesonly:
configuration
pyattck/attck
Dataset <https://github.com/swimlane/pyattck-data>
Data Models <https://github.com/swimlane/pyattck-data>
enterprise/enterprise
preattck/preattck
mobile/mobileattck
ics/icsattck