
إطار عمل لاستخراج الميزات الثابتة والديناميكية تلقائيًا من تطبيقات Android
هذه أداة لاستخراج الميزات الثابتة والديناميكية من ملفات APK لأندرويد. تجمع بين أدوات تحليل تطبيقات أندرويد المعروفة مثل DroidBox و FlowDroid و Strace و AndroGuard أو تحليل VirusTotal. عند توفير مجلد مصدر يحتوي على ملفات APK، تقوم أندرو باي تول بتطبيق كل هذه الأدوات لإجراء تحليل ما قبل الثابت والثابت والديناميكي وإنشاء ملفات الميزات بصيغ JSON و CSV، كما تسمح بحفظ جميع البيانات في قاعدة بيانات MongoDB.
للحصول على مزيد من المعلومات، يمكنك قراءة الورقتين التاليتين:
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). كشف البرامج الضارة لأندرويد من خلال دمج الميزات الهجينة والمصنفات الجماعية: إطار عمل أندرو باي تول ومجموعة بيانات OmniDroid. Information Fusion. DOI: 10.1016/j.inffus.2018.12.006
Martín, A., Lara-Cabrera, R., & Camacho, D. (2018). أداة جديدة لتحليل البرامج الضارة لأندرويد بشكل ثابت وديناميكي. In Data Science and Knowledge Engineering for Sensing Decision Support (pp. 509-516). World Scientific.
يرجى، إذا كنت تستخدم هذه الأداة، الاستشهاد بالأعمال المذكورة أعلاه في أوراقك البحثية.

هناك طريقتان محتملتان لتثبيت واستخدام أندرو باي تول.
الوضع أ - دوكر (Docker): تنزيل حاوية دوكر تحتوي على جميع الملفات اللازمة. هذا هو الخيار الموصى به، يمكنك تشغيل أندرو باي تول في خطوتين فقط.
الوضع ب - الكود المصدري: تثبيت وتكوين جميع المكتبات اللازمة وتشغيل كود بايثون المصدري.
تم بناء حاوية دوكر لتوفير إصدار سريع وموثوق من أندرو باي تول. لاستخدام أندرو باي تول عبر دوكر، كل ما عليك فعله هو:
تثبيت دوكر (إذا لم تقم بذلك بالفعل). اتبع التعليمات هنا. إذا كنت لا تستخدم أوبونتو، فغيّر إلى نظام التشغيل المناسب.
سحب الحاوية من Docker hub:
$ docker pull alexmyg/andropytool
تشغيل أندرو باي تول عن طريق إطلاق الحاوية:
$ docker run --volume=</PATH/TO/FOLDER/WITH/APKS/>:/apks alexmyg/andropytool -s /apks/ <ARGUMENTS>
تحتاج إلى استبدال </PATH/TO/FOLDER/WITH/APKS/> بمسار على جهاز المضيف الخاص بك يحتوي على ملفات APK المراد تحليلها. يجب توفير الوسيط "-s" كما هو موضح في السطر أعلاه، مشيراً إلى /apks/
ملاحظة 2: يقوم أندرو باي تول بنقل ملفات APK الخاصة بك إلى مجلد فرعي مختلف من أجل إنشاء دليل عمل منظم. راجع مخطط هيكل المجلدات.
هناك وسائط مختلفة يمكن توفيرها لأندرو باي تول:
-h: إظهار رسالة المساعدة والخروج.-all, --allsteps: تنفيذ جميع خطوات أندرو باي تول (مُوصى به). للحصول على تقرير VirusTotal، يجب أيضًا توفير الوسيط -vt متبوعًا بمفتاح API لـ VirusTotal. إذا لم يتم توفير خيار -all، فسيتم تنفيذ الخطوة الأخيرة فقط بالإضافة إلى الوسائط المقدمة.-s SOURCE_FOLDER, --source SOURCE_FOLDER: المجلد الذي يحتوي على ملفات APK المراد تحليلها. يجب أن تحتوي جميع العينات على امتداد .apk. إذا تم مقاطعة تنفيذ سابق لأندرو باي تول، فيجب توفير دليل العمل السابق.-S, --single: حفظ التحليل الفردي بشكل منفصل. الافتراضي: خطأ.-f, --filter: تصفية ملفات APK الصالحة وغير الصالحة (مُوصى به).-vt VIRUSTOTAL_API_KEY, --virustotal VIRUSTOTAL_API_KEY: تحليل التطبيقات باستخدام خدمة VirusTotal. يجب أن يتبعه مفتاح API لـ VirusTotal.-cl, : تصنيف التطبيقات إلى برامج ضارة أو برامج جيدة بناءً على تقارير VirusTotal. يجب تعيين الوسيط --virustotal.ملاحظة: تم اختبار هذا الإجراء فقط على أوبونتو.
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 (انتقل إلى الخطوة التالية إذا كان لديك بالفعل) ستسمح لك الخطوات التالية بتثبيت 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
لنقم بتثبيت Android 16، وهو الإصدار المدعوم من DroidBox (النظام الأساسي وصورة النظام):
$ 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. لنقم بتثبيت مكتبات بايثون المطلوبة
virtualenv:
$ sudo pip install virtualenv
$ virtualenv droidbox_env
$ source droidbox_env/bin/activate
$ pip install -r AndroPyTool/requirements.txt
5. الآن يمكننا تشغيل أندرو باي تول
$ 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/ --> ملفات الميزات التي تم إنشاؤها باستخدام أندرو باي تول
--classify-fw, --flowdroid: تشغيل FlowDroid.-dr, --droidbox: تشغيل DroidBox.-c, --cleanup: إجراء تنظيف بحذف ملفات العمل المؤقتة. الافتراضي: صحيح.-P PACKAGEINDEX, --packgeIndex PACKAGEINDEX: ملف TXT يحتوي على جميع حزم API لأندرويد. الافتراضي: info/package_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: ملف TXT يحتوي على جميع فئات API لأندرويد. الافتراضي: info/class_index.txt-C CLASSINDEX, --classIndex CLASSINDEX: ملف TXT يحتوي على جميع فئات API لأندرويد. الافتراضي: info/class_index.txt-SC SYSTEMCOMMANDSINDEX, --systemCommandsIndex SYSTEMCOMMANDSINDEX: ملف TXT يحتوي على جميع أوامر النظام. الافتراضي: info/system_commands.txt-C CLASSINDEX, --classIndex CLASSINDEX: ملف TXT يحتوي على جميع فئات API لأندرويد. الافتراضي: info/class_index.txt-mg MONGODBURI, --mongodbURI MONGODBURI: تصدير التقرير الذي تم إنشاؤه إلى قاعدة بيانات MongoDB. يتطلب عنوان اتصال يتبع المخطط: localhost:27017-csv EXPORTCSV, --cexportCSV EXPORTCSV: تصدير التقرير الذي تم إنشاؤه إلى ملف CSV. يتم تضمين الميزات الثابتة فقط.--color: السماح بالألوان عند طباعة الرسائل.--no-color: عدم استخدام الألوان لطباعة الرسائل.