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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
test_avb_key — أداة Python للتحقق مما إذا كانت صور الإقلاع الموثّق (vbmeta) في أندرويد موقّعة بمفاتيح اختبار معروفة علنًا، لتحديد سوء التهيئة في إصدارات الإنتاج. | Kitploit
أدوات/GitHubGitHub/nccgroup/test_avb_key
أمان أندرويدتحليل الثغرات الأمنيةالتشفيراختبار الاختراقأمن الجوالتحليل البرامج الثابتة
GitHubnccgroup/test_avb_key

test_avb_key

أداة Python للتحقق مما إذا كانت صور الإقلاع الموثّق (vbmeta) في أندرويد موقّعة بمفاتيح اختبار معروفة علنًا، لتحديد سوء التهيئة في إصدارات الإنتاج.

عرض المستودع
93منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

حول التوقيع تقريبًا على إصدارات أندرويد

مقدمة

الخطأ الذي يصادفه مستشارو NCC Group أحيانًا هو توقيع إصدارات أندرويد بمفاتيح خاصة معروفة. وهذا يترك مصنّعي الأجهزة (وبالتالي مستخدميهم) عرضة للخطر، حتى على الأجهزة التي يكون فيها الإقلاع الآمن مفعّلًا. لهذه التدوينة هدفان:

  • رفع الوعي حول هذه المشكلة
  • تقديم سكربت مصمّم كفحص سريع للتحقق مما إذا كان إصدار أندرويد قد وُقّع (بشكل غير صحيح) بمفتاح خاص معروف.

عندما تُقلع الأجهزة القائمة على أندرويد، يُتحقق أولًا من أن مُحمّل الإقلاع يشغّل كودًا موقّعًا، ثم يتحقق مُحمّل الإقلاع من نظام التشغيل عالي المستوى (HLOS). لا تغطي هذه التدوينة سوى الجزء الأخير.

تأمين مُحمّل الإقلاع – نظرة عامة مختصرة

يمكن لكل بائع شرائح (chipset) تنفيذ جذر الثقة (RoT) بشكل مختلف، لكن عادةً ما تُؤمَّن الأجهزة عبر تكوين الفيوزات الإلكترونية (e-fuses). يقرأ كود ROM غير القابل للتعديل والمحروق على الشريحة هذه الفيوزات ويفسّرها كبتات من تجزئة تشفيرية. تُستخدم التجزئة بعد ذلك للتحقق من مفتاح عام موثوق، يُضمَّن عادةً في ثنائية مُحمّل الإقلاع. بمجرد التحقق من صحة المفتاح العام، يُستخدم لاحقًا للتحقق تشفيريًا من أن أول كود قابل للتعديل يُشغَّل على الجهاز موقّع. إذا نُفِّذت هذه العملية بشكل صحيح، فإن أي محاولة لتعديل مُحمّل الإقلاع ستفشل. عادةً ما يستخدم مصنّعو المعدات الأصلية (OEMs) الذين يصنّعون أجهزة قائمة على أندرويد (كاميرات المراقبة، المقابس الذكية أو أجهزة الاستشعار، إلخ) التصميم المرجعي وكود العينات من بائع الشرائح (أي Qualcomm) كنقطة انطلاق لمنتجهم.

الإقلاع المؤمّن لأندرويد (AVB)

AVB هو جزء من الآلية المستخدمة لضمان سلامة البرمجيات التي تعمل على الجهاز. تحتوي الأجهزة على قسم يُسمى vbmeta يحتوي على صورة يُتحقق منها تشفيريًا. بعد أن يُجري مُحمّل الإقلاع تحققًا ناجحًا، يثق الجهاز بمحتوى صورة vbmeta. تحتوي الصورة على معلومات يستخدمها مُحمّل الإقلاع لاحقًا للتحقق من البرمجيات الموجودة على أقسام مثل boot أو vendor أو system.

