Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
droidground — ملعب مرن لتحديات CTF الخاصة بنظام أندرويد. | Kitploit
أدوات/GitHubGitHub/secforce/droidground
أمان أندرويدالتحليل الديناميكي (عزل)الاستغلالاختبار اختراق تطبيقات الجوالCTFاختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubsecforce/droidground

droidground

ملعب مرن لتحديات CTF الخاصة بنظام أندرويد.

عرض المستودع
1177منذ 15 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني


droidground

DroidGround


الموقع | عرض تجريبي

في تحديات CTF التقليدية، من الشائع إخفاء الأعلام (flags) في ملفات على النظام، مما يتطلب من المهاجمين استغلال الثغرات الأمنية لاسترجاعها. ومع ذلك، في عالم Android، لا يعمل هذا الأسلوب بشكل جيد. ملفات APK سهلة التنزيل والهندسة العكسية، لذا فإن وضع العلم على الجهاز يجعل استخراجه عادةً في غاية السهولة باستخدام التحليل الثابت أو حيل المحاكي. وهذا يحد بشدة من القدرة على إنشاء تحديات واقعية تركّز على وقت التشغيل (runtime).

صُمم DroidGround لحل هذه المشكلة.

إنه منصة مبنية خصيصًا لاستضافة تحديات اختراق أجهزة Android المحمولة في بيئة موجّهة وواقعية، حيث يكون المهاجمون مقيّدين بالقدر الكافي فقط بحيث يُطلب منهم حل التحديات بالطريقة المقصودة.

والأهم من ذلك، أن المشاركين قد يكونون محجوزين (jailed) داخل بيئة التطبيق. تتيح مرونة الأداة (modularity) تحديد ما إذا كان بإمكان المستخدم فتح قشرة (shell)، أو قراءة ملفات عشوائية، أو تثبيت أدوات جانبيًا (sideload) أم لا. يمكن إعداد كل شيء بحيث تكون الطريقة الوحيدة لاسترجاع العلم هي عبر فهم التطبيق واستغلاله بحد ذاته.

📋 جدول المحتويات

  • 🧭 نظرة عامة
  • ✨ الميزات
  • 📸 لقطات الشاشة
  • ⚙️ الإعداد
  • 🧩 حالات الاستخدام
  • ⚙️ الاستخدام
  • 💡 نصائح
  • 🛠 التطوير
  • 🤝 المساهمة
  • 📚 الاعتمادات
  • 🪪 الترخيص

🧭 نظرة عامة

يتيح DroidGround مجموعة واسعة من تحديات Android التي يصعب تنفيذها في إعدادات CTF التقليدية. على سبيل المثال، في تحدٍّ لتنفيذ التعليمات البرمجية عن بُعد (RCE)، قد يحصل اللاعبون على ملف APK لتحليله محليًا. بعد اكتشاف ثغرة أمنية، يمكنهم تطوير سكربت Frida وتشغيله عبر DroidGround على الجهاز الهدف الحقيقي لاستخراج العلم من التخزين الداخلي. قد تتضمن أنواع التحديات الأخرى أنشطة مخفية، أو نوايا بث (broadcast intents) مخصصة، أو استغلال الخدمات، أو تحليلًا ديناميكيًا باستخدام أدوات محمّلة مسبقًا.

بفضل بث شاشة الجهاز في الوقت الفعلي، والتحكم الدقيق في الميزات، وتكامل Frida، وسكربتات الإعداد وإعادة التعيين القابلة للتخصيص، يمكّن DroidGround منظمي مسابقات CTF من بناء تحديات Android آمنة ومرنة وواقعية تتجاوز بكثير ما هو ممكن في العادة.

✨ الميزات

يوفر DroidGround مجموعة غنية من الميزات التي يتحكم بها الخادم.

  • شاشة الجهاز في الوقت الفعلي (عبر scrcpy)
  • إعادة تعيين حالة التحدي
  • إعادة تشغيل التطبيق / بدء نشاط / بدء خدمة
  • إرسال نية بث (Broadcast Intent)
  • إيقاف تشغيل الجهاز / إعادة تشغيله
  • تنزيل تقرير الأخطاء (bugreportz)
  • كتابة سكربتات Frida
    • التشغيل من مكتبة محمّلة مسبقًا (الوضع المحجوز)
    • تشغيل سكربتات عشوائية (الوضع الكامل)
  • متصفح الملفات
  • الوصول إلى الطرفية
  • إدارة ملفات APK
  • عارض Logcat
  • خادم الاستغلال (Exploit Server) (إذا كان وضع الفرق مفعّلًا)

