
تحليل أمني موحد ديناميكي للحافة المحمولة
إطار عمل آلي معياري ومستودع سكريبتات لاختبار وتحليل تطبيقات Android و iOS في زمن التشغيل، مصمم لمختبرِي الاختراق ومحللي البرمجيات الخبيثة. يتيح لك إضافة وحدات نمطية لتجاوز الحمايات (مثل تثبيت SSL)، وفحص نشاط الشبكة/WebView، وتتبع استدعاءات API، وفحص الذاكرة/التشفير، ومراقبة سلوك البرمجيات الخبيثة — كل ذلك من سكريبت واحد منسق. يعمل بواسطة FRIDA في الخلفية ويأتي مزودًا بـ 90+ وحدة نمطية قابلة لإعادة الاستخدام لضمان قابلية التوسع والتكرار في الاختبارات.
متطلبات النظام:
التثبيت من GitHub:
# باستخدام python3/pip للنظام
pip3 install -r requirements.txt
# أو داخل بيئة افتراضية (موصى به)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
أو حمّل أحدث إصدار مستقر من هنا
باستخدام Docker:
ملف Docker مهيأ مسبقًا متوفر في دليل medusa/.
بناء الصورة: docker build -t medusa:latest ./
تشغيل الحاوية: docker run --name medusa --net=host --rm -it medusa:latest
فعّل ADB عبر TCP/IP على جهازك الفعلي أو المحاكي: adb tcpip 5555
اتصل بالجهاز من داخل الحاوية: root@docker# adb connect <device_ip>:5555
أثناء التثبيت على macOS، قد تواجه المشكلة التالية:
تم تعطيل ميزات Readline بما في ذلك الإكمال التلقائي بسبب عدم العثور على إصدار مدعوم من readline. لحل هذه المشكلة، قم بتثبيت pyreadline3 على Windows أو gnureadline على Linux/Mac.
لحل المشكلة، قم بتثبيت حزمة gnureadline لـ Python:
pip install gnureadline
بالنسبة لـ Python 3.12، استخدم الأمر التالي لتثبيت gnureadline من commit معين:
pip install git+https://github.com/ludwigschwardt/python-gnureadline.git@8474e5583d4473f96b42745393c3492e2cb49224
إذا كنت تقوم بالترقية من إصدار قديم من Medusa وتواجه مشاكل في توافق قاعدة البيانات مع Mango، يُرجى الرجوع إلى DATABASE_MIGRATIONS.md للحصول على تعليمات الترحيل.
هام: إذا كان لديك قاعدة بيانات Mango موجودة وتتلقى أخطاءً بعد التحديث، تحقق من دليل الترحيل لتحديث مخطط قاعدة البيانات الخاصة بك.
شغّل سكريبت الدخول المناسب لكل منصة:
# Android
python3 medusa.py
# iOS
python3 medusa_ios.py
بعد البدء، سيقوم MEDUSA بتعداد الأجهزة المتاحة ويتيح لك اختيار واحد منها.
سير العمل التفاعلي الشائع
# عرض الأوامر المتاحة أو الحصول على مساعدة حول أمر معين
medusa> help # أو help <اسم-الأمر>
# عرض الوحدات النمطية المتاحة
medusa> show all
# الحصول على مساعدة/تفاصيل سريعة حول وحدة نمطية
medusa> info http_communications/ssl-pinning-bypass
# إضافة وحدة نمطية (الإكمال التلقائي بعلامة Tab لمسارات الوحدات)
medusa> use http_communications/ # اضغط [Tab] للإكمال التلقائي
# عرض الحزم المثبتة على الجهاز
medusa> list
# تجهيز حزمة (باسم الحزمة)
medusa> run -f com.my.app
# عرض الأجهزة المتاحة واختيار واحد
medusa> loaddevice
الواجهة الطرفية المساعدة الخفيفة لـ Medusa للتحضير الثابت والأتمتة — تحليل البيان (manifest)، تعداد سطح الهجوم، تتبع التطبيقات، وأتمتة بسيطة للجهاز/الوكيل.
شغّل python3 mango.py <اسم-قاعدة-البيانات> لإنشاء أو تحميل قاعدة بيانات لتخزين نتائج Mango.
# عرض الأجهزة المتاحة واختيار واحد
mango> loaddevice
# سحب تطبيق (باسم الحزمة)
mango> pull com.my.app
# استيراد تطبيق للتحليل
mango> import /path/to/apk
هذا اختياري وغير مطلوب لسير العمل القياسي لواجهة Medusa الطرفية.
إذا كنت ترغب في استخدام خادم MCP الخاص بـ Android (medusa_android_mcp.py)، قم بتثبيت متطلبات MCP:
pip install -r requirements-mcp.txt
# تشغيل
MEDUSA_MCP_TRANSPORT=streamable-http python medusa_android_mcp.py
"medusa-android": {
"type": "http",
"url": "http://127.0.0.1:8000/mcp"
}
للاستخدام المتقدم والأمثلة، راجع الويكي الخاص بنا. للحصول على نصائح سريعة وسير عمل تمهيدي، تحقق من العروض التوضيحية أدناه:
يمكنك المساهمة في هذا المشروع عن طريق:
Stheno هو مشروع فرعي من Medusa، مصمم خصيصًا لمراقبة النوايا (intent monitoring) داخل هذا الإطار. فيما يلي دليل سريع حول كيفية إعداد واستخدام Stheno بفعالية.
تضمين وحدة النوايا (Intent Module):
أضف الوحدة intents/start_activity إلى مشروع Medusa الخاص بك:
medusa> add intents/start_activity
تشغيل خادم المقبس (Socket Server): ابدأ تشغيل خادم مقبس Medusa لتسهيل الاتصال:
medusa> startserver
تشغيل Stheno: افتح Stheno وانتقل إلى قائمة مراقب النوايا (Intent Monitor)، ثم انقر على بدء لبدء مراقبة النوايا.






يقوم بربط استدعاءات API التي تعتبر شائعة لهذا النوع من البرمجيات الخبيثة، بما في ذلك:
- تسريب جهات الاتصال
- تسريب سجل المكالمات
- استخدام الكاميرا
- استخدام الميكروفون
- تتبع الموقع
- رفع الملفات
- تسجيل الوسائط
- تتبع الحافظة
- استكشاف الجهاز
- التقاط لقطة الشاشة
يقوم بترجمة واجهة المستخدم للتطبيق عن طريق ربط استدعاءات 'setText'
