الصورة: Sascha Kohlmann ، CC BY-SA 2.0هناك أنظمة لا يستطيع البشر الوصول إليها افتراضيًا. ويعتقد مطورو هذه الأنظمة بسذاجة أنهم محميون من تغلغل الباحثين وأعينهم الحادة.
خذ على الأقل أجهزة الصراف الآلي. هناك حالات متكررة عندما يأتي أشخاص مجهولون إلى أجهزة الصراف الآلي ، ويقومون بتوصيل جهاز كمبيوتر محمول ، ويأخذون المال ويغادرون دون ترك أي سجلات في النظام. وتؤكد القصص الأخيرة التي تحتوي على "
شرحات " (برامج ضارة تسمى
Cutlet Maker ) أنه لا توجد أنظمة معرضة للخطر - هناك أنظمة غير مستكشفة.
تبدأ الدراسة
هناك رأي مفاده أن الطريقة الوحيدة لسرقة الأموال من أجهزة الصراف الآلي هي القيادة على شاحنة تفريغ ، والتقاط خطاف إلى أجهزة الصراف الآلي وتمزيقها ، ثم استخدام مطحنة ومخل وآلة لحام غاز. ولكن هناك طريقة أخرى.
بعد بحث قصير على
موقع Ebay ، كان لدي
موزع NCR USB S1 مع برنامج ثابت على مكتبي. كانت الأهداف كما يلي:
- العثور على تجاوز لتشفير الأوامر التي يرسلها الكمبيوتر عبر USB إلى الموزع نفسه ، ولا سيما لإصدار الأوراق النقدية ؛
- تعرف على كيفية التغلب على الحاجة للوصول المادي إلى خزنة المصادقة (اهتزاز الكاسيت) لتوليد مفاتيح التشفير للأوامر من الفقرة السابقة.

البرامج الثابتة
البرنامج الثابت هو ملف
ELF لمعالج NXP ColdFire (
Motorola 68040 ، المعالج المفضل لدي) ، يعمل على
VxWorks v5.5.1 .
في ملف
ELF ، هناك قسمان رئيسيان
مهمان -
نص وبيانات.- يحتوي أحدها على رمز يدور طوال الوقت (دعنا نسميها البرامج الثابتة الرئيسية) عندما يكون الموزع متصلاً بوحدة النظام في الجزء العلوي من جهاز الصراف الآلي.
- والثاني هو رمز برنامج bootloader المعبأ ب zlib (اسمه المحلي هو USB Secure Bootloader ) ، وهو المسؤول عن تحميل البرامج الثابتة وتشغيل الكود الرئيسي.
وأفضل ما في الأمر أن الرموز تبقى غير واضحة في الملف - خذها وابحث عن شيء مثير للاهتمام.
الجهاز الداخلي للبرنامج الثابت الرئيسي
إذا قمت بتقسيم الشفرة إلى مكونات رئيسية ، فستحصل على المخطط التالي (بترتيب التقديم):
- دفق يتعامل مع تلقي حزم USB وتوزيعها بين الخدمات.
- الخدمات هي الوحدات التنفيذية الرئيسية ، لكل منها دورها الخاص ولكل منها مهامها (الفئات) الخاصة بها.
- الفصول الدراسية - هذه هي المهام التي يمكن أن تؤديها خدمة معينة بمساعدة وحدات التحكم.
- المراقبون هم في الواقع " العمال " ( العمال ) الذين يشاركون في التحقق من المهام المرسلة إليهم وتنفيذها ، فضلا عن تشكيل حزم الاستجابة.

نظرًا لوجود الكثير من التعليمات البرمجية في البرامج الثابتة ، فقد تقرر البدء بالبحث عن جميع الخدمات الممكنة ، ثم البحث عن مكان نقل المهام.
ونتيجة لذلك ، تم العثور على الخدمات التالية التي يجب أن تفعل ما أبحث عنه:
1)
DispTranService (خدمة معاملات الموزع) : العمل مع الأوامر المشفرة ، وتشكيل حزم الأوراق النقدية ، والمصادقة. يمكنك القول أن الأكثر إثارة للاهتمام هنا.