جميع الميزات تقريبًا معيارية (modular) ومعرّفة عبر متغيرات البيئة، مما يضمن تحكمًا دقيقًا في نطاق التحدي.

📸 لقطات الشاشة

⚙️ الإعداد

يُعد ملف .env.sample الموجود في الدليل الجذري نقطة بداية جيدة. فيما يلي القائمة الكاملة لجميع متغيرات البيئة المدعومة حاليًا:

يبحث DROIDGROUND_IP_IFACE عن تطابق تام أولًا، ثم يعود (fallback) إلى أول واجهة تبدأ بـ القيمة المقدمة، نظرًا لأن Docker يسمح فقط بتحديد بادئة (prefix) واجهة الشبكة داخل الحاوية.

يغيّر استخدام متغير DROIDGROUND_NUM_TEAMS سلوك التطبيق قليلًا في الكواليس. إذا تم تعيين هذا الخيار:

  1. يتم تفعيل ميزة خادم الاستغلال، مما يسمح لكل فريق باستخدام خادم الاستغلال الخاص به (البسيط جدًا) عبر الرمز المميز للفريق.
  2. سيكون الرمز المميز للفريق مطلوبًا لتثبيت تطبيقات الاستغلال وتشغيلها. سيكون كل تطبيق مثبّت مرتبطًا بفريق واحد، ولن تتمكن الفرق الأخرى من تشغيله.

يتيح ذلك مشاركة نفس نسخة (instance) DroidGround مع فرق متعددة في التحديات التي يمكن فيها تسريب العلم عبر طلب شبكة. وهذا يقلل بشكل كبير من تكاليف نشر DroidGround في مسابقات CTF.

علاوة على ذلك، إذا تم تعيين القيمة إلى -1، فسيتم تفعيل ما يُسمى بوضع الفرق غير المحدودة (Unlimited Teams). في هذا الوضع، سيتوفر زر لإنشاء رمز مميز للفريق جديد في صفحة نظرة عامة. يتم تجاهل جميع متغيرات DROIDGROUND_TEAM_TOKEN_<N> إذا تم تفعيل هذا الوضع.

🧩 حالات الاستخدام

فيما يلي بعض الطرق التي يمكن استخدام DroidGround بها:

  1. نشاط مخفي: ابحث عن نشاط غير مكشوف وأطلقه لرؤية العلم (يحتوي تطبيق اللاعب على علم وهمي).
  2. RCE: التطبيق عرضة لثغرة RCE والعلم مخزّن على الجهاز.
  3. تتبّع Frida (Instrumentation): قم بالتحميل الزائد (overload) لدالة (method) واستخرج العلم من الذاكرة الخاصة باستخدام سكربت.

⚙️ الاستخدام

تم توفير ملفات Docker Compose نموذجية في مجلد examples. تستخدم هذه الملفات تطبيقات من مستودع نماذج DroidGround، والذي سيتم تطويره تدريجيًا لعرض جميع الميزات الرئيسية. كما أنها نقطة بداية جيدة لفهم كيفية إعداد CTF خاص بك.

عند الإقلاع، يقوم DroidGround بما يلي:

  1. إعداد الاتصال مع adb
  2. تشغيل setup.sh في المجلد المحدد بواسطة DROIDGROUND_INIT_SCRIPTS_FOLDER إذا كان موجودًا. يمكن استخدام هذا السكربت لتثبيت التطبيق الهدف والقيام بكل ما يلزم لتهيئة الـ CTF (مثلًا، وضع العلم في موقع معروف)
  3. (إذا كان Frida مفعّلًا) تنزيل frida-server الصحيح بناءً على الإصدار المثبت ومعمارية الجهاز وتشغيله
  4. تشغيل التطبيق الهدف (المحدد عبر DROIDGROUND_APP_PACKAGE_NAME). إذا لم يكن التطبيق مثبتًا، سينهي DroidGround عمله.
  5. إعداد واجهات برمجة تطبيقات REST وخوادم WebSocket وبث الشاشة (display streaming)

فيما يلي نموذج لسكربت setup.sh:

root@kitploit:~
#!/usr/bin/env bash

adb shell pm uninstall com.example.app # To do some cleanup
echo "Sleep for 2 seconds before installing app"
sleep 2
echo "Installing app..."
adb install ./flag.apk # The cwd is set to the "init.d" folder, so the apk file can be accessed with the relative path
echo "Install command executed"

