
स्वचालित रणनीति, तकनीक और प्रक्रियाएँ
स्वचालित रणनीति, तकनीक और प्रक्रियाएं। रीग्रेशन परीक्षणों, उत्पाद मूल्यांकनों, शोधकर्ताओं के लिए डेटा उत्पन्न करने आदि के लिए जटिल अनुक्रमों को मैन्युअल रूप से पुनः चलाना थकाऊ हो सकता है। मैंने Empire (या कोई भी फ्रेमवर्क/उत्पाद/टूलकिट जो APIs प्रदान करते हैं जैसे Metasploit (RPC), Cobalt-Strike आदि) को Visual Studio Code (या समकक्ष) जैसे IDE का उपयोग करके स्क्रिप्ट करना आसान बनाने का विचार किया। इसलिए मैंने AutoTTP डिजाइन करना शुरू किया। यह अभी भी कार्य प्रगति पर है। Empire 2.2 के साथ परीक्षण किया गया।

यूट्यूब - अवलोकन और चयनित तकनीकों का गहन अध्ययन

मेरे मामले में, रणनीतियाँ मेरे Attack Life Cycle मॉडल के अनुसार व्यवस्थित हैं। अन्य मॉडल भी हैं जैसे Lockheed Martin's Kill-Chain(R), Mandiant Attack Life Cycle और Mitre's ATT&CK। कोई भी मॉडल हो, एक "Tactic" मूल रूप से तकनीकों को एक साथ समूहित करता है, जैसे कोड-निष्पादन/पेलोड-चलाना कई तरीकों से प्राप्त किया जा सकता है:

मैं प्रासंगिक "Tactics" को एक साथ समूहित करने के लिए "Stage" का उपयोग करता हूं। यदि आप स्रोत ट्री में देखते हैं, तो फ़ोल्डर संरचना मैट्रिक्स के Tactics कॉलम को दर्शाती है। मैट्रिक्स में प्रत्येक आक्रामक रणनीति के लिए संबंधित नियंत्रणों का भी उल्लेख किया गया है। ये चरण कैसे आए?

लाल चक्र के बीच में वेन आरेख डार्टमाउथ कॉलेज के "Three Tenets for Secure Cyber-Physical System Design and Assessment" से है। यह किसी भी सफल भौतिक/तार्किक हमलों के आवश्यक और पर्याप्त स्थितियों, या बस आवश्यकताओं को परिभाषित करता है। मैंने वेन आरेख के चारों ओर लाल रिंग (चरण) जोड़ा ताकि विशिष्ट आक्रामक प्रवाहों को चित्रित किया जा सके जो अंततः सूचना गोपनीयता, अखंडता और सिस्टम उपलब्धता या सुरक्षा पर प्रभाव डालते हैं यदि यह साइबर-भौतिक (महत्वपूर्ण सूचना बुनियादी ढांचे के बारे में सोचें) से संबंधित है।
एक हमलावर चरण 1 से शुरू कर सकता है और सीधे चरण 4 में जा सकता है, उदा. सार्वजनिक रूप से उजागर एडमिन पेज पर डिफ़ॉल्ट एडमिन क्रेडेंशियल्स। इसे रैखिक (चरण 1->2->3->4) होने की आवश्यकता नहीं है। प्रारंभिक घुसपैठ के बाद, वह पहले मशीन पर विशेषाधिकार बढ़ाने से पहले कुछ आंतरिक सूचना एकत्रीकरण (reconn) कर सकता/सकती है और फिर उसी नेटवर्क में किसी अन्य लक्ष्य मशीन पर एक दूरस्थ कमांड लॉन्च कर सकता/सकती है। अगली पीड़ित मशीन के लिए, यह एक चरण 2 है; सफल पेलोड वितरण और निष्पादन जो हमलावर को एक और मशीन पर कमांड और नियंत्रण प्राप्त करने की अनुमति देता है।

