
مجموعة أدوات اختبار الاختراق والتدقيق لتطبيقات أندرويد.
أداة جافا تساعد في اختبار اختراق تطبيقات أندرويد بشكل أسرع وأسهل وأكثر فعالية. يقدم أندروتيكلر العديد من ميزات جمع المعلومات والفحوصات الثابتة والديناميكية التي تغطي معظم جوانب اختبار اختراق تطبيقات أندرويد. كما يقدم العديد من الميزات التي يحتاجها مختبرو الاختراق أثناء اختباراتهم. يتكامل أندروتيكلر أيضًا مع فريدا لتوفير تتبع ومعالجة الدوال. تم نشر الأداة سابقًا تحت اسم تيكلر.
يتطلب أندروتيكلر مضيف لينكس وجهاز أندرويد متجذر متصل بمنفذ USB. لا تقوم الأداة بتثبيت أي شيء على جهاز أندرويد، فهي تنشئ فقط دليلاً باسم Tickler على /sdcard. يعتمد أندروتيكلر على Android SDK لتشغيل الأوامر على الجهاز ونسخ بيانات التطبيق إلى دليل TicklerWorkspace على المضيف لمزيد من التحليل. TicklerWorkspace هو دليل العمل الخاص بأندروتيكلر، ولكل تطبيق دليل فرعي منفصل في TicklerWorkspace يمكن أن يحتوي على ما يلي (اعتمادًا على إجراءات المستخدم):
يوجد دليل libs وملف الإعدادات Tickler.conf في نفس دليل ملف jar. يحدد ملف الإعدادات موقع دليل TicklerDir على المضيف ودليل Tickler على /sdcard لجهاز أندرويد. إذا لم يكن ملف الإعدادات موجودًا أو لم يتم تعيين هذين الدليلين، فسيتم استخدام القيم الافتراضية (Tickler_workspace في الدليل الحالي و /sdcard/Tickler على التوالي). يحتوي دليل Tickler_lib على بعض مكتبات جافا والأدوات الخارجية التي يستخدمها أندروتيكلر مثل apktool و dex2jar.
يعتمد أندروتيكلر بشدة على الأدوات التالية، لذا يجب أن تكون موجودة على جهازك قبل استخدامها:
هناك أدوات أخرى مطلوبة لبعض الميزات، لكن أندروتيكلر يمكنه العمل بدونها:
بناء الأداة من الكود
gradle build
انقل AndroTickler.jar إلى نفس دليل Tickler_lib وملف Tickler.conf (يتم إنشاؤها تلقائيًا في build/libs)
اجعل dex2jar قابلاً للتنفيذ (libs/notJars//dex2jar-2.1/d2j-dex2jar.sh و libs/notJars//dex2jar-2.1/d2j_invoke.sh)
قم بتوصيل جهاز أندرويد الخاص بك مع التطبيق المراد اختباره مثبتًا عليه
ملاحظة: إذا فشل بناء الكود المصدري، يمكنك تنزيل أحدث إصدار مترجم من علامة التبويب الإصدارات
الإصدار الحالي يقوم بما يلي:
java -jar AndroTickler.jar -h
سرد التطبيقات المثبتة على الجهاز:
java -jar AndroTickler.jar -pkgs
البحث عن تطبيق (حزمة) مثبت على الجهاز، بحيث يحتوي اسم الحزمة على مفتاح البحث
java -jar AndroTickler.jar -findPkg <searchKey>
java -jar AndroTickler.jar -pkg <package> [other options]
أي أمر يحتوي على الخيار -pkg (سواء تم استخدامه مع أي من الخيارات التالية أم لا)، يقوم بالإجراءات التالية إذا لم تكن قد تمت من قبل:
java -jar AndroTickler.jar -pkg <package> -info
يعيد المعلومات التالية:
java -jar AndroTickler.jar -pkg <package> -squeeze [short | <codeLocation> ]
يجلب ما يلي من كود جافا الذي تم فك ترجمته للتطبيق:
ليس من المستغرب أن يكون مخرجاته ضخمة عادة، لذلك يُنصح بتوجيه مخرجات الأمر إلى ملف
short يضغط فقط الكود الذي تم فك ترجمته والذي ينتمي إلى المطور. على سبيل المثال، إذا كان للتطبيق اسم حزمة com.notEnaf.myapp، فإن squeeze short يضغط فقط الكود في دليل com/notEnaf.
يضغط الكود فقط في دليل codeLocation. مفيد لتحديد نطاق بحثك أو ضغط الكود المصدري إذا كان متاحًا.
java -jar AndroTickler.jar -pkg <package> -l [-exp] [-v]
يسرد جميع مكونات التطبيق
-exp يعرض المكونات المصدرة فقط
-v يعطي معلومات أكثر تفصيلاً لكل مكون:
java -jar AndroTickler.jar -pkg <package> -l [-act | -ser | -rec | -prov ] [-exp] [-v]
java -jar AndroTickler.jar -pkg <package> -db [|e|l|d] [nu]
بشكل افتراضي، تقوم جميع أوامر -db بتحديث دليل تخزين بيانات التطبيق على المضيف قبل تشغيل الفحص.
بدون سمة أو e يختبر ما إذا كانت قواعد بيانات التطبيق مشفرة. هذا هو الإجراء الافتراضي في حالة عدم إعطاء أي خيار بعد علامة -db. l يسرد جميع قواعد بيانات التطبيق. قد لا يتم الكشف عن قواعد البيانات المشفرة. d يأخذ تفريغ sqlite لأي من قواعد البيانات غير المشفرة. nu noUpdate: يقوم بتشغيل أي من الخيارات أعلاه دون تحديث دليل بيانات التطبيق على المضيف.
java -jar AndroTickler.jar -pkg <package> -diff [d|detailed]
ينسخ دليل تخزين بيانات التطبيق (إلى DataDirOld) ثم يطلب من المستخدم القيام بالإجراء الذي يريده والضغط على Enter عند الانتهاء. ثم ينسخ دليل تخزين البيانات مرة أخرى (إلى DataDir) ويقوم بتشغيل diff بينهما لإظهار الملفات التي تم إضافتها أو حذفها أو تعديلها.
d|detailed يقوم بنفس الأمر -diff العادي، كما يعرض بالضبط ما تغير في الملفات النصية وقواعد البيانات غير المشفرة.
java -jar AndroTickler.jar -pkg <package> -sc <key> [<customLocation>]
يبحث عن المفتاح في المواقع التالية:
البحث غير حساس لحالة الأحرف.
يستبدل موقع كود جافا الذي تم فك ترجمته بموقع مخصص.
java -jar AndroTickler.jar -pkg <package> -sd <key>
يبحث في دليل تخزين بيانات التطبيق عن المفتاح المعطى
يقوم بتشغيل مكونات التطبيق، بجميع التوافيق الممكنة من النوايا (intents). على سبيل المثال، إذا كان للنشاط عامل تصفية نية يحتوي على إجراءين محتملين وثلاثة مخططات URI للبيانات، فسيقوم أندروتيكلر بتشغيل هذا النشاط مع جميع التوافيق الممكنة لهذه النية. بالإضافة إلى ذلك، يلتقط أندروتيكلر إضافات النية (intent extras) المذكورة في فئة جافا المقابلة للمكون، ويخصص لها قيمًا وهمية ويضيفها إلى توافيق النية الممكنة. يتم دعم الإضافات من النوع boolean و string و int و float فقط.
إذا تم استخدام الخيار -exp، فسيتم تشغيل المكونات بدون صلاحيات الجذر أو أي أذونات خاصة. إذا لم يتم استخدامه، فسيتم تشغيل المكونات بصلاحيات الجذر. يساعد هذا في اختبار التطبيق في سيناريوهين مختلفين: ضد المهاجمين بصلاحيات عادية أو عالية.
قبل تشغيل المكونات، يقوم أندروتيكلر بطباعة جميع الأوامر التي سيتم تنفيذها. ثم لكل أمر، يقوم بتشغيل المكون، ويطبع الأمر ثم ينتظر المستخدم. وهذا يمنح المستخدم وقتًا كافيًا للقيام بأي فحوصات إضافية بعد تنفيذ الأمر. قبل أن ينتقل المستخدم إلى الأمر التالي، يُعطى خيار التقاط لقطة شاشة للجهاز لتوثيق إثبات المفهوم (PoC).