بالنسبة للنشر في بيئة إنتاجية (في CTF حقيقية)، قد ترغب في تجهيز عدد محدد مسبقًا من نسخ DroidGround مسبقًا، أو قد ترغب في السماح للمستخدمين بإنشاء نسخ (مع تحديد حد أقصى أو ربما ربط كل فريق/مستخدم بنسخة محددة). لهذا السبب أضفنا أيضًا مثالًا بسيطًا لمنشئ النسخ (spawner).

بدلًا من ذلك، وكما ذُكر سابقًا، يمكنك إنشاء تحدي يمكن فيه تسريب العلم عبر طلب شبكة، والاستفادة من متغير البيئة DROIDGROUND_NUM_TEAMS لتجنب إنشاء نسخ متعددة (والتي قد تكون مكلفة). يوفر مجلد net-multi-step مثالًا جيدًا على كيفية تقديم هذا النوع من التحديات.

💡 نصائح

فيما يلي بعض الاقتراحات لإعداد مسابقة CTF الخاصة بك على Android:

  • كن حذرًا عند تفعيل وضع Frida الكامل (Full Mode)، فسيحصل اللاعب على تحكم كامل في الجهاز (لذلك أنشأنا وضع Frida المحجوز (Jail Mode) كما هو مفصل في مكتبة Frida).
  • كن حذرًا عند تفعيل الطرفية (Terminal)، فسيحصل اللاعب على تحكم كامل في الجهاز.
  • كن حذرًا عند تفعيل ميزة إيقاف التشغيل (Shutdown).
  • إذا كنت تخطط لجعل العلم مرئيًا مباشرة في واجهة المستخدم (UI)، فقد ترغب في إيجاد طريقة لإنشاء نسخ مختلفة (نسخة لكل فريق/لاعب)

أثناء اختبار الإعداد قبل الانتقال إلى الإنتاج، قد يكون من المفيد الحصول على سطح الهجوم (attack surface) للتطبيق الهدف. وهذا أمر لا ينبغي للاعبين رؤيته، لأن اكتشاف وتحليل سطح الهجوم هو جزء من مهمتهم!

لذلك، تم توفير نقطة نهاية (endpoint) GET يمكن الوصول إليها على /attackSurface، وهي محمية برمز مميز (token) (يجب استخدامه كقيمة لترويسة Authorization) يتم إنشاؤه عشوائيًا أثناء الإقلاع وطباعته في السجلات (وبالتالي لا يمكن الوصول إليه إلا من قبل مسؤولي الأنظمة).

إذا كنت تريد استخدام سكربتات Frida الخاصة بك في الوضع المحجوز، فكل ما تحتاجه هو ربط (bind-mount) المجلد الذي يحتوي عليها داخل حاوية Docker:

root@kitploit:~
volumes:
  - <Frida library folder>:/droidground/library

ملف library.json (مثل الملف الموجود في library) مطلوب لإرشاد التطبيق بقائمة السكربتات المتاحة.

🛠 التطوير

تشغيله وإدارته لا ينبغي أن يكون صعبًا للغاية، ولكن قبل البدء يجب أن تكون لديك الأدوات التالية مثبتة:

  • frida (فقط إذا قمت بتفعيل Frida)
  • node (إنه تطبيق Node، يجب أن يكون لديك!)
  • adb (حسنًا، نعتمد عليه للتواصل مع الجهاز)
  • JDK (تحتاجه لبناء التطبيق المصاحب (companion))

بعد ذلك، يمكنك ببساطة تشغيل ما يلي:

root@kitploit:~
git clone https://github.com/SECFORCE/droidground.git
cd droidground

# Install without running scripts
npm install --ignore-scripts
# Rebuild frida to get the bindings
npm rebuild frida
# Build companion app
npm run companion
# Get scrcpy
npm run scrcpy

بعد ذلك، كل ما عليك فعله هو تعيين متغيرات البيئة (env) ثم تشغيل npm run dev وستكون جاهزًا للانطلاق. استمتع بوضع التطوير!

🤝 المساهمة

طلبات السحب (Pull Requests) مرحب بها! يرجى فتح issue أولًا لمناقشة التغييرات الكبيرة. الأفكار الخاصة بسير عمل جديدة في CTF أو أنواع جديدة من التحديات محل تقدير خاص.

📚 الاعتمادات

تم التطوير بواسطة Angelo Delicato @SECFORCE.

يعتمد جزء الخادم (server) بشكل كبير على العمل الرائع الذي أنجزه @yume-chan، وربما لم يكن هذا التطبيق ليوجد لولا عمله المذهل.

