
एंड्रॉइड एप्लिकेशन से स्थिर और गतिशील फीचर्स के स्वचालित निष्कर्षण के लिए एक फ्रेमवर्क
यह Android APK से स्थैतिक और गतिशील विशेषताओं को निकालने का एक उपकरण है। यह DroidBox, FlowDroid, Strace, AndroGuard या VirusTotal विश्लेषण जैसे विभिन्न प्रसिद्ध Android ऐप विश्लेषण उपकरणों को जोड़ता है। APK फ़ाइलों वाली एक स्रोत निर्देशिका प्रदान करने पर, AndroPyTool इन सभी उपकरणों को पूर्व-स्थैतिक, स्थैतिक और गतिशील विश्लेषण करने के लिए लागू करता है और JSON और CSV प्रारूपों में सुविधाओं की फ़ाइलें उत्पन्न करता है तथा सभी डेटा को MongoDB डेटाबेस में सहेजने की भी अनुमति देता है।
अधिक जानकारी प्राप्त करने के लिए आप निम्नलिखित दो शोधपत्र पढ़ सकते हैं:
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). हाइब्रिड फीचर फ्यूजन और एन्सेम्बल क्लासिफायर के माध्यम से Android मैलवेयर का पता लगाना: AndroPyTool फ्रेमवर्क और OmniDroid डेटासेट। Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). Android मैलवेयर के स्थैतिक और गतिशील विश्लेषण के लिए एक नया उपकरण। In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
कृपया, यदि आप इस उपकरण का उपयोग करते हैं, तो अपने शोधपत्रों में उपरोक्त कार्यों को उद्धृत करें।

