ProHoster > وبلاگ > اداره > معکوس کردن و هک کردن درایو HDD خارجی خود رمزگذاری شده Aigo. قسمت 1: تجزیه به قطعات
معکوس کردن و هک کردن درایو HDD خارجی خود رمزگذاری شده Aigo. قسمت 1: تجزیه به قطعات
معکوس کردن و هک کردن درایوهای خود رمزنگاری خارجی سرگرمی قدیمی من است. در گذشته این فرصت را داشتم که با مدل هایی مانند Zalman VE-400، Zalman ZM-SHE500، Zalman ZM-VE500 تمرین کنم. اخیراً یکی از همکاران نمایشگاه دیگری را برای من آورد: Patriot (Aigo) SK8671 که طبق یک طراحی معمولی ساخته شده است - یک نشانگر LCD و یک صفحه کلید برای وارد کردن کد پین. این چیزی است که از آن بیرون آمد…
دسترسی به داده های ذخیره شده روی دیسک، که ظاهراً رمزگذاری شده است، پس از وارد کردن کد پین انجام می شود. چند نکته مقدماتی در مورد این دستگاه:
برای تغییر کد پین، قبل از باز کردن قفل، باید F1 را فشار دهید.
کد پین باید شامل 6 تا 9 رقم باشد.
پس از 15 تلاش نادرست، دیسک پاک می شود.
2. معماری سخت افزار
ابتدا دستگاه را به قطعات تقسیم می کنیم تا بفهمیم از چه اجزایی تشکیل شده است. خسته کننده ترین کار باز کردن کیس است: تعداد زیادی پیچ میکروسکوپی و پلاستیک. با باز کردن کیس، موارد زیر را مشاهده می کنیم (به کانکتور پنج پینی که لحیم کردم توجه کنید):
2.1. برد اصلی
برد اصلی بسیار ساده است:
قابل توجه ترین قسمت های آن (از بالا به پایین ببینید):
کنترلر Jmicron JMS539 (مشخصات) برای USB-SATA (U1)؛
کانکتور USB 3 (J1).
درایو فلش SPI سیستم عامل JMS539 و برخی تنظیمات را ذخیره می کند.
2.2. برد نشانگر ال سی دی
هیچ چیز قابل توجهی روی برد LCD وجود ندارد.
فقط:
نشانگر LCD با منشاء ناشناخته (احتمالا با یک مجموعه فونت چینی)؛ با کنترل متوالی؛
کانکتور روبان برای صفحه کلید.
2.3. صفحه کلید
هنگام بررسی صفحهکلید، چیزها حالت جالبتری پیدا میکنند.
در اینجا، در قسمت پشت، ما یک کانکتور روبانی و همچنین یک میکروکنترلر Cypress CY8C21434 PSoC 1 را می بینیم (از این پس آن را به سادگی PSoC می نامیم).
CY8C21434 از مجموعه دستورالعمل M8C استفاده می کند (نگاه کنید به مستندات). در [صفحه محصول]((http://www.cypress.com/part/cy8c21434-24ltxi) نشان داده شده است که از فناوری پشتیبانی می کند CapSense (راه حل از Cypress، برای کیبوردهای خازنی). در اینجا می توانید کانکتور پنج پینی را که من لحیم کردم مشاهده کنید - این یک رویکرد استاندارد برای اتصال یک برنامه نویس خارجی از طریق رابط ISSP است.
2.4. به سیم ها نگاه می کند
بیایید بفهمیم چه چیزی در اینجا متصل است. برای انجام این کار، فقط سیم ها را با یک مولتی متر تست کنید:
توضیحات این نمودار که روی زانو کشیده شده است:
PSoC در مشخصات فنی توضیح داده شده است.
رابط بعدی، سمت راست، رابط ISSP است که به اراده سرنوشت، مطابق با آنچه در اینترنت در مورد آن نوشته شده است.
سمت راست ترین کانکتور ترمینال کانکتور روبان به صفحه کیبورد است.
مستطیل مشکی طرحی از کانکتور CN1 است که برای اتصال برد اصلی به برد LCD طراحی شده است. P11، P13 و P4 به پایه های PSoC 11، 13 و 4 روی برد LCD متصل می شوند.
3. توالی مراحل حمله
اکنون که می دانیم این درایو از چه اجزایی تشکیل شده است، باید: 1) مطمئن شویم که عملکرد اصلی رمزگذاری واقعاً وجود دارد. 2) چگونگی تولید/ذخیره کلیدهای رمزگذاری را بیابید. 3) پیدا کنید که کد پین دقیقاً کجا بررسی می شود.
برای انجام این کار مراحل زیر را انجام دادم:
اطلاعات را از درایو فلش SPI برداشت.
سعی کرد داده ها را از درایو فلش PSoC تخلیه کند.
تأیید کرد که ارتباط بین Cypress PSoC و JMS539 در واقع حاوی کلیدها است.
من مطمئن شدم که هنگام تغییر رمز عبور، هیچ چیز در درایو فلش SPI بازنویسی نمی شود.
برای تغییر سیستم عامل 8051 از JMS539 بسیار تنبل بود.
3.1. برداشتن اطلاعات از یک درایو فلش SPI
این روش بسیار ساده است:
پروب ها را به پایه های درایو فلش وصل کنید: CLK، MOSI، MISO و (اختیاری) EN.
ارتباطات "Sniff" با یک sniffer با استفاده از یک تحلیلگر منطقی (من استفاده کردم Saleae Logic Pro 16);
رمزگشایی پروتکل SPI و صادرات نتایج به CSV.
استفاده کنید decode_spi.rbبرای تجزیه نتایج و گرفتن روگرفت.
لطفاً توجه داشته باشید که این رویکرد بهویژه در مورد کنترلکننده JMS539 به خوبی کار میکند، زیرا این کنترلکننده تمام سیستمافزار را از درایو فلش در مرحله اولیه بارگیری میکند.
با برداشتن زباله از درایو فلش SPI، به این نتیجه رسیدم که تنها وظیفه آن ذخیره سیستم عامل دستگاه کنترل JMicron است که در میکروکنترلر 8051 تعبیه شده است. متأسفانه، برداشتن درایو فلش SPI بی فایده بود:
هنگامی که کد پین تغییر می کند، تخلیه فلش درایو یکسان باقی می ماند.
پس از مرحله اولیه سازی، دستگاه به درایو فلش SPI دسترسی ندارد.
3.2. استشمام کردن ارتباطات
این یک راه برای یافتن این است که کدام تراشه مسئول بررسی ارتباطات برای زمان/محتوای مورد علاقه است. همانطور که می دانیم، کنترلر USB-SATA از طریق کانکتور CN1 و دو روبان به LCD PSoC Cypress متصل می شود. بنابراین، ما پروب ها را به سه پایه مربوطه وصل می کنیم:
P4، ورودی/خروجی کلی؛
P11، I2C SCL;
P13، I2C SDA.
سپس تحلیلگر منطقی Saleae را راه اندازی می کنیم و روی صفحه کلید وارد می کنیم: "123456~". در نتیجه نمودار زیر را مشاهده می کنیم.
روی آن می توانیم سه کانال تبادل داده را ببینیم:
چندین انفجار کوتاه در کانال P4 وجود دارد.
در P11 و P13 - تبادل تقریباً مداوم داده.
با بزرگنمایی اولین اسپایک در کانال P4 (مستطیل آبی در شکل قبلی)، موارد زیر را مشاهده می کنیم:
در اینجا می توانید ببینید که در P4 تقریباً 70 میلی ثانیه یک سیگنال یکنواخت وجود دارد که در ابتدا به نظر من نقش یک سیگنال ساعت را بازی می کند. با این حال، پس از گذراندن مدتی برای بررسی حدس خود، متوجه شدم که این یک سیگنال ساعت نیست، بلکه یک جریان صوتی است که با فشار دادن کلیدها به توییتر خروجی میشود. بنابراین، این بخش از سیگنال خود حاوی اطلاعات مفیدی برای ما نیست. با این حال، می توان از آن به عنوان نشانگر برای دانستن زمانی که PSoC یک فشار کلید را ثبت می کند استفاده کرد.
با این حال، آخرین جریان صوتی P4 کمی متفاوت است: این صدا برای "PIN نامعتبر" است!
با بازگشت به نمودار ضربه زدن به کلید، با بزرگنمایی بر روی نمودار آخرین جریان صوتی (مستطیل آبی را دوباره ببینید)، دریافت می کنیم:
در اینجا سیگنال های یکنواخت را در P11 مشاهده می کنیم. بنابراین به نظر می رسد که این سیگنال ساعت است. و P13 داده است. به نحوه تغییر الگوی پس از پایان بوق توجه کنید. جالب است که ببینیم اینجا چه اتفاقی می افتد.
پروتکل هایی که با دو سیم کار می کنند معمولا SPI یا I2C هستند و مشخصات فنی Cypress بیان می کند که این پین ها با I2C مطابقت دارند که می بینیم در مورد ما صادق است:
چیپست USB-SATA دائماً از PSoC نظرسنجی می کند تا وضعیت کلید را بخواند که به طور پیش فرض "0" است. سپس با فشار دادن کلید "1" به "1" تغییر می کند. در صورت وارد کردن کد پین اشتباه، ارسال نهایی بلافاصله پس از فشار دادن "~" متفاوت است. با این حال، در حال حاضر من بررسی نکرده ام که واقعاً چه چیزی در آنجا منتقل می شود. اما من بعید می دانم که این یک کلید رمزگذاری باشد. به هر حال، بخش بعدی را ببینید تا متوجه شوید که چگونه سیستم عامل داخلی PSoC را حذف کردم.