سلام خدمت همه مخاطبین عزیز سیسوگ!
همونطور که همه تون احتمالا مطلع هستید چند سالی هست که موضوع اینترنت اشیا در دنیا با جدیت کامل دنبال میشه و شرکت های بزرگی هم برای اینکه از این بازار بزرگ سهمی داشته باشند وارد این حوزه شدند. مساله ای که در این بین مورد غفلت قرار گرفته و یا در خوش بینانه ترین حالت کمتر بهش توجه شده امنیت این دستگاه ها چه در بعد نرم افزاری و چه در بعد سخت افزاری هستش.
در این سری از مقالات تصمیم داریم یکی از دستگاه هایی که احتمالا همه مون در خونه ازش استفاده میکنیم رو از منظر امنیتی بررسی کنیم و ببینیم آیا امکان داره اطلاعات داخلی این دستگاه که شرکت سازنده در اختیارمون قرار نداده رو به نحوی استخراج کنیم یا خیر! در ادامه و بعد از استخراج فریمور دستگاه سعی خواهیم کرد تا فایل سیستم دستگاه رو به دست بیاریم و از اون طریق فایل های باینری موجود در برد که برای مقاصد مختلف مورد استفاده قرار میگیرند رو مشخص کنیم.
در ادامه فرایند لاگین در رابط سریال دستگاه رو با تحلیل این فایل های باینری مشخص خواهیم کرد و راهی برای دور زدن این فرایند و دسترسی root بدون نیاز به پسورد به دست خواهیم آورد. در ادامه سعی خواهیم کرد با کمک Buildroot ایمیج مشابه با فریمور دستگاه رو تولید کنیم و یک برنامه دلخواه رو برای این دستگاه با کمک زنجیره ابزار ایجاد شده کامپایل کنیم. آخرین مرحله کار ما افزودن این برنامه دلخواه به ایمیج تولیدی و اجرای اون ایمیج روی دستگاه خواهد بود.
البته در این مرحله ایمیج به صورت موقت روی دستگاه اجرا خواهد شد و پس از ریبوت دستگاه، مجددا فریمور کارخونه مدیریت دستگاه رو برعهده خواهد گرفت و از این بابت دستگاه دچار مشکلی نخواهد شد.
قبل از شروع و طبق عادت مرسوم تو این سبک آموزش ها باید خدمتتون عرض کنم این سری از مقالات صرفا با مقاصد آموزشی نوشته شده و لطفا برای نفوذ به سیستم هایی که مالکیتش رو ندارید از این آموزش استفاده نکنید. در غیر اینصورت عواقب و مسئولیت هاش تماما متوجه خودتون خواهد بود.
دستگاهی که ما برای این پژوهش انتخاب کردیم مدل TK-2510 از سری مودم های TD-LTE شرکت ایرانسل هستش که تصویر این مودم رو میبینید.
به عنوان اولین قدم لازم هست تا حد ممکن راجع به این مدل از مودم ها اطلاعات جمع آوری کنیم. به عبارت دقیقتر اولین مرحله در تست نفوذ سخت افزار Information Gathering خواهد بود. پیش از ادامه توجه داشته باشید که یک قاعده کلی در زمینه تست نفوذ وجود داره که لازم نیست برای دستیابی به یک هدف الزاما راه های سخت رو انتخاب کنیم و اگر اون هدف با پیمودن یک مسیر ساده تر قابل دستیابی باشه ما اون مسیر رو انتخاب خواهیم کرد.
متاسفانه با توجه به اینکه شرکت های داخلی اطلاعات فنی کاملی از محصولات خودشون در اختیار کاربر قرار نمیدن پس بالاجبار باید محافظ مودم رو باز کنیم تا شاید از روی برد الکترونیکی مودم بتونیم اطلاعاتی به دست بیاریم. نکته مهمی که باید تو این مرحله بهش توجه کنیم اینه که قبل از اقدام برای باز کردن محافظ حتما یک ویدئوی مربوط به باز کردن این دستگاه رو تو یوتیوب یا آپارات ببینید.
این مساله از جنبه های مختلفی اهمیت داره(مثلا در برخی دستگاه هایی که سازنده میخواد اطلاعات داخلی دستگاه کاملا محرمانه باقی بمونه از ساز و کارهایی استفاده میکنند که در صورت باز شدن محافظ دستگاه، حافظه داخلی دستگاه به طور کامل پاک میشه و عملا دستگاه غیرقابل استفاده خواهد بود) ولی مهمترین جنبه پیشگیری از آسیب دیدن محافظ مودم هستش.
در این موردی که ما بررسی میکنیم چون محصول بین المللی نیست بعید هستش داخل یوتیوب چیز خاصی پیدا بشه ولی در مورد محصولاتی که در کل دنیا به فروش میرسند کافی هست عبارت teardown رو با اسم اون دستگاه جستجو کنید تا ویدئوی مورد نظر رو پیدا کنید. بالاخره با باز کردن این مودم برد زیر رو داخل حفاظ مشاهده خواهیم کرد.
قسمت پشت برد هم به صورت زیر هست :
همونطور که بر روی تصاویر مشاهده میشه برد از سه بخش که با شیلدهای فلزی محافظت میشه تشکیل شده و تنها یک تراشه بر روی برد قرار داره که با جستجوی پارت نامبر متوجه میشیم که حافظه فلش از نوع NAND و با ظرفیت 128MB هستش. از اونجایی که تصمیم نداشتم برد آسیب ببینه و خب خودم هم لحیمکاریم خوب نیست(!) به همین خاطر از خیر باز کردن شیلدها و بررسی تراشه های موجود زیر این لایه های محافظتی گذشتم و امیدوارم بتونم تو مراحل بعدی اطلاعاتی که مورد نیازم هست رو به صورت نرم افزاری به دست بیارم.
سایر بخش های این برد توضیح خاصی ندارند و برای هدف ما هم چندان مهم نیستند به جز یک بخش که بسیار حائز اهمیت هست. معمولا در فرایند خط تولید مرسوم هست که برنامه نویسی بردها پس از مونتاژ قطعات الکترونیکی انجام بشه و همچنین به منظور انجام یک سری تست های موردنیاز، تعدادی Test Point هم بر روی برد در نظر گرفته میشه.
با توجه به این موارد روی برد باید دنبال تعدادی پین در کنار هم و یا تعدادی pad که در قسمت های معینی قرار گرفته اند باشیم که در گوشه برد ردیف پین های مدنظرمون رو پیدا میکنیم و با لحیم کردن یک پین هدر امکان دسترسی به این پین ها رو فراهم میکنیم.
خب تا این مرحله تونستیم یه دریچه برای ارتباط با برد پیدا کنیم. با توجه به اینکه هیچ شماتیکی از این برد در دسترس نیست(حداقل من چیزی نتونستم پیدا کنم!) پس لازمه به نحوی ترتیب این پینها و اینکه هرکدوم چه وظیفه ای دارند رو متوجه بشیم.
راهکار کلی در این مواقع استفاده از ابزارهایی نظیر Logic Analyzer یا Jtagulator هست ولی در مورد این برد با کمی دقت میتونیم متوجه بشیم که تنها دو پین زمین و VCC روی برد نامگذاری شدند و بین این دو پین هم دقیقا دو پین دیگه قرار داره که عملکردشون مشخص نیست.
خب با کمی بررسی به سادگی میشه حدس زد این ترکیب چهارتایی همون ترکیب ارتباط سریال هستش که دنبالش میگردیم. به عبارت دیگه اون دو پین احتمالا پین های TX و RX هستند که با اتصال یک مبدل USB به سریال به این پین ها، این حدس تایید میشه و در نتیجه ما تونستیم اتصالات سخت افزاری مربوط به رابط سریال برد رو پیدا کنیم. سوال بعدی که باید پاسخ بدیم اینه که ارتباط سریال این برد با چه نرخ بیتی کار میکنه؟
مجددا راهکار مرسوم استفاده از لاجیک آنالایزر و محاسبه فاصله زمانی بین ارسال های مختلف هست که این عدد رو به دست خواهد داد ولی با کمی بررسی پردازنده های مشابه که اجرای سیستم عامل ها رو پشتیبانی میکنند میشه حدس زد که این ارتباط با نرخ 115200 در حال انجام هستش که مجددا با تست این عدد صحت این حدس تایید میشه.
خب تا این مرحله موارد لازم برای ایجاد یک ارتباط سریال بین برد و کامپیوتر رو مشخص کردیم و حالا نوبت به استفاده از ترمینال برای برقرار این ارتباط هست. اگر روی ویندوز هستید میتونید از نرم افزار Putty استفاده کنید و اگر هم با لینوکس کار میکنید که خب انتخابهای متعددی خواهید داشت که من از ابزار Picocom استفاده میکنم.
پس از اتصال برد به کامپیوتر و اجرای نرم افزار ترمینال نوبت به اتصال تغذیه برد میرسه که با انجام این کار لاگهای برد حین بوت شدن سیستم عامل رو به صورت زیر مشاهده خواهید کرد.
همونطور که از این تصویر که تنها بخشی از لاگ های دریافتی هست مشخصه حدس ما در مورد نوع و ظرفیت حافظه فلش برد درست بوده. از طرفی این برد از یک پردازنده Ralink استفاده میکنه که با فرکانس 700 MHz کار میکنه. نکته مهم دیگه استفاده این برد از بوت لودر معروفی با عنوان U-Boot هست که در اکثر بردهایی که فرایند بوت اهمیت بالایی داره از این بوت لودر استفاده میشه.
در ادامه کرنل در حافظه لود میشه و پس از اجرای یک سری اسکریپت مختلف، در نهایت شل مربوط به لاگین نمایش داده میشه. با توجه به اینکه در حال حاضر ما هیچگونه اطلاعاتی از یوزرنیم و پسورد این برد نداریم بنابراین استفاده از این شل ممکن نخواهد بود ولی حداقل میتونیم مطمئن باشیم که ساختار نرم افزار مودم به نحوی هست که راه ارتباطی برای کاربر از طریق ارتباط سریال رو فراهم کرده.
دقیقا مشابه زمانی که شما پسورد سیستمتون رو گم میکنید و از تنظیمات بوت لودر کمک میگیرید، اینجا هم باید یک مرحله به عقب برگردیم و قبل از لود شدن کرنل دنبال راهکار برای ورود به سیستم باشیم. بله دقیقا از طریق خود بوت لودر!
تو تصویر قبلی مشخص بود که بوت لودر یک منو در اختیار ما قرار میده که پس از یه مدت بسیار کوتاه یکی از گزینه های این منو که لود کردن کرنل از حافظه فلش هست به صورت پیشفرض انتخاب میشه. کافیه ما تو این مدت کوتاه یک گزینه دیگه رو انتخاب کنیم تا کرنل لود نشه و ما بتونیم همچنان در منوی بوت لودر حضور داشته باشیم.
برای این کار گزینه 4 که برای ورود به رابط کاربری بوت لودر هست گزینه مناسبی محسوب میشه پس همین گزینه رو انتخاب میکنیم(توجه کنید که پس از روشن شدن مودم فرصت بسیار کمی برای فشردن دکمه 4 خواهید داشت!)
در این مرحله ما تونستیم به رابط کاربری بوت لودر دسترسی پیدا کنیم و با کمک دستور help یک سری از دستورات قابل اجرا در این محیط رو مشاهده کنیم.
نکته جالب توجه در رابط کاربری بوت لودر نام تراشه ای هستش که این بوت لودر رو اجرا میکنه که در واقع پردازنده اصلی برد ما هست. بنابراین بدون باز کردن شیلد فلزی تونستیم نام پردازنده مورد استفاده و سایر ویژگی های مرتبط بهش رو تنها از طریق لاگ های دریافتی از خود برد مشخص کنیم.
در ادامه و در قسمت بعدی با کمک این رابط کاربری که به دست آوردیم تلاش خواهیم کرد تا محتوای حافظه فلش که شامل بوت لودر، کرنل، RootFS و یک سری بخش های دیگه هست رو استخراج کنیم و از طریق این داده ها و با کمک یک سری ابزارها، به ساختار درختی فایلها در حافظه این دستگاه دسترسی پیدا کنیم. باهامون همراه باشید که کلی کارای جذاب رو در پیش خواهیم داشت!
سلام از چه ماژولی برا ارتباط استفاده کردید ؟ منظورم ماژول uart هست . اگر در سایت موجود دارید لینک بدید تا تهیه کنیم .
فکر میکنم شما میتونید از ماژول سریالی استفاده کنید
ما معمولا از cp2102استفاده میکنیم
من همه ی این مودم ها را بدون اینکه uart بزنم نرم افزاری آنلاک میکنم به صورت ریموت حتی !!!!!
https://t.me/modem_unlocking_antenna
دقیقا نوشتن که ساده ترین راه در صورتی که یکی از راه های پیچیده و سخت همین مسیر هست و خیلی راحتر از این حرفا میشه قضیه رو حل کرد که نمیشه نام برد شاید کامنتم منتشر نشه
با سلام
بله کاملا صحیح میفرمایید و برای انجام اینکار راه های بسیار ساده تری وجود دارد از جمله اینکه مودم را به یک متخصص سپرده و شما با پرداخت حق الزحمه ایشان مودم خود را آنلاک نمایید. اما در این پست ها هدف آموزش همان تخصصی است که آن متخصص به آن مجهز است. باعث افتخار است اگر راهبرد فنی ساده تری برای اجرای این مسیر میشناسید با بنده به اشتراک بگذارید و یا با انتشار مطلبی آموزشی به توسعه این دانش کمک نمایید.
با احترام
سلام و عرض ادب
ضمن تشکر از شما توجه شما رو به دو مساله جلب میکنم. نخست اینکه هدف از انتشار این مطالب توسعه دانش امنیت سخت افزار در سطح جامعه است تا این حوزه از حالت تخیلی خارج شود و افرادی که دانش کمی در این زمینه دارند با مطالعه این دست مطالب بتوانند فرایندهایی که برای انجام یک تست نفوذ صورت میگیرد را به درستی درک کنند. در غیر این صورت در بسیاری موارد تنها به ذکر یک سری دستورات اجرایی اکتفا میشود و این مساله برای خواننده همچنان غامض باقی میماند. بنده کانال شما را بررسی کردم ولی متاسفانه موردی در زمینه آموزش نحوه عملکرد نرم افزاری که فرموده بودید پیدا نکردم. پیشنهاد میکنم شما هم با انتشار روش مورد استفاده خود به توسعه جامعه الکترونیک فارسی زبانان کمک نمایید.
با احترام
سلام ، مفید بود ، ادامه دهید 🙂
اتفاقا تو فکرش بودم. خیلی هم عالی. مشتاقانه منتظر قسمت های بعدی هستم.
همچنین آیا امکانش هست Logic Analyzer که در بالا اشاره کردید معرفی نید و طرز استفاده ی آن را بیان کنید و چگونه تهیه اش کنیم . ممنون
با سلام
برای این مورد مطالب بسیار ارزشمندی به زبان فارسی منتشر شده اند که میتوانید از آنها استفاده بفرمایید.
با احترام
سلام میشه اسم ماژولی که uart از مودم گرفتید هم بنویسید
درود بر شما
منتظر قسمت های بعدی هستیم.
سلام و درود
بسیار عالی، مطالب توی این سبک بسیار جذابه و کمک کننده
خداقوت
عالی!
بی صبرانه منتظرم.
چون چند وقت پیش تلاش کردم همین راه رو روی یه برد دیگه برم و وسطاش گیر کردم.
ممنون که به اشتراک میگذارید.
ایرانی ها استاد مهندسی معکوسن 🙂
ایول، یه مطلب خوب و مفید.
اگه بشه سیمکارتای ISPهای دیگه رو هم توش انداخت و ازش استفاده کرد عالی میشه.
بیصبرانه منتظر قسمت بعدی هستیم.