
برنامج مثالي لسرقة جميع المعلومات من جهاز عن بُعد عبر تطبيق AirDroid. [CVE-2019-9599] (https://www.exploit-db.com/exploits/46337)
فيديو إثبات المفهوم للاستغلال: https://www.youtube.com/watch?v=0QDM224_6DM
CVE: https://nvd.nist.gov/vuln/detail/CVE-2019-9599
Exploit-db: https://www.exploit-db.com/exploits/46337
AirDroid هي إحدى الأدوات الأكثر شهرةً واستخدامًا للتحكم عن بُعد في جهاز الكمبيوتر، وتحديدًا من خلال المتصفح.
للتحكم في الجهاز الذي يستضيف الخدمة وإدارته، يلزم مرحلة قبول مسبقة من جانب العميل، حيث يظهر 'Message Box' مثل الذي يظهر أدناه:
بمجرد قبول الاتصال، يمكن لمسؤول الجلسة إدارة الجهاز من المتصفح، مع إمكانية تنفيذ المهام التالية من بين أمور أخرى:
على الرغم من عدم مشاركة كود إثبات المفهوم (PoC) المسؤول عن تجاوز التحقق من جانب العميل، فقد شاركت بعض السكربتات المفيدة لاستخراج المعلومات الحساسة بمجرد قبول الاتصال.
كذلك، شاركت السكربتين 'airdroid_dos.sh' و'airdroid_fast_dos.sh'، واللذين يقومان بتنفيذ إجراء من نوع 'Remote DoS Application & System Crash'، ومن خلالهما يتمكن المهاجم من إفساد الخدمة عن بُعد، بالإضافة إلى تجميد الجهاز المحمول بملء الذاكرة بالكامل حتى يصبح غير قابل للاستخدام:
نبدأ بتشغيل السكربت 'AirDroidPwner.py'، حيث سيكون من الضروري توفير KEY الخاصة بنا من Shodan للعثور على مجموعة كبيرة من الأجهزة التي تعمل بخدمة AirDroid:
# Usa tu API KEY de Shodan
SHODAN_API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
api = shodan.Shodan(SHODAN_API_KEY)
يتم التشغيل على النحو التالي:
python AirDroidPwner.py
كما ترى، إنه معقد للغاية. بعد تشغيله، ومن خلال واجهة برمجة تطبيقات Shodan، سيتم في البداية تخزين جميع عناوين IP التي يفهرسها Shodan نفسه حول البحث المُنفَّذ، في هذه الحالة خدمة AirDroid (المنفذ 8888)، في مصفوفة.
بعد العثور عليها، يتم تنفيذ عملية تحقق للتأكد من أن المضيفين (Hosts) المكتشفين لديهم الخدمة مفعّلة بالفعل، وذلك بالاعتماد على رمز الحالة الذي يُرجعه الرد من جانب الخادم بعد إجراء طلب بسيط.
بعد الحصول على المصفوفة الجديدة التي تحتوي على العناصر المقابلة للمضيفين النشطين، يتم تصديرها إلى ملف باسم 'ips'. تتوفر حاليًا أوضاع التشغيل التالية:
بعد قبول الاتصال (يُطلق الطلب على المضيفين، ويبقى الأمر رهن قبول أحدهم له [للأسف، ستجد أن الكثيرين يقبلونه...])، يتم تخزين معرّف الجلسة في المعامل 7bb، ومن خلاله تُدار الاستعلامات لاحقًا:
def get_identifier(r_json):
identifier_session = r_json["7bb"]
return identifier_session
في حال عدم قبول العميل للاتصال، سيتم تخزينهم في متجه للاتصالات المرفوضة، وذلك لبدء هجوم من النوع التالي لاحقًا (يمكن للمهاجم أن يقرر <y/n>):
حيث يُستخدم 'Message Box' عبر حلقة رئيسية بعدد تكرارات قابل للتعديل (10 افتراضيًا) إلى جانب حلقات فرعية تنفّذ 3,000 طلب على شكل خيوط (threads) ضد الضحايا، وبذلك يتمكن المهاجم من ملء ذاكرة RAM الخاصة بالجهاز، مما يتسبب ليس فقط في رفض الخدمة عن بُعد للتطبيق وإنما أيضًا في Remote System Crash، حيث يصبح الجهاز غير قابل للاستخدام تمامًا مما يفرض إعادة تشغيل النظام.
تؤثر هذه الثغرة ليس فقط على أحدث إصدار من AirDroid بل أيضًا على جميع الإصدارات السابقة له.
في حال قبول الضحية للاتصال، فهذه هي العمليات المنفذة حاليًا في الأداة:
بالإضافة إلى ذلك، يمكننا أيضًا تشغيل السكربتين 'airdroid_dos.sh' و'airdroid_fast_dos.sh'. الفرق الرئيسي بينهما هو أن الثاني يذهب مباشرة إلى الهجوم، بينما يقوم الأول بفحص أولي سريع لمعرفة ما إذا كان المضيف (Host) يملك الخدمة مفعّلة أم لا، إلخ (الجانب الأكثر تسويقيًا).
إذا كنت ترغب في إدارة الوصول من متصفح الويب، فبمجرد تنفيذ السكربت 'AirDroidPwner.py' وتصدير قائمة عناوين IP في ملف 'ips'، يمكنك تشغيل السكربت 'web_browser.py' لفتح جميع الخدمات النشطة في متصفح.
المهام: