
कुछ ह्युरिस्टिक्स के आधार पर SWF फाइलों का स्वचालित विश्लेषण। प्लगइन्स के माध्यम से विस्तार योग्य।
नोट: निम्नलिखित निर्देश Python3 के लिए हैं।
यदि आप Python2.7 पर FLASHMINGO स्थापित करना चाहते हैं तो आप रिलीज़ टैब के अंतर्गत रिलीज़ 1.0 देख सकते हैं। स्थापना चरण मूलतः समान हैं।
requirements.txt में सूचीबद्ध Python3 पैकेज स्थापित करें।
आप निम्न कमांड का उपयोग कर सकते हैं: pip3 install -r requirements.txt
यदि आप डीकंपाइलेशन कार्यक्षमता का उपयोग करना चाहते हैं तो आपको Jython स्थापित करना होगा। Ubuntu/Debian उपयोगकर्ता apt install jython जारी कर सकते हैं
प्रोजेक्ट को क्लोन करें या ज़िप फ़ाइल डाउनलोड करें।
FLASHMINGO SWF फ़ाइलों के लिए एक विश्लेषण फ्रेमवर्क है। यह उपकरण स्वचालित रूप से संदिग्ध फ्लैश फ़ाइलों को ट्राइएज करता है और आगे की विश्लेषण प्रक्रिया का मार्गदर्शन करता है, जिससे आपकी टीम में बहुमूल्य संसाधन मुक्त होते हैं। आप FLASHMINGO के विश्लेषण मॉड्यूल को अपने कार्यप्रवाह में आसानी से शामिल कर सकते हैं।
आज तक फोरेंसिक जांचकर्ताओं और मैलवेयर विश्लेषकों को संदिग्ध SWF फ़ाइलों से निपटना पड़ता है। यदि इतिहास खुद को दोहराता है तो 2020 में फ्लैश के जीवन के अंत के बाद भी सुरक्षा खतरा और भी बड़ा हो सकता है। सिस्टम एक विरासत फ़ाइल प्रारूप का समर्थन करना जारी रखेंगे जिसे अब सुरक्षा पैच के साथ अपडेट नहीं किया जाएगा। इस समस्या से निपटने का सबसे अच्छा तरीका स्वचालन है और यह वह जगह है जहाँ FLASHMINGO आपकी मदद कर सकता है। FLASHMINGO एक विश्लेषण फ्रेमवर्क है जो स्वचालित रूप से SWF फ़ाइलों को संसाधित करता है, जो आपको न्यूनतम प्रयास के साथ संदिग्ध फ्लैश नमूनों को फ़्लैग करने और उनका विश्लेषण करने में सक्षम बनाता है। यह एक स्टैंड-अलोन एप्लिकेशन या एक शक्तिशाली लाइब्रेरी के रूप में विभिन्न विश्लेषण कार्यप्रवाहों में एकीकृत होता है। उपयोगकर्ता कस्टम Python प्लगइन्स के माध्यम से उपकरण की कार्यक्षमता को आसानी से बढ़ा सकते हैं।
FLASHMINGO को सरलता को ध्यान में रखकर डिज़ाइन किया गया है। यह एक SWF फ़ाइल पढ़ता है और उसकी सामग्री और संरचना का प्रतिनिधित्व करने वाला एक ऑब्जेक्ट (SWFObject) बनाता है। उसके बाद FLASHMINGO इस SWFObject पर कार्य करने वाले प्लगइन्स की एक श्रृंखला चलाता है और मुख्य प्रोग्राम को उनके मान लौटाता है।
नीचे एक अनिवार्य ASCII कला प्रवाह आरेख है:
+----------+
| |
+------------+----------->+ PLUGIN 1 +------------+
| | | | |
| | +----------+ |
| | |
| | +----------+ |
| | | | |
+---------+ | +----------->+ PLUGIN 2 +--------+ |
|SWF FILE +----------->+ FLASHMINGO | | | | |
+---------+ | | +----------+ | |
| | | |
| | | |
| | +-----v---v-+
| | | |
| | | |
+-----+------+------------------------->+ SWFOBJECT |
^ | |
| | |
| +-----+-----+
| |
| |
| |
+---------------------------------------+
अपने स्वयं के प्रोजेक्ट्स में FLASHMINGO को एक लाइब्रेरी के रूप में उपयोग करते समय, आपको केवल दो प्रकार की वस्तुओं का ध्यान रखना होगा:
SWFObject(s), जो नमूने का प्रतिनिधित्व करते हैंFlashmingo ऑब्जेक्ट। यह मूलतः प्लगइन्स और SWFObject(s) को जोड़ने वाले हार्नेस के रूप में कार्य करता है।FLASHMINGO प्लगइन्स अपने स्वयं के निर्देशिकाओं में संग्रहीत होते हैं... आपने अनुमान लगाया: plugins
जब एक Flashmingo ऑब्जेक्ट को इंस्टैंशिएट किया जाता है, तो यह इस निर्देशिका के माध्यम से जाता है और सभी प्लगइन्स के मैनिफेस्ट को संसाधित करता है। यदि यह इंगित करता है कि प्लगइन सक्रिय है, तो इसे बाद में उपयोग के लिए पंजीकृत किया जाता है। कोड स्तर पर, इसका मतलब है कि plugins सूची में एक छोटा plugin_info शब्दकोश जोड़ा जाता है।
प्लगइन्स को run_plugin API के माध्यम से दो तर्कों के साथ आमंत्रित किया जाता है:
SWFObject इंस्टेंसवैकल्पिक रूप से, अधिकांश प्लगइन्स आपको अपना स्वयं का उपयोगकर्ता डेटा पास करने की अनुमति देते हैं। यह प्लगइन पर निर्भर है (दस्तावेज़ीकरण पढ़ें) और इसे एक उदाहरण के साथ अधिक आसानी से समझाया जा सकता है।
डिफ़ॉल्ट प्लगइन SuspiciousNames सभी स्थिर पूल में संदिग्ध उपस्ट्रिंग वाले स्ट्रिंग्स की खोज करेगा (उदाहरण के लिए: 'overflow', 'spray', 'shell', आदि)। प्लगइन में सामान्य उपस्ट्रिंग्स की एक सूची पहले से हार्ड-कोडित है ताकि इसका उपयोग as-is किया जा सके। हालाँकि, आप इस मामले में names पैरामीटर के माध्यम से अपने स्वयं के परिभाषित उपस्ट्रिंग्स की एक सूची पास कर सकते हैं।
कोड उदाहरण:
fm = Flashmingo()
print fm.run_plugin('DangerousAPIs', swf=swf)
print fm.run_plugin('SuspiciousNames', swf=swf, names=['spooky'])
FLASHMINGO बॉक्स से बाहर कुछ उपयोगी प्लगइन्स के साथ आता है:
आसान विकास के लिए एक टेम्पलेट प्लगइन प्रदान किया गया है। FLASHMINGO का विस्तार करना काफी सीधा है। इन सरल चरणों का पालन करें:
run विधि को ओवरराइड करेंआप शुरू करने के लिए तैयार हैं :)
docs निर्देशिका देखें$ pip install sphinxcontrib-napoleon
Sphinx को अपने docs बनाने के लिए सेट करने के बाद, Sphinx conf.py फ़ाइल में napoleon सक्षम करें:
conf.py में, napoleon को एक्सटेंशन सूची में जोड़ें
extensions = ['sphinxcontrib.napoleon']
अपने API दस्तावेज़ीकरण को बनाने के लिए sphinx-apidoc का उपयोग करें:
$ sphinx-apidoc -f -o docs/source projectdir
यह Sphinx को संसाधित करने के लिए .rst फ़ाइलें बनाता है
$ make html
बस! :)