من أجل التسهيل، يوفر بائعو الشرائح كودًا مرجعيًا يُترجم بنجاح دون أي إعدادات إضافية، لتبسيط عملية تشغيل أجهزة OEM. في البداية، تُوقَّع هذه الصور باستخدام مفاتيح خاصة للاختبار، التي أنشأتها Google لأول مرة، وهي موجودة في جميع إصدارات أندرويد الأصلية (vanilla builds). أحيانًا يحدّث بائعو الشرائح مفاتيح الاختبار هذه، لكن مفاتيح التوقيع الخاصة ما تزال موجودة في كود العينات، لذلك يجب اعتبارها غير موثوقة.

المشكلة

وجدت NCC Group أن مصنّعي الأجهزة قد يؤمّنون مُحمّل الإقلاع بشكل صحيح عبر تكوين الفيوزات، لكنهم لا يغيّرون مفتاح الاختبار الخاص الافتراضي المستخدم لتوقيع HLOS. لذلك، على الرغم من عدم إمكانية تعديل مُحمّل الإقلاع، يمكن للمهاجم بناء وتوقيع كود HLOS مخصص، وتحديث أقسام سيتم التحقق منها بنجاح عبر عملية AVB.

أداة التحقق

أنشأت NCC Group أداة تتحقق مما إذا كان vbmeta.img يتضمن الجزء العام لمفتاح خاص معروف. بالنسبة لمفاتيح الاختبار، تقبل الأداة مسارًا يوفره المستخدم (يُشار إليه بمتغير البيئة BOARD_AVB_KEY_PATH في إصدار أندرويد)، أو تستخدم مجموعة من المفاتيح المعروفة التي جُمعت من GitHub والمضمنة مع الأداة.

root@kitploit:~
$ python3 test_avb_key.py --help 
Usage: 
     python test_avb_key.py [VBMETA.IMG] [PATH_PRIVATE_KEY] 
Parameters: 
     * Parameter 'VBMETA.IMG' points to a user or userdebug file from an Android build. 
       Note: the userdebug image fails this test, it is expected. 
     * Grep Android build for 'BOARD_AVB_KEY_PATH' to obtain path of signing file, 
       and leave only the path, i.e. 'external/avb/test/data/'. 

إذا كانت برمجيات HLOS قد وُقّعت بمفتاح خاص افتراضي، وتم رصد المشكلة. على سبيل المثال، بالنسبة لإصدار LineageOS:

root@kitploit:~
$ python test_avb_key.py ./sample/vbmeta/lineage/vbmeta.img ./sample/aosp/external/avb/test/data/
Opening vbmeta file: ./sample/vbmeta/lineage/vbmeta.img

Using known private key for verification: ./sample/aosp/external/avb/test/data/sign_key.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_pik.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_prk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_psk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_puk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048_gsi.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048_oneplus.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa4096.pem. Public key found at index: 945
If the script was executed on a vbmeta.img file from an Android user build, there is a problem.

بخلاف ذلك، تُرجع الأداة رسالة نجاح. خذ على سبيل المثال إصدار Pixel9:

root@kitploit:~
$ python test_avb_key.py ./sample/vbmeta/pixel9/vbmeta.img ./sample/aosp/external/avb/test/data/
Opening vbmeta file: ./sample/vbmeta/pixel9/vbmeta.img

Using known private key for verification: ./sample/aosp/external/avb/test/data/sign_key.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_pik.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_prk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_psk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_atx_puk.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048_gsi.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa2048_oneplus.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa4096.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa4096_oneplus.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa4096_realtek.pem. Public key not found in vbmeta.img file. That's good.
Using known private key for verification: ./sample/aosp/external/avb/test/data/testkey_rsa8192.pem. Public key not found in vbmeta.img file. That's good.
No issues were found with ./sample/vbmeta/pixel9/vbmeta.img

يمكن لمطوري أندرويد استخدام هذه الأداة كفحص سريع، للتأكد من أن إصدارات النشر/الإنتاج ليست موقّعة باستخدام مفاتيح خاصة معروفة للعموم. ويمكن أيضًا دمجها في عملية البناء لضمان توقيع إصدارات المستخدم (user builds) لأندرويد بشكل صحيح، أو سيفشل البناء.

تنزيل الأداة