يعتمد التطبيق المصاحب (companion) بشكل كبير على خادم aya، الذي يعمل بنفس طريقة خادم scrcpy. يمكن العثور على مزيد من التفاصيل في README الخاص به.

🪪 الترخيص

تم إصدار DroidGround بموجب ترخيص GPL-3.0.

تنزيل الأداة
لقطة شاشة: نظرة عامةلقطة شاشة: بدء نشاط
نظرة عامةبدء نشاط
لقطة شاشة: وضع Frida المحجوزلقطة شاشة: وضع Frida الكامل
وضع Frida المحجوزوضع Frida الكامل
لقطة شاشة: متصفح الملفاتلقطة شاشة: مدير التطبيقات
متصفح الملفاتمدير التطبيقات
لقطة شاشة: الطرفيةلقطة شاشة: السجلات
الطرفيةالسجلات
المتغيرالوصفالافتراضي
DROIDGROUND_BASE_PATHمسار تطبيق الويب (مفيد للاستضافة على مسارات فرعية)-
DROIDGROUND_APP_PACKAGE_NAMEاسم الحزمة (package) للتطبيق الهدف-
DROIDGROUND_ADB_HOSTمضيف ADBlocalhost
DROIDGROUND_ADB_PORTمنفذ ADB5037
DROIDGROUND_ADB_SERIALالرقم التسلسلي لجهاز ADB المراد الاتصال به (اختياري)-
DROIDGROUND_DEVICE_TYPEusb أو networkusb
DROIDGROUND_DEVICE_HOSTعنوان IP لجهاز Android (adb) (وضع الشبكة فقط)-
DROIDGROUND_DEVICE_PORTمنفذ جهاز Android (adb) (وضع الشبكة فقط)-
DROIDGROUND_INIT_SCRIPTS_FOLDERالمجلد الذي يحتوي على setup.sh وreset.sh/init.d
DROIDGROUND_HOSTعنوان الربط0.0.0.0
DROIDGROUND_PORTمنفذ الربط4242
DROIDGROUND_RESTART_APP_DISABLEDتعطيل إعادة تشغيل التطبيقfalse
DROIDGROUND_APP_MANAGER_DISABLEDتعطيل مدير التطبيقاتfalse
DROIDGROUND_BUG_REPORT_DISABLEDتعطيل تقرير الأخطاء (bugreport)false
DROIDGROUND_FILE_BROWSER_DISABLEDتعطيل متصفح الملفاتfalse
DROIDGROUND_FRIDA_DISABLEDتعطيل دعم Fridafalse
DROIDGROUND_FRIDA_TYPEjail أو fulljail
DROIDGROUND_FRIDA_INJECTIONserver أو gadgetserver
DROIDGROUND_LOGCAT_DISABLEDتعطيل logcatfalse
DROIDGROUND_REBOOT_ENABLEDتفعيل إعادة تشغيل الجهازfalse
DROIDGROUND_SHUTDOWN_ENABLEDتفعيل إيقاف تشغيل الجهازfalse
DROIDGROUND_START_ACTIVITY_DISABLEDتعطيل startActivityfalse
DROIDGROUND_START_RECEIVER_DISABLEDتعطيل البث (broadcast)false
DROIDGROUND_START_SERVICE_DISABLEDتعطيل startServicefalse
DROIDGROUND_TERMINAL_DISABLEDتعطيل الطرفيةfalse
DROIDGROUND_RESET_DISABLEDتعطيل إعادة التعيينfalse
DROIDGROUND_EXPLOIT_APP_DURATIONالمدة (بالثواني) التي سيظل فيها تطبيق الاستغلال نشطًا10
DROIDGROUND_EXPLOIT_APP_MAX_SIZEالحد الأقصى لحجم تطبيق الاستغلال (بالميجابايت MB)50
DROIDGROUND_NUM_TEAMSعدد الفرق التي تلعب في نفس الوقت-
DROIDGROUND_TEAM_TOKEN_<N>الرمز المميز (token) للفريق رقم n. يُنشأ تلقائيًا إذا كان مفقودًا-
DROIDGROUND_IP_STATICعنوان IP الثابت الذي سيتم عرضه. له الأولوية على DROIDGROUND_IP_IFACE-
DROIDGROUND_IP_IFACEواجهة الشبكة الخاصة بعنوان IP المعروض-
DROIDGROUND_LOGO_LINKتعيين رابط النقر على الشعار اختياريًا (مثلًا، الصفحة الرئيسية لمسابقة CTF الخاصة بك)-