
إطار عمل قائم على الحاويات لتمكين دمج المكونات المحمولة في منصات التدريب الأمني
Dockerized Android هو إطار عمل قائم على الحاويات يسمح بتشغيل محاكي Android داخل Docker والتحكم به عبر متصفح. تم تطوير هذا المشروع لتوفير نقطة انطلاق لدمج مكونات الأمان المحمولة في ساحات التدريب السيبرانية (Cyber Ranges)، لكن يمكن استخدامه لأي غرض. على أي حال، لأغراض التطوير والاختبار، يُقترح المشروع docker-android.
كما هو مذكور في الوصف المختصر أعلاه، تم إنشاء هذا المشروع لتوفير نقطة انطلاق لإدخال مكونات الأمان المحمولة في ساحات التدريب السيبرانية. لهذا السبب، ستساعد الميزات المطورة بالفعل والتي ستُضاف في المستقبل المستخدم على تسهيل إعداد محاكاة واقعية (على سبيل المثال للتدريب الأمني). ملف README هذا طويل نوعًا ما، ربما ترغب فقط في الانتقال إلى جزء "كيفية التشغيل".
الميزات التالية متاحة حاليًا:
| الإعداد الأولي | إعداد مدير الحالات | الإعداد اليدوي |
|---|---|---|
| initial-setup | instance-manager-setup | manual-setup |
| ميزات الأدوات | تبديل الحالات |
|---|---|
| toolbox | instance-switch |
يتكون المشروع من ثلاثة أجزاء رئيسية:
المكون الأساسي هو الذي ينفذ جميع العمليات اللازمة لتشغيل مكون Android (محاكى أو حقيقي) داخل حاوية Docker، مع إتاحة بعض الميزات للخارج. بلا شك هو الجزء الأكثر تعقيدًا لأنه يجب عليه إدارة عمليات مختلفة لتوفير مجموعة من الميزات. يوضح الشكل أعلاه تمييزًا واضحًا بين العمليات طويلة العمر، وعمليات البدء، والبرامج النصية المساعدة. بالإضافة إلى ذلك، يوضح هذا الشكل وجود 6 عمليات طويلة العمر، وهذا عدم دقة بسيط أُضيف لتقديم نظرة عامة على المكون الأساسي، في الواقع هناك نوعان مختلفان للمكون الأساسي:
الفرق المعماري الرئيسي يتعلق بالعمليات طويلة العمر: المكون الأساسي للمحاكي يشغل عملية emulator طويلة العمر بينما المكون الأساسي للجهاز الحقيقي يشغل عملية scrcpy طويلة العمر لعرض الجهاز الفعلي والتحكم به. الأجزاء الأخرى متشابهة إلى حد كبير مع بعض المنطق لاتباع سلوك مختلف بناءً على نوع المكون الأساسي.
يوفر مكون واجهة المستخدم طريقة بسيطة لاستخدام جميع الميزات التي يوفرها الخلفية (backend) ويضيف أيضًا القدرة على عرض الجهاز والتحكم به. يجب على المستخدم إدخال عنوان المكون الأساسي والمنافذ المقابلة (المنفذ الذي توفره الخلفية والمنفذ الذي يوفره websockify) يدويًا؛ من خلال هذا الإعداد اليدوي يمكن تغيير المنافذ الافتراضية (وهي 4242 للخلفية و 6080 لـ websockify).
مكون مدير الحالات لديه مهمة توفير جميع المعلومات (أي العناوين والمنافذ) حول المكونات الأساسية قيد التشغيل عبر REST API واحد. يتم ذلك عن طريق كتابة ملف تكوين JSON بسيط يحتوي على جميع المعلومات حول المكونات الأساسية الموجودة في docker-compose لتجنب العمل الشاق لإضافة كل منها يدويًا. هيكل ملف تكوين JSON هو التالي:
{
"instances": [
{
"name": [سلسلة نصية عامة لتعريف الجهاز],
"address": [عنوان المكون],
"core_port": [منفذ الخلفية],
"vnc_port": [منفذ VNC]
}
]
}
| إصدار Android | API | الصورة |
|---|---|---|
| 5.0.1 | 21 | secsi/dockerized-android-core-emulator-5.0.1 |
| 5.1.1 | 22 | secsi/dockerized-android-core-emulator-5.1.1 |
| 6.0 | 23 | secsi/dockerized-android-core-emulator-6.0 |
| 7.0 | 24 | secsi/dockerized-android-core-emulator-7.0 |
| 7.1.1 | 25 | secsi/dockerized-android-core-emulator-7.1.1 |
| 8.0 | 26 | secsi/dockerized-android-core-emulator-8.0 |
| 8.1 | 27 | secsi/dockerized-android-core-emulator-8.1 |
| 9.0 | 28 | secsi/dockerized-android-core-emulator-9.0 |
| 10.0 | 29 | secsi/dockerized-android-core-emulator-10.0 |
| 11.0 | 30 | secsi/dockerized-android-core-emulator-11.0 |
| - | - | secsi/dockerized-android-core-bare |
| - | - | secsi/docker-android-core-real-device |
الصورة secsi/dockerized-android-core-bare لا تقوم بتنزيل أي صورة نظام، ويمكنك تثبيت المجلد على جهاز المضيف حيث لديك جميع مجلدات SDK
لمشاهدة مثال كامل على كيفية تشغيل المنصة، يمكنك الاطلاع على docker-compose المتاح في دليل examples. يحتوي هذا الدليل على ثلاثة تكوينات مختلفة:
بمجرد فهم كيفية عمله، يمكنك تغييره لتلبية أي احتياجات لديك.
يجب تثبيت Docker و Docker Compose على جهازك.