2)
securityService : بعد المصادقة ، يتم إنشاء مفتاح جلسة على جانب الموزع ، والذي ، بناءً على طلب الكمبيوتر ، يتم إرساله إليه في شكل مشفر. سيقوم هذا المفتاح بتشفير جميع الأوامر المهمة - إصدار وتشكيل حزمة من الأوراق النقدية.

في وقت لاحق ، لفتت انتباهي خدمة أخرى:
UsbDownloadService . مهمتها هي ، عندما يكون الموزع متصلاً بالكمبيوتر ولا يتطابق إصدار البرنامج الثابت للموزع مع الإصدار المخزن على كمبيوتر ATM ، انتقل إلى
bootloader لتحميل البرنامج الثابت الذي يجب أن يعمل عليه نظام التشغيل (يقع في المجلد الذي يحتوي على برنامج البائع على الكمبيوتر). تعرف هذه الخدمة أيضًا كيفية تقديم معلومات حول إصدار البرامج الثابتة.

المصادقة المادية
يتم تنفيذ المصادقة المادية على أعلى مستوى وتحمي أجهزة الصراف الآلي من إرسال الأوامر ببساطة عبر USB لإصدارها دون إذن. في هذه الحالة ، يتألف من حقيقة أنه فقط مع خزنة مفتوحة بالمال تحتاج إلى القيام بأي مما يلي:
- قم بإزالة الدرج السفلي وإدخاله ،
- قم بتبديل مفتاح التبديل الموجود على ظهر الحامل باستخدام الموزع.

ولكن كل هذا مطلوب فقط إذا تم تعيين مستوى الوصول إلى الحد الأقصى ، أي المادي. هناك ثلاثة منها:
USB (0)
والمنطقي (1)
والمادي (2). يتم استخدام الاثنين المتبقيين من قبل مزودي الخدمة والمطورين لتصحيح واختبار البرامج الثابتة. حسنًا ، ينصح البائع بشدة باستخدام العنصر المادي بشكل افتراضي.
الضعف
يصف ما يلي الثغرة الحرجة (التي تم إصلاحها بالفعل من قبل البائع في وقت نشر المقالة) ، والتي جعلت من الممكن تنفيذ أي أوامر موزع ، بما في ذلك السحب النقدي ، إذا كان هناك وصول إلى منطقة الخدمة ، ولكن دون الوصول إلى الخزنة (على سبيل المثال ، من خلال الثقب الموجود في اللوحة الأمامية لجهاز الصراف الآلي).
كما اتضح ، فإن
UsbDownloadService يقبل الأوامر التي لا تتطلب التشفير. يبدو مغريا. ولكن فجأة أصبح كل شيء محميًا أكثر ، واسم
Secure Bootloader سيؤتي ثماره؟
(المفسد: غير مبرر!)نحن بحاجة إلى التعمق أكثر
كما ذكرنا من قبل ، يوجد في قسم البيانات. رمز محمل محمل ، والذي لم يسبب لي اهتمامًا منذ فترة طويلة ، ولم ينتبه زملائي عند فحص البرنامج الثابت.

بينما كان محمل الإقلاع لغزًا ، ظل السؤال مفتوحًا: كيف يغمر البرنامج على الكمبيوتر البرامج الثابتة؟ في الواقع ، في البرامج الثابتة الرئيسية ، لم يتم العثور على أي شيء من هذا القبيل.
لذلك ، تم
تفريغ محمل الإقلاع ، تم تحميله في
IDA عند الإزاحة
0x100000 - الآن يمكنك التحقيق ... فقط لا توجد أحرف!
لا يهم: مقارنة البرامج الثابتة الرئيسية برمز برنامج bootloader ، وقراءة ورقة بيانات وحدة التحكم - وتبدأ صورة معينة في الظهور.

