STM, STM32, امنیت و نفوذ, توصیه شده, مقاله

هک پروگرامر ST-Link: شکسن رمز و آپدیت برنامه

در مقاله قبل ( هک پروگرامر ST-Link نفوذ به بوت لودر ) ، با بررسی دیتاهای به دست آمده و آنالیز عملکرد به نتایج خوبی از هک پروگرامر رسیدیم ، نتایج حاکی از آن بود که فایل فریمور پروگرامر ST-Link احتمالا باید درون برنامه آپدیتر باشد و از طرفی به دلیل نمایش ورژن فریمور قابل آپدیت در نرم افزار احتمالا کلید آن باید جایی درون برنامه ذخیره شده باشد. در این قسمت به عنوان آخرین قسمت از سری مقالات هک پروگرامر St-Link قصد داریم نحوه استخراج کد را آموزش دهیم پس با سیسوگ همراه باشد.

 

دسترسی به سورس نرم افزار

نقص های امنیتی جاوا

برای استخراج کد از درون برنامه نیاز است که ابتدا سورس کد برنامه آپدیتر را به دست آوریم و بعد از آن با بررسی آن قادر خواهیم بود که کلید مورد نظر را از برنامه اسنخراج کنیم . همانطور که قبلا هم اشاره کردیم، Java یک زبان میانی است که توسط ماشین مجازی Java بر روی سیستم اجرا می شود ، همین قابلیت به برنامه هایی که با استقاده جاوا نوشته می شوند امکان میدهند که بر روی سیستم عامل های مختلف قابل اجرا باشند. البته به ما هم این امکان را می دهند که بتوانیم کدهای نوشته را از دل برنامه اجرایی استخراج کنیم !

برای استخراج کد از فایل اجرایی جاوا نرم افزار های زیادی وجود دارند ، ما از نرم افزار procyon decompiler استفاده کردیم.

 

پیدا کردن کلید رمزگذاری پروگرامر ST-Link

کلید های رمزگذاری AES-128

برای پیدا کردن کلید رمز گذاری لازم است که کد های برنامه آپدیتر ST-Link را بررسی کنیم ، معمولا تمام برنامه های از تابع Main شروع به اجرا می کنند و این می‌شود سرنخ ؛ با بررسی و تحیلی کد Java که بسیار هم به زبان C شبیه است و شاید این هم از اقبال ماست .

بعد از بررسی های طولانی ، بلاخره کلید مذکور را در کد پیدا کردیم ، و کلید چیزی نیست جز “best performance” ، اما از کجا میتوانیم مطمئن باشیم که عبارت درستی را به عنوان کلید انتخاب کرده اینم !

قبلا اشاره کردیم که احتمالا کدگذاری بر اساس AES-128 انجام شده است ، اگر با این روش رمزگذاری آشنایی داشته باشید ، حتما میدانید که 128 بیت کلید برای رمز گذاری لازم است ، که در واقع 128 بیت معادل است با 16 بایت ، و جالب این است که واژه “best performance” نیز 16 بایت یا 128 بیت است.

پیدا کردن کلید رمزگذاری پروگرامر ST-Link

و البته تنها یک راه برای اطمینان کامل وجود دارد ، و آن هم دکد کردن فایل رمز گذاری شده است ، برای این کار لازم است از ابزار دکدر AES-128 لازم دارید. برای انجام این کار میتونید از ابزار ( Sisoog_ST-Link_HackTools.7z (50 دانلود ها) )  استفاده کنید.

این ابزار با استفاده از جاوا نوشته شده است که هم برای کد کردن و هم برای دکد کردن میتوان از آن استفاده کرد. برای دکد کردن به صورت زیر از آن استفاده خواهیم کرد.

بعد از رمزگشایی فایل مروبط به فریمور پروگرامر ST-Link فایل مذکور را با استفاده از روش ذکر شده در مقاله دوم جهت تشخیص این که فایل مذکور فایل اجرایی یک پردازنده است بررسی می کنیم . بله خوشیختانه همه چیز درست است.

روش دیگری که میتوانیم برای اطمینان بیشتر استفاده کنیم این است که فایل فریمور دکد شده را با استفاده از یک ویرایشگر باینری باز کنیم ، معمولا فایل های فریمور حاوی رشته هایی برای نشان دادن خطا به کاربر هستند که در فریمور به صورت رشته ذخیره می شوند ، اگر فایل را درست دکد کرده باشیم ، باید چنین رشته هایی در درون فریمور وجود داشته باشد.

محتوای فریمور ST-Link

 

