هوايتي القديمة هي عكس قرصنة محركات الأقراص ذات التشفير الخارجي. في الماضي ، كنت أمارس نماذج مثل Zalman VE-400 و Zalman ZM-SHE500 و Zalman ZM-VE500. في الآونة الأخيرة ، أحضرني أحد الزملاء معرضًا آخر: Patriot (Aigo) SK8671 ، والذي تم تصميمه وفقًا لتصميم نموذجي - مؤشر LCD ولوحة مفاتيح لإدخال رمز PIN. هنا ما جاء منه ...
1. مقدمة
2. هندسة الأجهزة
- 2.1. اللوحة الرئيسية
- 2.2. لوحة LCD
- 2.3. لوحة المفاتيح
- 2.4. نحن ننظر إلى الأسلاك
3. تسلسل خطوات الهجوم
- 3.1. إزالة تفريغ البيانات من محرك أقراص فلاش SPI
- 3.2. شم الاتصالات

1. مقدمة

إسكان

حزم
يتم الوصول إلى البيانات المخزنة على القرص ، والتي يُفترض أنها مشفرة ، بعد إدخال رمز PIN. بعض الملاحظات التمهيدية على هذا الجهاز:
- لتغيير الرمز السري ، اضغط F1 قبل إلغاء القفل ؛
- يجب أن يتراوح الرقم السري بين 6 و 9 أرقام ؛
- بعد 15 محاولة غير صحيحة ، يتم مسح القرص.
2. هندسة الأجهزة
أولاً ، نقوم بإعداد الجهاز إلى أجزاء لفهم المكونات التي يتكون منها. المهمة الأكثر مملة هي فتح القضية: الكثير من التروس المجهرية والبلاستيكية. بعد فتح العلبة ، نرى ما يلي (انتبه إلى الموصل المكون من خمسة أسنان الذي تم لحامه بواسطةي):

2.1. اللوحة الرئيسية
اللوحة الرئيسية بسيطة جدا:

أجزائه البارزة (انظر من الأعلى إلى الأسفل):
- موصل LCD (CN1) ؛
- مكبر الصوت (SP1) ؛
- Pm25LD010 ( مواصفات ) محرك أقراص فلاش SPI (U2) ؛
- وحدة تحكم Jmicron JMS539 ( مواصفات ) لـ USB-SATA (U1) ؛
- موصل USB 3 (J1).
يخزن محرك أقراص فلاش SPI البرامج الثابتة لجهاز JMS539 وبعض الإعدادات.
2.2. لوحة LCD
لا يوجد شيء رائع على لوحة LCD.


فقط:
- مؤشر LCD من أصل غير معروف (ربما مع مجموعة الخطوط الصينية) ؛ مع التحكم التسلسلي.
- موصل الشريط لوحة المفاتيح.
2.3. لوحة المفاتيح
عندما تنظر إلى لوحة المفاتيح ، تأخذ الأمور لمسة أكثر إثارة للاهتمام.

هنا ، على الجانب الخلفي ، نرى موصل الشريط ، وكذلك Cypress CY8C21434 - متحكم PSoC 1 (يشار إليه فيما يلي باسم PSoC ببساطة)

يستخدم CY8C21434 مجموعة التعليمات M8C (انظر الوثائق ). في صفحة المنتج ، يشار إلى أنها تدعم تقنية CapSense (حل من Cypress ، لوحات المفاتيح بالسعة). هنا أستطيع أن أرى الرابط المكون من خمسة أسنان ملحومًا بي - وهذا هو النهج القياسي لتوصيل مبرمج خارجي عبر واجهة ISSP.
2.4. نحن ننظر إلى الأسلاك
دعنا نتعرف على ما هو مرتبط بهذا. للقيام بذلك ، يكفي رنين الأسلاك بمقياس متعدد:

توضيحات لهذا المخطط المرسوم بالركبة:
- ويرد وصف PSoC في المواصفات الفنية ؛
- الموصل التالي ، الموصل الموجود على اليمين هو واجهة ISSP ، والتي تتوافق ، بناءً على إرادة القدر ، مع ما هو مكتوب عنها على الإنترنت ؛
- الموصل الموجود في أقصى اليمين هو محطة لموصل الشريط مع لوحة مفاتيح ؛
- المستطيل الأسود عبارة عن رسم للموصل CN1 ، المصمم لتوصيل اللوحة الرئيسية بلوحة LCD. P11 و P13 و P4 - متصل بأرجل PSoC 11 و 13 و 4 على لوحة LCD.
3. تسلسل خطوات الهجوم
الآن بعد أن عرفنا المكونات التي يتكون منها محرك الأقراص هذا ، نحتاج إلى: 1) التأكد من أن وظيفة التشفير الأساسية موجودة بالفعل ؛ 2) اكتشف كيف يتم إنشاء / تخزين مفاتيح التشفير ؛ 3) العثور على المكان الذي يتم التحقق بالضبط pincode.
للقيام بذلك ، قمت بالخطوات التالية:
- إزالة تفريغ بيانات محرك أقراص فلاش SPI ؛
- حاولت إزالة تفريغ البيانات من محرك أقراص فلاش PSoC ؛
- تأكد من أن تبادل البيانات بين Cypress PSoC و JMS539 يحتوي بالفعل على المفاتيح المضغوطة ؛
- تأكد من أنه عند تغيير كلمة المرور ، لا يتم الكتابة على أي شيء في محرك أقراص فلاش SPI ؛
- كان كسول جدا لعكس البرامج الثابتة 8051 من JMS539.
3.1. إزالة تفريغ البيانات من محرك أقراص فلاش SPI
هذا الإجراء بسيط للغاية:
- توصيل المجسات بأرجل محرك الفلاش: CLK ، MOSI ، MISO و (اختياري) EN ؛
- الاتصالات "الشم" باستخدام الشم باستخدام محلل المنطق (كنت Saleae Logic Pro 16 ) ؛
- فك تشفير بروتوكول SPI وتصدير النتائج إلى CSV ؛
- استخدم decode_spi.rb لتحليل النتائج والحصول على تفريغ.
يرجى ملاحظة أن هذا النهج في حالة جهاز التحكم JMS539 يعمل بشكل جيد ، نظرًا لأن وحدة التحكم هذه تقوم بتحميل البرنامج الثابت بالكامل من محرك أقراص فلاش USB أثناء مرحلة التهيئة.
$ decode_spi.rb boot_spi1.csv dump 0.039776 : WRITE DISABLE 0.039777 : JEDEC READ ID 0.039784 : ID 0x7f 0x9d 0x21 --------------------- 0.039788 : READ @ 0x0 0x12,0x42,0x00,0xd3,0x22,0x00, [...] $ ls --size --block-size=1 dump 49152 dump $ sha1sum dump 3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump
بعد إزالة التفريغ من محرك أقراص فلاش SPI ، توصلت إلى استنتاج مفاده أن مهمتها الوحيدة هي تخزين البرامج الثابتة لوحدة التحكم JMicron ، والمضمنة في متحكم 8051. لسوء الحظ ، تبين أن تفريغ محرك أقراص فلاش SPI لا فائدة منه:
- عند تغيير رمز PIN ، يظل تفريغ محرك الأقراص المحمول كما هو ؛
- بعد مرحلة التهيئة ، لا يصل الجهاز إلى محرك أقراص فلاش SPI.
3.2. شم الاتصالات
هذه هي إحدى الطرق للعثور على الشريحة المسؤولة عن التحقق من الاتصالات للوقت / المحتوى محل الاهتمام. كما نعلم بالفعل ، يتم توصيل وحدة تحكم USB-SATA بشاشة LCD Cypress PSoC من خلال موصل CN1 وشريطين. لذلك ، فإننا نربط المجسات بالأرجل الثلاثة المقابلة:
- P4 ، المدخلات / المخرجات العامة ؛
- P11، I2C SCL؛
- P13 ، I2C SDA.

ثم نبدأ تشغيل محلل منطق Saleae ، وأدخل على لوحة المفاتيح: "123456 ~". نتيجة لذلك ، نرى الرسم البياني التالي.

على ذلك يمكننا أن نرى ثلاث قنوات لتبادل البيانات:
- تحتوي القناة P4 على عدة رشقات قصيرة ؛
- على P11 و P13 - تبادل البيانات المستمر تقريبا.
بزيادة الدفعة الأولى على القناة P4 (المستطيل الأزرق من الشكل السابق) ، نرى ما يلي:

هنا يمكنك أن ترى أنه في P4 يوجد ما يقرب من 70 مللي ثانية من الإشارة الموحدة ، والتي ، كما بدا لي في البداية ، تلعب دور إشارة الساعة. ومع ذلك ، بعد أن قضيت بعض الوقت في محاولة التحقق من حدسي ، وجدت أن هذه ليست إشارة ساعة ، ولكن دفق الصوت الذي يتم إخراج إلى squeaker عند الضغط على المفاتيح. لذلك ، لا يحتوي قسم الإشارة نفسه على معلومات مفيدة لنا. ومع ذلك ، يمكن استخدامه كمؤشر - لمعرفة اللحظة التي يسجل فيها PSoC ضغطة مفتاح.
ومع ذلك ، فإن الدفق الصوتي الأخير لقناة P4 يختلف قليلاً عن الآخر: هذا هو صوت "الرمز السري الخاطئ"!
بالعودة إلى مخطط ضربات المفاتيح ، عند زيادة الرسم البياني لآخر دفق صوتي (انظر مرة أخرى المستطيل الأزرق) نحصل على:

هنا نرى إشارات رتابة على P11. لذلك يبدو أن هذه هي الساعة. و P13 هي البيانات. لاحظ كيف يتغير النمط بعد نهاية الصفير. سيكون من المثير للاهتمام معرفة ما يحدث هنا.
عادةً ما تكون البروتوكولات التي تعمل مع سلكين هي SPI أو I2C ، وتقول المواصفات التقنية لـ Cypress أن هذه الاتصالات تتوافق مع I2C ، وهو ، كما نرى ، صحيح بالنسبة لحالتنا:

تقوم مجموعة شرائح USB-SATA باستقصاء PSoC باستمرار - لقراءة حالة المفتاح ، والتي يتم تعيينها افتراضيًا على "0". ثم ، عندما تضغط على المفتاح "1" ، يتغير إلى "1". يختلف ناقل الحركة النهائي ، بعد الضغط مباشرة على "~" ، في حالة إدخال رمز PIN غير الصحيح. ومع ذلك ، في الوقت الحالي لم أفحص ما الذي تم نقله بالفعل هناك. لكني أظن أن هذا بالكاد مفتاح تشفير. على أي حال ، راجع القسم التالي لفهم كيفية إزالة تفريغ البرامج الثابتة PSoC الداخلية.