مقال : إستغلال ثغرة Stage Fright على أنظمة Android وإختراقها من خلال MMS
خلال الأسابيع الماضية شكلت ثغرة Stage Fright جدل عالمي كبير جداً حولها , حيث تمكنك هذه الثغرة من إختراق الأجهزة التي تعمل بنظام Android من خلال رسالة MMS فقط ! حيث قام الباحث الأمني Joshua J. Drake بإكتشاف هذه الثغرة داخل المكتبات المخصصة لمعالجة الوسائط المتعددة في أنظمة Android , حيث فور وصول رسالة وسائط متعددة إلى النظام يحدث هنالك خلل في إستقبالها ينتج عنها buffer overflow إستطاع Joshua إستغلالاه بكل عبقرية 😀 حيث أنني فور ما قمت بالإطلاع على الإستغلال ذهلت حقاً من كيفية كتابة الإستغلال الخاصة بالثغرة ومدى الإبداع الذي قام به فعلاً.
وفي هذا المقال سوف نشرح إن شاء الله كيفية إستغلال هذه الثغرة بادئاً بتحميلها وأخيراً إلى وصول سطر أوامر حقيقي على جهاز الهدف يمكننا بالتحكم به فقط من خلال إرسال ملف mp4 مصاب إلى رقم هاتف الهدف.
قبل أن نبدأ بالطبع أنا وشركة iSecur1ty عموماً ومجتمع iSecur1ty خصوصاً لا نحرض على إستغلال هذه الثغرة بأمور غير مشروعة ونخلي مسؤوليتنا الكاملة في حال إستخدام المعلومات بشكل خاطئ.
للأسف و أثناء كتابة المقال حدثت بعض المشاكل في التعامل مع شبكة MMS لدينا , ولم أتمكن من إرسال الملف بالشكل السليم وتطبيق عملي حقيقي للثغرة كما ذكرت نظراً لبعض المشاكل المؤقتة الحالية بشكبة الهاتف بالعموم في المنطقة لدي , وفور حلها سوف أقوم بتحديث المقال وشرح وصول الإتصال العكسي لدينا , ولم نريد عمل إتصال وهمي من جهاز الهدف نظراً للأمانة العلمية في نقل المعلومة 🙂
دعونا الأن نبدأ بعملية تحميل الثغرة , وهي موجوده على هذا الرابط , سوف نقوم بتحميلها وسحبها من خلال wget وتغير إسمها إلى mp4.py لكي تعمل بالشكل المطلوب معنا :
كما نشاهد قمنا بحفظ الثغرة داخل مجلد opt بإسم mp4.py , الأن سوف نقوم بإستعراض سريع للثغرة وسوف أقوم بإستخدام nano لقرأة الملف :
كما نشاهد هذا جزء من ملف الثغرة وكما ذكرت مسبقاً أن أسلوب كتابة كود الإستغلال كانت رائعة جداً بالنسبة لي , حيث أن الكود موضح بشكل كبير جداً وكذلك طريقة كتابته والتعامل مع المتغيرات والمعطيات كانت رائعة كذلك , وسببت بالطبع سهولة كبيرة بقرأة الكود وفهمه وحتى التعديل عليه ليتناسب مع أي إحياجات أو أمور أخرى قد ترغب بالعمل عليها.
ومن الجدير بالذكر أنه للان لا يوجد أي Metasploit Module يقوم بالتعامل مع هذه الثغرة حتى الأن.
سوف نقوم الأن بتشغيل ملف الثغرة لنلاحظ ما هي الأمور المتاحه لنا :
يوجد العديد من الخيارات الخاصة بهذه الثغرة , ما يهمنا حقاً هو خيار CBHOST , CBPORT وهما الهوست والبورت الذي سوف يتم التوصل بشكل عكسي بهم لفتح سطر أوامر مع النظام , وطبعاً سوف أقوم بالتنفيذ على جهاز متوصل بالشبكة المحلية بي فقط لإتمام الإتصال العكسي مع جهازي.
لا يهم إن كان الجهاز الهدف داخل شبكتك أم لا ولكن انا هنا قمت بالتنفيذ على شبكتي لكي أقوم بالتوصل بجهاز اللابتوب الخاص بي.
حسناً سوف أقوم بإدخال الخيارات الخاصة ب CBPORT , CBHOST من خلال سطر الأوامر كما هو موضح بالصورة التالية :
كما نشاهد تم تكوين الملف وقمت بحفظه بإسم my_file.mp4 , هذا الملف سوف أقوم بإرساله إلى الهدف على أمل أن يقوم بالإتصال بي دون أي حاجه لتدخل الهدف , ولكن قبل ذلك سوف نقوم بتلقي الإتصال عبر المنفذ 8888 لكي نستقبل الإتصال القادم من الجهاز وسوف أقوم بالطبع بإستخدام أداة nc لتلقي الإتصال كما هو موضح :
حسناً , سوف أستخدم جهازي بعملية إرسال ملف mp4 لرقم محدد تابع لي بعد ما أقوم بنقل الملف إلى الجهازي , و
الأن سوف نقوم بإرسال الملف من خلال جهازي عبر MMS إلى الجهاز الهدف , وسوف نرى النتائج بشكل فوري إن شاء الله 🙂
في الغالب تحددك بعض الأجهزة بحجم معين لرسائل MMS بحجم صغير ولن تستوعب حجم الملف النتاج وهو 2MB لذلك سوف نتخطى هذه المشكلة
كيف سوف نتخظى مشكلة الحجم ؟ الحل بسيط جداً هنالك تطبيقات طرف ثالث تساعدك على التحكم بحجم رسائل MMS من طرف الجهاز وانا إستخدمت تطبيق chompSMS في عملية تعديل الحجم من خلال فتح التطبيق بعد تثبيته وتغير إعدادات رسائل الوسائط من Settings – SMS&MMS settings – MMS settings – Send Size Limit كما يلي :
الأن سوف نقوم بإرسال الملف إلى الهدف كما في الصورة التالية وإنتظار النتيجة :
كما يمكنكم إستخدام برامج مثل textra ورفع الحد الأعلى لرسالة MMS
طبعاً عند To نقوم بوضع رقم الهاتف ولكني قمت بوضعه بعد تصوير الشاشة 😀 , يجب أن ننتظر قليلاً لغاية وصول الملف ومن ثم تشغيله على الجهاز بشكل أوتوماتيكي من قبل النظام.
وكما ذكرت مسبقاً وجود بعض المشاكل المؤقتة في شبكة الهاتف بالعموم لذلك لن أتمكن من إرسال الملف والتطبيق بشكل عملي عليه.
أثبتت هذه الثغرة خصوصاً والثغرات التي ظهرت بأخر فترة عموماً أن نظام Android كباقي الأنظمة الأخرى يمكن أن يكون يصاب بثغرات قاتلة فيه تؤدي إلى مشاكل كبيرة للمستخدم.
كيف يمكنني حماية نفسي من ثغرة Stage Fright ؟
في البداية يجب عليك أن تقوم بالتأكد من وجود الثغرة لديك , وتستطيع تحميل تطبيق Stage Fright detector من Google Play وهذه صورة للتطبيق :
طبعاً هذا التطبيق يقوم بالتحقق من وجود الثغرة بجهازك وإعطائك النتائج وبعض المصادر كذلك.
الأن بعد التأكد من وجود الثغرة لديك , ننصحك بتعطيل خاصة التشغيل التلقائي لرسائل MMS , أو يمكنك تشغيل الرسائل من خلال برمجية طرف ثالث تساعدك على تعطيل تشغيل رسائل MMS بكل بساطة.
هذه بعض المصادر المفيده التي يمكنكم الإعتماد عليها في مراجعة الثغرة بشكل أكبر و أوسع :
1- إعلان نشر الإستغلال للعلن وذكر مراحل الإستغلال.
2- فيديو يوضح عملية الإستغلال والحصول على الإتصال العكسي.
4- محاضرة الباحث Joshua في مؤتمر Black Hat.
3- بيان إطلاق أداة Stage Fright Detector tool.
أنصحكم بشدة بمشاهدة محاضرة Joshua في مؤتمر Black Hat لأنها بالفعل تحتوي على معلومات رائعة وأمور من الجيد أن تكون على معرفة ودراية بها.
إلى هنا يكون إنتهى المقال , وإن شاء الله سوف نخبركم بأي تحديثات سوف نصدرها عليه بشكل مباشر , ونتمنى من أي شخص قام بتجربة الثغرة أن يقوم بإعطائنا النتائج الخاصة بها , وما هي التعليمات الكاملة التي إتبعها لمشاركتها معكم أيضاً.
الثغره مش رح تشتغل لانو لازم تعدل على بارامتر spray addr و rop pivot
وكل جهاز الو عنوان مختلف وبعتقد اننو طريقة معرفة العنوان لاستغلال الثغره هي عن طريقة تشغيل debugger وفتح ملف الmp4 بالجهاز…
صاحب الثغره كتب الاستغلال لتعمل فقط على جهازه وهو nexus
if args.spray_addr == None:
args.spray_addr = sp_addr
if args.rop_pivot == None:
args.rop_pivot = newpc_val
# The address of a fake StrongPointer object (sprayed)
sp_addr = 0x41d00010 # takju @ imm76i – 2MB (via hangouts)
# The address to of our ROP pivot
newpc_val = 0xb0002850 # point sp at __dl_restore_core_regs
شكراً جزيلاً لك عزيزي على مشاركتك الرائعة , بالفعل عندما قمت بمراجعة الكود أثناء كتابة المقال وجدت بعض المتغيرات المطلوبة موجوده في حالة إفتراضية , وكما نرى بالأساس يمكن إدخالهم كخيارات إضافية مع توليد ملف mp4 الناتج , أنا قمت بذكر التقنية بشكل عام دون التطرق لأي أمور أخرى , شكراً جزيلاً مجدداً لإضافتك الرائعة 🙂
كيف أعدل على الملف لاختراق هواتف سامسونج ؟ فهو يدعم هواتف نيكسس فقط
ممكن تعطيني حسابك ف تويتر
شكرا أخ محمد , ولكن كيف نفتح جلسة مع ,targert قمت بعمل listen على البورت فقط
السلام عليكم
حجم الراسلة بتطلع 2 ميجا وشركات الجوال لا تسمح بأكثر من 100-400 كيلو لحجم الرسائل المتعددة..
كيف بنقدر انحل المشكلة
عفوا
جميل ان الثغره يمكن استغلالها فقط صاحب الجهاز على نفسه ليختبرها وليش بشكل عشوائي على الجميع..
اتمنى النظر ايضا على ثغرة جديده نزلت في exploit-db بأسم Android libstagefright – Integer Overflow Remote Code Execution
بالضبط صديقي ,, بالأساس عندما تم طرح الثغرة تم طرحها على أساس أنها للإختبار فقط , ولكن يمكننا تنفيذ هندسة عكسية كما تناقشنا من قليل وإستخراج العناوين المطلوبه لتنفيذها على الأجهزة المختلفة , وبخصوص الثغرة سمعت عنها اليوم ويسرنا أن تقوم بالمشاركة بها معنا لإفادة الجميع 🙂
شكراً لك مجدداً
شكرا لك وعلى شرحك الجميل
لدي سؤال بعيد عن الجانب الامني المعلوماتي وهو من اين يمكنني شراء قالب عربي مثل قالبكم سمعت عن موقع themeforest لكن القوالب كلها اجنبية اتمنا ان احصل علا قالب مثل قوالبكم وشكرا
ممكن تعمل شرح عملي حول تعديل الإستغلال و تطبيقه على إحدى الأجهزة التي عندك؟
لأنو عندي Galaxy s4 و المشكلة أنه لا يوجد valid point_sp address في تطبيق الرسائل الخاص بال Samsung
سأقوم بتثبيت تطبيق hangouts و محاولة إستخراج العنوان
لم يسبق لي القيام بتنقيح كامل لتطبيق أندرويد في الحقيقة , ولكن سوف أجعل أحد المختصين في الأندرويد لدينا يقوم بذلك إن شاء الله , أتوقع أن الثغرة ليست مرتبطة بنوع معين من تطبيقات معالجة الرسائل بقدر إرتباطها بمعالجة رسالة MMS بحد ذاتها.
هل يمكن عمل اتصال عكسي مع جهاز خارج الشبكة اي بمعنى ip خاررج نطاق الشبكة المحلية اي في اي بلد في العالم يرجى ذكر الطريقة لو سمحت يعنني ممكن نغير LHOST = 192.168.1.14 الى lhost=45.69.1.25 مثلاً و هل سيحصل اتصال عكسي في هذه الحالة
يجب استعمال port-forwarding لأن ip address التي تستعملها تسمى internal ip address و تحتاج لربط internal ip address مع router لإرسال أي شيء يتلقاه عبر البورت الذي تختاره إلى العنوان الذي تضعه أي external ip address
الثغرة ليست في معالج رسائل Mms
الثغرة موجودة عند تشغيل ملف mp4 معين و بالضبط في مكتبة libstagefright
أما إستخدام mms فهي مجرد طريقة لإستغلال الثغرة
ممكن أن تفتح مباشرة الملف الناتج عن الإستغلال
كلامك صحيح عزيزي ولكن لا أتوقع أن يتم تنفيذ الإستغلال في حال تشغيل ملف mp4 بشكل عادي “مجرد رأيي” سوف أقوم بعدة محاولات لاحقاً إن شاء الله للثغرة وتدوين النتائج , يبدو أنني قد أسأت توضيح ذلك لك , شاكر جداً لك توضيح الفكرة بشكل أكبر وسوف أقوم بتحديث الموضوع إن شاء الله وذكر هذه الملاحظة , أنا حاولت أن أذكر بهذا المقال نظرة عامة وسريعة لمراحل إتمام الإستغلال وكذلك معلومات عامة وكيفية الحماية من هذه الثغرة , شكراً لك مجدداً وعيد أضحى مبارك عليك إن شاء الله 🙂
“وفي هذا المقال سوف نشرح إن شاء الله كيفية “إستغلال هذه الثغرة بادئاً بتحميلها وأخيراً إلى وصول سطر أوامر حقيقي على جهاز الهدف” يمكننا بالتحكم به فقط من خلال إرسال ملف mp4 مصاب إلى رقم هاتف الهدف.”
humm .. 🙂
ذكرت عزيزي بأن هنالك خلل حدث أثناء تكملة المقال , وأنا فعلياً كتبت المقال خلال فترتين زمنيتين مختلفتين وممكن لم أتمكن من السرد بشكل صحيح لذلك من الممكن أن هنالك لبس قد حصل لك :), أعتذر عن ذلك وعيد أضحى مبارك 🙂
لقد جربت تطبيق هذه الثغرة لكن لم تنجح. مع العلم ان هاتفي مصاب بهذه الثغرة
و بالنسبة ل spray addr و rop pivot مذا يجب ان اكتب هناك ؟
سلام عليكم ، اريد تعلم الهاكر الاخلاقي ، بحيث احصل على شهادة وتكون مؤهل وظيفي لي ، هل من كتب عربية في هذا المجال تؤهل خوض اختبار الهاكر ؟
لكل من يريد إستغلال متقدم و بشتى الطرق لهاته الثغرة فليراسلني على هذا البريد الإلكتروني :
[email protected]
ياريت اخی العزيز توضح الطريقه علی الموقع هنا أو تضع رابط
لكی يستفيد الكل من العلم
هل من الممكن ان تعمل عن طريق الواتس اب ؟
السلام عليكم
أخي أتمنى أنك تقوم بطرح موضوع حول كيفية إستخراج spray addr و rop pivot الأي هاتف وكام قلت لك ياصديقي الثغرة موجودة في مكتبة libstagefright صحيح إذا شغلت ملف Mp4 لايمكن الإستغلال بشكل مباشر وذالك عائد إلى سبب طريقة كتابة سكريبت بحيث كتب على أساس رسائل ولاكن كما تعلم فهناك إستغلال أخر وهو نزل إسمه metaphor وإنما يقوم بإستغلال على شكل رابط بحيث يتم فقط إستغلال عن طريق ملف php ولاكن نفس الشيء هناك تشتغل فقط على Android 5.0.1; Nexus 5 Build ويجب عليك التعديل على بعض المتغيرات لتشغيل على هاتف أخر
انا لم جيت اشغل الثغره جالي الخطاء ده ايه الحل
File /opt/mp4.py, line 353, in
File /opt/mp4.py, line 353, in
File /opt/mp4.py, line 353, in module>
ThanK You