اتضح أن تحميل البرنامج الثابت ، على الرغم من أنه يبدو محميًا ، ليس في الواقع. كل ما تحتاج إلى معرفته هو كيفية ملئه بشكل صحيح.
تم إنفاق الكثير من الجهد والوقت على الفهم الكامل لهذه العملية (لمزيد من التفاصيل ، راجع التقرير "
Blackbox is dead - Long live Blackbox! " في مؤتمر Black Hat 2018 في لاس فيجاس). لماذا يستحق لحام ذاكرة NVRAM ، تحميل نسخة احتياطية إليها بهدف "تجريف" وحدة التحكم بأكملها ...
شكرًا لزميلك Alexei على صبرك!
نتيجة لذلك ، حصلنا على الخوارزمية التالية لتحميل البرامج الثابتة إلى الموزع:
1) قم بتوليد زوج من مفاتيح RSA واملأ المفتاح العام في وحدة التحكم.

2) اكتب
مقاطع بيانات وبيانات
نصية بالتتابع من
ELF إلى عناوينها الفعلية من رؤوس الأقسام.
3) حساب SHA-1 من البيانات المسجلة ، وتشفير التجزئة باستخدام مفتاح خاص ، وإرساله إلى وحدة التحكم.

4) حساب وإرسال مجموع جميع الكلمات المسجلة للبرنامج الثابت.

بعد ذلك ، إذا تم حساب كل شيء وتسجيله بنجاح ، فسيتم تحميل البرنامج الثابت الرئيسي.
اتضح أنه عند كتابة البرامج الثابتة ، هناك حد واحد فقط: يجب ألا يكون إصدار البرامج الثابتة أقل من الإصدار الحالي. ولكن لا أحد يمنعنا من تغيير إصدار البرامج الثابتة في بياناته نفسها.
ونتيجة لذلك ، تم تحميل
برنامجي الثابت الخاص
بإصلاحات عدم الأمان وإطلاقه بنجاح!
عند هذه النقطة ، تمت دراسة رمز البرنامج الثابت الرئيسي جيدًا ، وتم العثور على أوامر لإصدار الأوراق النقدية. الآن يمكن إرسالها بدون تشفير ، وسينفذها الموزع بسعادة.

العدد
بعد كل شيء تم اختباره خلال الدراسة (على سبيل المثال ، ماكينة صراف آلي حقيقية "
ممتلئة ") ، كانت النتيجة ممتعة جدًا وتعوض عن الجهود التي أردت تكرار الخوارزمية مع بائع كبير آخر.

بدأ جهاز الصراف الآلي الأكثر واقعية في المشاركة بشكل متوتر ومتحمس معنا الأوراق النقدية الطازجة المقرمشة (في هذه الحالة ، "أغلفة الحلوى" للبائع). لم يتم تطبيق أي سحر: فقط جهاز كمبيوتر محمول ، دماغ وسلك USB.
الاستنتاجات
مرة أخرى ، كنا مقتنعين بأنه من المستحيل توفير الحماية الكافية ، مسترشدين بمبدأ
الأمن من
خلال الغموض . لا تعني صلاحية الشفرة أو البرامج الثابتة على الإطلاق أنه في نقطة واحدة جيدة لن يتمكن المهاجم من الوصول إليها ولن يستفيد من الثغرات الموجودة. يمكن الحصول على كل ما هو ضروري لتنفيذ الأهداف الأنانية في وجود مبلغ معين من المال.
يجب على المطورين التعامل مع الرمز ، ويجب على حراس الأمن حمايته. لهذا السبب يبدو أن النهج الأكثر إنتاجية هو التعاون مع شركات أمن المعلومات ذات الخبرة الكافية في ضمان أمن الأنظمة المختلفة التي ستساعد في بناء حماية كافية في كل حالة.
أكد PS Vendor الثغرة الأمنية (تم العثور على فجوة أيضًا في نموذج آخر -
S2 ) ، والذي تم إصلاحه في إصلاح فبراير 2018.
قائمة CVE:
شكر وتقدير
قبلي ، عمل زملائي -
ديما سكلياروف وميشا تسفيتكوف - بالفعل على البرامج الثابتة (على الرغم من عدم وجود لوحة موزع). لقد ساعدتني إنجازاتهم كثيرًا في الدراسة ، والتي شكرهم كثيرًا لها! فيما يتعلق بالأجهزة ،
ساعدني أليكسي ستينيكوف كثيرًا.