پروگرامر ST-Link به جهان سلام کن !

بعد از کشف نوع و کلید رمز گذاری و همچنین محل قرارگیری برنامه در حافظه (استفاده از آدرس وکتور در فریمور (0x8004000) ) قصد داریم برنامه ای بنویسیم که با استفاده از پایه PA5 یک LED را چشمک زن کنیم. پایه SWD روی این پایه تعریف شده است.

اولین اقدام تنظیم لینکر است که با توجه به آدرس وکتور و مقدار RAM میکروکنترلر به صورت زیر تعریف می شود

و اما برنامه اصلی هم به صورت زیر خواهد بود

بعد از کامپایل ، یک فایل bin خواهیم داشت که باید قبل از انتقال به پروگرامر St-Link رمزگذای شود. برای رمزگذاری دستور زیر استفاده می کنیم :

بعد از کدکردن با کیلد مروبطه ، فایل جدید را درون برنامه جاوا بروز رسانی می کنیم و ST-Link را با اسنفاده از آن آپدیت می کنیم.

آپدیت پروگرامر ST-Link برد دیسکاوری

 

تکمیل فرایند هک پروگرامر ST-Link

تا اینجا از هک پروگرامر توانستیم قفل های موجود در نرم افزار را بشکنیم و برنامه دلخواه خود را بر روی سخت افزار آپدیت کنیم ! اما برای این که بتوانیم یک فریمور کاملا کلون بسازیم نیاز است که علاوه بر داشتن کد برنامه ، کد بوت لودر را نیز داشته باشیم . برای به دست آوردن کد بوت لودر به سادگی برنامه ای بنویسید که حافظه فلش میکروکنترلر را بخواند و داده ها را بر روی پورت سریال ارسال کند. به همین سادگی فرایند های قبل را در کامپایل کد کردن برنامه و آپدیت بر روی پروگرامر ST-Link اجرا کنید ، به محض روشن شد ، برنامه شروع به ارسال داده های (فایل باینری) بوت لودر خواهد کرد. به همین سادگی فرایند هک پروگرامر St-Link را کامل می کنیم.

نکته مهمی که همیشه در تولید یک محصول باید مورد توجه قرار دهید نکات امنیتی در خصوص هک شدن ، کپی شدن ، و… است؛ و این مسیر نمی شود مگر با تجربه و دقت در نکات امنیتی

نوشته های مشابه

8 دیدگاه در “هک پروگرامر ST-Link: شکسن رمز و آپدیت برنامه

  1. احسان گفت:

    سلام
    خیلی خیلی ممنون از این که پیگیر مشکل من هستید
    یه دونه پروگمر آنبورد stm32f429zit هست

    1. زئوس Zeus زئوس Zeus گفت:

      بله خواهش میکنم ، بررسی میکنم

  2. احسان گفت:

    سلام ببخشید این سوال رو اینجا مینوسیم
    من یه stm32f429i discovery دارم که متاسفانه در یک آپدیت پورت سریال مجازی که پروگرامرش میسازه واسه ارتباط یوزارت از کار افتاده یعنی تو برنامه آپدیتر خود st نیست راه حلی داره که درست بشه بتونم فرمور رو درست کنم که پورت سریال مجازی روی پروگرامر بودر دوباره فعال بشه
    ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز خواهش میکنم ، احتمالا راهی وجود داره برای این خطایی که اتفاق افتاده ، قطعا شما بردتون رو با یک ورژن اشتباه بروز کردید
      امکان درست کردنش از طریق هک وجود داره ولی بعید می دونم خود شرکت ST راهی براش نداشته باشه ، یک بار سعی کنید با استفاده از آپدیتر خود شرکت آپدیت کنید ببینید مشکل حل میشه یا نه !

      1. احسان گفت:

        سلام
        آپدیت کردم با برنامه خود st الان به روزترین برنامه روش هست ولی متاسفان پورت کام رو نداره

        1. زئوس Zeus زئوس Zeus گفت:

          سلام
          احتمالا قسمتی که نوع برد رو هم مشخص میکنه پاک شده – مدل بردتون چی بود ؟

          1. احسان گفت:

            سلام
            discovery stm32f429zi

          2. زئوس Zeus زئوس Zeus گفت:

            سلام دوست عزیز
            متاسفانه با سرچ هایی که انجام دادم به نتیجه ای نرسیدم و هیچ راهکاری برای حل این مشکل از سوی شرکت ST ارائه نشده ، به نظرم بهترین کار اینه که توی فروم های پشتیبانی ST مشکل رو مطرح کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *