
اختراق وفك تشفير BLE

crackle يكسر تشفير BLE (المعروف أيضًا باسم Bluetooth Smart).
يستغل crackle ثغرة في عملية الاقتران BLE تسمح للمهاجم بتخمين أو تجربة القوة العمياء بسرعة كبيرة للمفتاح المؤقت (TK). باستخدام المفتاح المؤقت والبيانات الأخرى التي تم جمعها من عملية الاقتران، يمكن جمع المفتاح قصير المدى (STK) ثم المفتاح طويل المدى (LTK).
باستخدام STK وLTK، يمكن فك تشفير جميع الاتصالات بين السيد والعبد.
قبل محاولة استخدام crackle، راجع الأسئلة الشائعة لتحديد ما إذا كانت الأداة المناسبة لموقفك.
تم كتابة crackle بواسطة Mike Ryan [email protected] راجع موقع الويب لمزيد من المعلومات: http://lacklustre.net/projects/crackle/
لدى crackle وضعان رئيسيان للتشغيل: كسر TK وفك التشفير باستخدام LTK.
هذا هو الوضع الافتراضي المستخدم عند توفير crackle بملف إدخال باستخدام -i.
في وضع كسر TK، يقوم crackle بتجربة القوة العمياء للمفتاح TK المستخدم أثناء حدث اقتران BLE. يستغل crackle حقيقة أن TK في وضع "Just Works(tm)" ورمز PIN المكون من 6 أرقام هو قيمة في النطاق [0,999999] مبطن إلى 128 بت.
يستخدم crackle عدة طرق لأداء هذه القوة العمياء: طريقة سريعة جدًا إذا كانت جميع حزم الاقتران موجودة في ملف الإدخال، وطريقة بطيئة إذا كانت مجموعة دنيا من الحزم موجودة.
لاستخدام هذا الوضع، قم بتشغيل crackle بملف PCAP أو PcapNG إدخال يحتوي على اتصال واحد أو أكثر مع محادثة اقتران BLE. سيقوم crackle بتحليل جميع الاتصالات، وتحديد ما إذا كان من الممكن كسر اتصال معين، واختيار أفضل استراتيجية تلقائيًا لكسر كل اتصال.
إذا تم كسر TK بنجاح، سيقوم crackle باستخلاص المفاتيح المتبقية المستخدمة لتشفير باقي الاتصال وسيقوم بفك تشفير أي حزم مشفرة تتبع. إذا تم تبادل LTK (عادةً أول شيء يتم فعله بعد إنشاء التشفير)، سيقوم crackle بإخراج هذه القيمة إلى stdout. يمكن استخدام LTK لفك تشفير أي اتصالات مستقبلية بين نقاط النهاية.
قم بتوفير crackle بملف إخراج باستخدام -o لإنشاء ملف PCAP جديد يحتوي على البيانات التي تم فك تشفيرها (بالإضافة إلى البيانات غير المشفرة بالفعل).
مثال على الاستخدام:
$ crackle -i input.pcap -o decrypted.pcap
في وضع فك التشفير باستخدام LTK، يستخدم crackle مفتاح LTK يوفره المستخدم لفك تشفير الاتصالات بين السيد والعبد. هذا الوضع مماثل لجزء فك التشفير من وضع كسر TK.
مثال على الاستخدام:
$ crackle -i encrypted.pcap -o decrypted.pcap -l 81b06facd90fe7a6e9bbd9cee59736a7
في وضع كسر TK، يتطلب crackle ملف PCAP يحتوي على حدث اقتران BLE. أفضل طريقة لإنشاء مثل هذا الملف هي استخدام Ubertooth لالتقاط حدث اقتران بين سيد وعبد.
للتحقق مما إذا كان ملف PCAP الخاص بك يحتوي على جميع الحزم اللازمة، قم بتشغيل crackle مع الخيار -i:
crackle -i <file.pcap>
سيقوم crackle بتحليل كل اتصال في ملف الإدخال وإخراج نتائج تحليله إلى stdout. إذا كانت لديك جميع مكونات محادثة الاقتران، سيبدو الإخراج كما يلي:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 13 encrypted packets
Cracking with strategy 0, 20 bits of entropy
!!!
TK found: 412741
!!!
Decrypted 12 packets
LTK found: 81b06facd90fe7a6e9bbd9cee59736a7
Specify an output file with -o to decrypt packets!
لفك تشفير جميع الحزم، أضف الخيار -o:
crackle -i <file.pcap> -o <output.pcap>
سيحتوي ملف الإخراج على إصدارات مفكوكة التشفير لجميع الحزم المشفرة من PCAP الأصلي، بالإضافة إلى جميع الحزم غير المشفرة. لاحظ أن رموز CRC لا يتم إعادة حسابها، لذا ستكون رموز CRC للحزم المفكوكة التشفير غير صحيحة.
في وضع فك التشفير باستخدام LTK، يتطلب crackle ملف PCAP يحتوي على الأقل على حزم LL_ENC_REQ و LL_ENC_RSP والمفتاح LTK المستخدم لتشفير الاتصالات.
تنسيق LTK هو رقم سداسي عشري 128 بت بدون مسافات أو فواصل، من البايت الأكثر أهمية إلى البايت الأقل أهمية. مثال:
-l 81b06facd90fe7a6e9bbd9cee59736a7
للتحقق مما إذا كان ملف PCAP الخاص بك يحتوي على جميع الحزم اللازمة، قم بتشغيل crackle مع -i و -l:
crackle -i <file.pcap> -l <ltk>
إذا كان لديك كلتا الحزمتين المطلوبتين، يجب أن ينتج البرنامج إخراجًا مشابهًا لهذا:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 9 encrypted packets
Decrypted 6 packets
Specify an output file with -o to decrypt packets!
لفك تشفير جميع الحزم، أضف الخيار -o:
crackle -i <file.pcap> -o <out.pcap> -l <ltk>
سيتم إنتاج ملف الإخراج بشكل مشابه لملف الإخراج الموضح أعلاه.
ملفات الاختبار المضمنة في دليل tests تعمل كمدخلات مثيرة للاهتمام للعب مع crackle. راجع ملفات README المضمنة في كل دليل فرعي للاختبار.
احصل على بعض ملفات العينة للتجربة مع crackle. راجع README داخل الملف المضغوط لمزيد من المعلومات:
https://lacklustre.net/bluetooth/crackle-sample.tgz
لقد قمنا بتجميع قائمة من الأسئلة الشائعة.
شكر كبير لميشيل أوسمان ودومينيك سبيل من مشروع Ubertooth. لا شيء من هذا سيكون ممكنًا بدونهم.
شكر كبير لمايك كيرشو/دراجورن من Kismet للمساعدة في إنشاء والعمل مع ملفات PCAP.
شكر لبقية #ubertooth on irc.freenode.net.