बाईं ओर की फ़ाइल एक प्रक्रिया स्क्रिप्ट है, दाईं ओर एक तकनीक स्क्रिप्ट है। ध्यान दें कि प्रक्रिया स्क्रिप्टिंग बहुत अधिक Empire-विशिष्ट विवरणों से भरी नहीं है, अधिकांश विवरण तकनीक स्क्रिप्ट में समाहित हैं। प्रक्रिया स्क्रिप्टिंग को संपत्तियों की जानकारी जैसे होस्टनाम/आईपी, किस ईमेल पर पेलोड भेजना है, कौन सी पेलोड तकनीक आदि का उपयोग करके तकनीकों के अनुक्रम पर ध्यान केंद्रित करना चाहिए।
उदाहरण "क्या उपयोगकर्ता एडमिन है?" वास्तव में कुछ चरणों से मिलकर बना है क्योंकि स्क्रिप्ट की टिप्पणियों में कम से कम 3 संभावनाएं बताई गई हैं। हम निश्चित रूप से Empire, Metasploit आदि में कस्टम "macros" बना सकते हैं, लेकिन यह एक विशेष फ्रेमवर्क/उत्पाद के भीतर कसकर एकीकृत हो जाता है। हम वहां उपलब्ध उपकरणों का लाभ उठाना चाहते हैं और पुन: प्रयोज्य तकनीकों को मॉड्यूल में व्यवस्थित करना चाहते हैं ताकि प्रक्रियात्मक स्तर (यानी ऑटोमेशन) पर मिश्रण और मिलान किया जा सके।

मैंने Empire में अच्छी तरह से संरचित मॉड्यूल का लाभ उठाकर एक ऑटो-कम्प्लीट पायथन क्लास बनाया। पूर्ण मॉड्यूल नाम (जैसे powershell/situational_awareness....) टाइप करने के बजाय, बस IDE की ऑटोकम्प्लीट क्षमताओं का उपयोग करें।

प्रत्येक मॉड्यूल के लिए, विकल्प होते हैं (अधिकांश यदि सभी फ्रेमवर्क के लिए नहीं)। Empire के साथ बात यह है कि एक बार जब आप इसे rest/headless के रूप में चलाते हैं (इस पर बाद में चर्चा करेंगे), तो मॉड्यूल विकल्पों को देखने के लिए कोई कंसोल नहीं है। ऑटोकम्प्लीट-हेल्पर क्लास में, प्रत्येक मॉड्यूल में एक options उप-वर्ग होता है। आवश्यक विकल्पों को उपसर्ग के रूप में दिखाया गया है जैसा कि ऊपर दिखाया गया है, इसलिए हम मॉड्यूल को कॉल करने से पहले उन विकल्पों को मानों से भर सकते हैं।

प्रत्येक मॉड्यूल का विवरण भी पायथन क्लास दस्तावेज़ीकरण के भाग के रूप में शामिल है और क्लास पर होवर करने पर प्रदर्शित होगा। चूंकि (Empire 2.1 के अनुसार) 276 मॉड्यूल हैं, इस हेल्पर क्लास को बनाने के लिए कुछ स्क्रिप्टिंग की आवश्यकता होगी! स्रोत: https://gist.github.com/jymcheong/22c2eede978c8eb694945e3347c20c6b
Visual Studio Code (या समकक्ष) जैसे IDE के साथ, कोई डीबग वेरिएबल वॉच का लाभ उठा सकता है, स्क्रिप्ट के माध्यम से कदम रख सकता है या रिटर्न वैल्यू संरचना जानने के बाद डिबगिंग/स्टेपिंग के दौरान स्क्रिप्ट को संशोधित भी कर सकता है। Empire के लिए REST API दस्तावेज़ उपलब्ध हैं, लेकिन कभी-कभी हमें मॉड्यूल चलाने तक रिटर्न वैल्यू का ठीक से पता नहीं चलता। इस कारण से, यह अगले विषय की ओर ले जाता है।
जितना हम IDE में सब कुछ करना चाहते हैं, आपको कंसोल की आवश्यकता होगी। DeathStar के लेखक, पहले से ही जानते थे कि उस स्क्रिप्ट को विकसित करते समय जो Empire का उपयोग करके Domain Admin को 0wn करने को स्वचालित करती है। मैंने उनके विचार को उधार लिया लेकिन उनके थ्रेडिंग दृष्टिकोण को Empire 2.1 के लिए अनुकूलित किया क्योंकि उनका दृष्टिकोण रीफैक्टर्ड start restful api फ़ंक्शन के लिए काम नहीं करेगा। स्रोत: https://gist.github.com/jymcheong/6a7668ecf73c29dd1d234d1c76ef438c
Empire स्क्रिप्ट को हैक करने की कोई आवश्यकता नहीं है क्योंकि Empire 2.2 में REST मोड चलाने के दौरान कमांड लूप हैंडलर है। हालांकि, एजेंट परिणाम प्राप्त करने के लिए API का उपयोग करते समय एजेंट के साथ इंटरैक्ट न करें।
शाउट आउट्स @radioboyQ को उनके EmpireAPIWrapper के लिए, @allfro और @Mikaayenson को pymetasploit के लिए, और @byt3bl33d3r को, MTFBWU।