AndroPyTool को स्थापित करने और उपयोग करने के दो संभावित तरीके हैं।
मोड A - DOCKER: एक Docker कंटेनर डाउनलोड करना जिसमें सभी आवश्यक फ़ाइलें हैं। यह अनुशंसित विकल्प है, आप केवल दो चरणों में AndroPyTool को चला सकते हैं।
मोड B - स्रोत कोड: सभी आवश्यक लाइब्रेरीज़ को स्थापित और कॉन्फ़िगर करना तथा Python स्रोत कोड चलाना।
AndroPyTool का तेज़ और विश्वसनीय संस्करण प्रदान करने के लिए एक Docker कंटेनर बनाया गया है। Docker का उपयोग करके AndroPyTool का उपयोग करने के लिए आपको बस यह करना होगा:
Docker स्थापित करें (यदि आपने पहले से नहीं किया है)। निर्देश यहाँ देखें। यदि आप Ubuntu का उपयोग नहीं कर रहे हैं, तो सही ऑपरेटिंग सिस्टम में बदलें।
Docker hub से कंटेनर खींचें:
$ docker pull alexmyg/andropytool
कंटेनर लॉन्च करके AndroPyTool चलाएँ:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
आपको </PATH/TO/FOLDER/WITH/APKS/> को अपने होस्ट के उस पथ से बदलना होगा जिसमें विश्लेषण किए जाने वाले APK हैं। तर्क "-s" ऊपर दी गई पंक्ति के अनुसार /apks/ की ओर इशारा करते हुए प्रदान किया जाना चाहिए।
नोट 2: AndroPyTool आपकी APK फ़ाइलों को एक संगठित कार्यशील निर्देशिका उत्पन्न करने के लिए विभिन्न उपफ़ोल्डरों में ले जाता है। फ़ोल्डर संरचना योजना देखें।
androPyTool को विभिन्न तर्क प्रदान किए जा सकते हैं:
-h: सहायता संदेश दिखाएँ और बाहर निकलें।-all, --allsteps: AndroPyTool के सभी चरण निष्पादित करता है (अनुशंसित)। VirusTotal रिपोर्ट प्राप्त करने के लिए, -vt तर्क भी प्रदान किया जाना चाहिए जिसके बाद VirusTotal API कुंजी हो। यदि -all विकल्प प्रदान नहीं किया गया है, तो केवल अंतिम चरण और प्रदान किए गए तर्क निष्पादित किए जाते हैं।-s SOURCE_FOLDER, --source SOURCE_FOLDER: विश्लेषण किए जाने वाले APK वाला फ़ोल्डर। सभी नमूनों में .apk एक्सटेंशन होना चाहिए। यदि AndroPyTool का पिछला निष्पादन बाधित हुआ था, तो पिछली कार्यशील निर्देशिका प्रदान की जानी चाहिए।-S, --single: एकल विश्लेषण को अलग से सहेजें। डिफ़ॉल्ट: False।-f, --filter: मान्य और अमान्य APK फ़िल्टर करें (अनुशंसित)।-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: VirusTotal सेवा के साथ एप्लिकेशन का विश्लेषण करें। इसके बाद एक VirusTotal API कुंजी होनी चाहिए।-cl, : VirusTotal रिपोर्ट के आधार पर ऐप्स को मैलवेयर या बिनाइनवेयर के रूप में वर्गीकृत करें। --virustotal तर्क सेट होना चाहिएनोट: यह प्रक्रिया केवल Ubuntu में परीक्षण की गई है
0. आवश्यकताएँ
$ sudo apt-get update
$ sudo apt-get install -y --no-install-recommends software-properties-common wget git lib32gcc1 lib32ncurses5 lib32stdc++6 lib32z1 libc6-i386 libgl1-mesa-dev python-pip python-dev gcc python-tk curl
$ sudo add-apt-repository ppa:webupd8team/java -y
$ sudo apt-get update
$ sudo echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
$ sudo apt-get install -y oracle-java8-installer
$ sudo apt-get install -y python-setuptools
$ sudo apt-get clean
1. आपको Android SDK स्थापित करने की आवश्यकता है (यदि आपके पास पहले से है तो अगले चरण पर जाएँ) अगले चरण आपको Non-GUI मोड में Android SDK स्थापित करने की अनुमति देंगे:
Android SDK डाउनलोड और अनज़िप करें:
$ cd
$ wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
$ tar -xvf android-sdk_r24.2-linux.tgz
Android SDK को पथ में जोड़ें (यदि आप Bash का उपयोग नहीं करते हैं यानी आप Zsh पसंद करते हैं, तो सही फ़ाइल को संशोधित करना याद रखें)। ऐसा करने के लिए, अपनी ~/.bashrc फ़ाइल में ये दो पंक्तियाँ जोड़ें:
export ANDROID_HOME=$HOME/android-sdk-linux/
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
वर्तमान सत्र में लाइब्रेरीज़ लोड करें:
$ source ~/.bashrc
2. हमें Android 16 पैकेज स्थापित करना होगा
$ echo y | android update sdk --filter platform-tools --no-ui --force -a
$ echo y | android update sdk --filter tools --no-ui --force -a
$ echo y | android update sdk --filter android-16 --no-ui --force -a
$ echo y | android update sdk --filter sys-img-armeabi-v7a-android-16 --no-ui -a
3. आइए रिपॉजिटरी डाउनलोड करें
$ git clone --recursive https://github.com/alexMyG/AndroPyTool.git
$ wget https://github.com/alexMyG/AndroPyTool/releases/download/droidbox_images_patched/images_droidbox.zip
$ unzip -o images_droidbox.zip -d AndroPyTool/DroidBox_AndroPyTool/images
$ touch AndroPyTool/avclass/__init__.py
3. आइए DroidBox तैयार करें
$ chmod 744 AndroPyTool/DroidBox_AndroPyTool/*.sh
$ echo "no" | AndroPyTool/DroidBox_AndroPyTool/createDroidBoxDevice.sh
4. आइए आवश्यक Python लाइब्रेरीज़ स्थापित करें
virtualenv:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
5. अब हम AndroPyTool चला सकते हैं
$ cd AndroPyTool/
$ python androPyTool.py -s </PATH/TO/FOLDER/WITH/APKS/>
इनपुट: ".apk" एक्सटेंशन वाली फ़ाइलों वाला एक फ़ोल्डर। आउटपुट: इस योजना के अनुसार फ़ोल्डरों की एक संरचना:
/ --> रूट फ़ोल्डर
/samples/ --> नमूने, मूल रूप से रूट फ़ोल्डर में
/samples/BW/ --> बिनाइनवेयर नमूने
/samples/MW/ --> मैलवेयर नमूने
/invalid_apks/ --> अमान्य APK मिले
/VT_analysis/ --> VirusTotal विश्लेषण रिपोर्ट
/FlowDroid_outputs/ --> FlowDroid परिणाम
/FlowDroid_processed/ --> FlowDroid परिणाम संसाधित
/DroidBox_outputs/ --> DroidBox आउटपुट कच्चे
/Dynamic/Droidbox/ --> Droidbox विश्लेषण JSON में
/Dynamic/Strace/ --> Strace विश्लेषण CSV में
/Features_files/ --> AndroPyTool से उत्पन्न सुविधा फ़ाइलें
--classify-fw, --flowdroid: Flowdroid चलाएँ।-dr, --droidbox: Droidbox चलाएँ।-c, --cleanup: अस्थायी कार्य फ़ाइलों को हटाकर सफाई करें। डिफ़ॉल्ट: True-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: सभी Android API पैकेजों वाली TXT फ़ाइल। डिफ़ॉल्ट: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: सभी Android API क्लासेस वाली TXT फ़ाइल। डिफ़ॉल्ट: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: सभी Android API क्लासेस वाली TXT फ़ाइल। डिफ़ॉल्ट: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: सभी सिस्टम कमांड वाली TXT फ़ाइल। डिफ़ॉल्ट: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: सभी Android API क्लासेस वाली TXT फ़ाइल। डिफ़ॉल्ट: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: उत्पन्न रिपोर्ट को mongodb डेटाबेस में निर्यात करता है। योजना के अनुसार कनेक्शन पता आवश्यक है: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: उत्पन्न रिपोर्ट को CSV फ़ाइल में निर्यात करता है। केवल स्थैतिक सुविधाएँ शामिल हैं।--color: संदेश मुद्रित करते समय रंगों की अनुमति दें।--no-color: संदेश मुद्रित करने के लिए रंगों का उपयोग न करें।