مقدمه
قراره در چندین پست آینده روشهای نفوذ به کارتهای Mifare که از پروتکل crypto 1 استفاده میکنند را مشخصا تفسیر نماییم. این بررسی و نفوذ بهعلت اینکه اکثر کارتهای پرداخت درونشهری و اکثر شهرهای ایران مثل کارت مترو تهران، اتوبوس مشهد، اتوبوسرانی شیراز، اصفهان کارت و… از این سیستم استفاده میکنند مهم و حیاتی میشه. بههمینعلت چندمورد را در ابتدای کار مشخصا ذکر میکنیم تا جلوی هرگونه سوءاستفاده یا سوءبرداشت را بگیریم. به عنوان یک مرجع متنباز فارسی در حوزهی الکترونیک وظیفهی خود میدونیم بحث امنیت در حوزههای مختلف الکترونیک را بررسی و هشدارهای لازم را بدهیم. این هشدارها وقتی اهمیت پیدا میکنه که میبنیم مثلا درهمینمورد کارت Mifare هماکنون، هیچ هشدار و یا مقاله علمی بهصورت فارسی وجود نداره و خدای نکرده درصورت عدم ایجاد تدابیر امنیتی میتونه ضررهای بسیارزیادی به شرکتهای خصوصی و دولتی وارد کنه. البته مدت زمان زیادی هست که این باگ در دنیای الکترونیک منتشر گردیده و بهتر است مقدماتلازم جهت آگاهی و مقابله با ان در ساختار شرکتهای قرارگرفته در این حوزه قرارگیرد. این هشدار دادهمیشه تا روالهای افرادی که قراره از چنین سیستمهایی استفادهکنند(در فاز طراحی هستند) تصحیح پیدا کنه و همچنین افرادی که از این سیستمها استفاده میکنند حداقل موارد امنیتی برای جلوگیریاز سوءاستفاده را مهیا سازند. لازمبهذکر هست که سوءاستفاده از کارتهای پرداختشهری مبتنیبر Mifare به چنددلیل انجامنشدنی هست که در ادامه خدمتتون میگم:
- حتی اگر کارت را هکنمایید اطلاعات قرار داده شده داخل کارت غالبا بهصورت خاصی چیده یا رمزنگاری شدهاند که پیداکردن الگوریتمهای اون بسیارسخت و گاها غیرممکن است.
- تاجاییکه بنده اطلاعدارم شرکتهای ارائهدهنده خدمات پرداخت توسط کارتهای Mifare در تهران و یا بقیه شهرها سعی میکنند بصورت انلاین کلیه تراکنشها را مدیریت کنند بهعبارتی اگر شما سعیکنید هرنوع سوءاستفادهای کنید درمدتکوتاهی کارت شما شناسایی میشه و میتوانند ضمن غیرفعالکردن کارت موردنظر دارنده کارت را پیگیری نمایند.
- این کارهم خلاف شرع و قانون هست و میتونه تبعاتزیادی برای شما داشتهباشه.
هک کارت Mifare
کارتهای مترو و اتوبوس ،قطعا از این کارتها استفاده کردهاید یا حداقل یکبار هم که شده نام آنها را شنیدهاید بااستفادهاز کارت مترو یا کارت اتوبوس بهسادگی میتوان پرداخت الکترونیکی بلیط را انجامداد و با حذف بلیطهای کاغذی، اولین گام را برای تحقق رویای شهر الکترونیک برداشت؛ خوشبختانه هرچند دیر ولی این پروسه در ایران اجرایی شد و درحالحاضر مورد بهرهبرداری قرارگرفتهاست، بهشخصه این پروژه را یک پروژه موفقی میدانم و باعث تعجبم میشه که چرا این روند رو به رشد نگذاشت و در باقی حوزهها ورود نکرد تا کمکم شاهد رشد و پیشرفت هرچه بیشتر در این حوزه باشیم البته ظاهرا جدیدا با معرفی و رونماییاز تکنولوژی NFC گامهای مثبتی در این حوزه برداشتهشدهاست؛ انگار از بحثاصلی فاصله گرفتیم، همیشه و همهجا باید موارد امنیتی را درنظرگرفت مخصوصا در حوزههای تکنولوژی که از حساسیت بالایی برخوردار هستند و بحثهای مالی درمیان است درغیر اینصورت زمینه برای نفوذ و هک سیستم مهیا میشود؛ این جمله رو قبلا هم گفتم که فکر میکنم الزامی باشه که بهش توجه و فکر کنید:
صرف استفادهاز گاوصندوق برای محافظتاز داراییها لزوما تامین امنیت نیست، آن هم وقتی که کلید آن را بالای گاوصندوق می گذاریم .
اولین سوالی که برای هر شخص استفادهکنندهای از یک سیستم پرداختی مطرح میشود قابلیت هکپذیربودن آن سیستم است؛ بهصورت خیلی ساده اغلب افراد یکبار هم که شده به هک کارت Mifare فکر کردهاند یا تمایلبه این کار دارند و سوال اغلب افراد این است که “کارت Mifare را می شود هک کرد؟” درپاسخ باید اضافهکنم هر نرمافزار یا سختافزاری دارای باگ است و تاکنون هیچ نرمافزار یا حتی سختافزار بدون باگی ساختهنشدهاست، البته سیستمهای با باگ کمتری هم وجود دارند که میتوان به OpenBSD یا RedMail اشارهکرد که تا مدتهای طولاتی بدون باگ بودهاند ولی نهایتا یک یا دو باگ جزئی در آنها کشفشدهاست که این نوید را بدهد که هیچ سیستم بدون باگی توسط بشر ساختهنشدهاست. پس کارتهای Mifare هم قابلهک هستند. در این سری مقالات سعیداریم به بررسی چالشهای امنیتی و درنهایت هک کارت Mifare بپردازیم، البته درنظر داشتهباشید که این مجموعه مقالات صرفا جهت آموزش ترفندهای امنیتی است و هرگونه سوءاستفاده از آن بر عهده بعثت الکترونیک نمیباشد. همیشه اولینگام در هک هرنوع سیستمی اعم از سختافزاری یا نرمافزاری آشناییبا نحوهی کار و تکنولوژی مورداستفاده آن است، برای این قسمت قصد داریم کارتهای Mifare که درواقع یکیاز بسترهای مورداستفاده در پرداخت با کارت است را معرفیکنیم پس با مت همراه باشید.
آشناییبا RFID
سیستمهای RFID انواع مختلفی دارند که با مرور زمان و احساس نیاز ایجادشده، بروزرسانی شدهاند. درواقع سیستمهای RFID برای شناسایی چیزها (اعم از جاندار و غیرجاندار) بااستفادهاز امواج رادیویی ساختهشدهاست، در انواع قدیمی سیستمهای شناسایی، مثل بارکد نیاز به رویت بارکد توسط بارکدخوان وجود داشت، اما در سیستم RFID نیازیبه رویت فیزیکی تگ نیست همینکه تگ در دید رادیویی دستگاه قرار داشتهباشد کافیاست.
اما تگ چیست ؟ در واقع تگ در سادهترین حالتممکن حاوی یک شناسه(مثلا عدد)منحصربهفرد است که آن تگ را از باقی تگها جدا میکند.
RFIDها در فرکانسهای کاری مختلفی تولید میشوند از فرکانسهای بسیار پایین مثل ۱۲۵کیلوهرتز تا فرکانسهای خیلیبالا در حدود حوزه فرکانسی UHF یعنی حدود ۹۲۸مگاهرتر. بستهبه کاربرد و محلاستفاده میتوان یکیاز فرکانسهای تعریفشده را استفادهکرد. معمولا در استفادههایی که تگ و قرائتگر فاصله نزدیکی دارند از فرکانسهای پایین یعنی ۱۲۵کیلوهرتز یا ۱۳.۵مگاهرتز استفاده میشود مثل تگهای روی کتاب یا محصولات یک فروشگاه یا کارتهای حضور و غیاب یا همین کارت مترو و در استفادههایی که نیازبه شناسایی از فاصلهدور وجودداشتهباشد از فرکانسهای بالا استفاده میشود نظیر پرداخت عوارض اتوبانها که با برچسبهای UHF انجام میشود. در سیستمهای RFID دو نمونه TAG وجود دارد، تگهای ساده که فقط حاوی یک شناسه یونیک هستند و اما دسته دوم تگهای حافظهدار هستند! مورد بحث این مقاله پیرامون این دسته از تگهاست، tagهایی که دارای حافظه هستند و صدالبته اینگونه تگها قادر هستند حجممشخصی داده را دخیره و در حافظه نگاهدارند که درنوع قبلی چنین امکانی وجود نداشت.
آشناییبا کارتهای استفادهشده در مترو و اتوبوس
کارتهای مترو و اتوبوس هم از تکنولوژی کارتهای (Tag) غیرتماسی استفاده میکنند و همانطورکه در قسمتقبل اشارهشد ازنوع تگهای حافظهدار میباشند. تگهای حافظهدار انواع گوناگونی دارند و از تکنولوژی رمزگذاری متفاوتی استفاده میکنند که امنیت را در سطحهای مختلفی تامین میکنند. کارتهای مورداستفاده در سیستم مترو و اتوبوسرانی همه از نوع کارتهای مایفر (mifare) کلاسیک هستند. کارتهای Mifare Classic دارای یک کیلوبایت حافظهی داخلی است که کاربر بااستفادهاز آن قادر است دادههای مشخصی را با نکات مشخصی در آن ذخیره و یا بازیابی کند. حافظهی کارتهای مایفر ازنوع Eeprom میباشند، ایننوع حافظه با قطعبرق دادهها را دهها سال درخود نگه میدارد بیآنکه به آن خدشهای وارد شود و البته قابلیت ویرایش دادهها را نیز دارد! البته هر کارت داری یک قسمت Rom هم هست که اطلاعات اصلی آن توسط شرکت در آن قسمت برنامهریزی شدهاست و بههیچعنوان قابل برنامهریزی توسط کاربر نیست، این قسمت که UID نامدارد درواقع دربردارنده یک عدد منحصربهفرد است که هر کارت را از دیگری مجزا میکند.
آشناییبا کارت Mifare
کارتهای مایفر انواع مختلفی دارند از اولین نوع کارت که همان نوع کلاسیک آن میباشد در سال ۱۹۹۴ توسط کمپانی NXP عرضهشد، بعداز آن بهبودهای امنیتی زیادی برروی آن اعمالشده و باعث ایجاد انواع دیگری نظری Mifare Pro یا Mifare Ultralight یا DESFire و… شدهاست که آخریننوع عرضهشده از این تکنولوژی مربوطبه سال ۲۰۱۸ است و Mifare 2GO نام دارد و از تکنولوژی NFC استفاده میکند. در این مقاله تمرکز ما برروی کارت Mifare Classic است که از این بهبعد صرفا آنرا کارت مایفر (mifare) میخوانیم! این کارت دارای یک کیلوبایت حافظهی داخلی است که اجازه ذخیرهسازی داده را به کاربر میدهد. دادهها بااستفادهاز الگوریتم رمزگذاری Crypto-1 کارت و ریدر ردوبدل میشود که امنیت حفظ آنها را تاحدود زیادی تامین میکند.
آشناییبا ساختار کارت Mifare
همانطورکه قبلا اشارهکردیم کارتهای مایفر دارای ۱کیلوبایت حافظهداخلی هستند! اما این حافظه به چهصورت مدیریت میشود؟ در این قسمت به بررسی ساختار درونی کارتهای Mifare میپردازیم و توضیح میدهیم که چطور از دادهها درمقابل هک محافظت میشود؟! در کارتهای مایفر حافظه به ۱۶قسمت تقسیم میشود هرقسمت را یک سکتور میخوانیم هر سکتور خود ۴بلوک رو تشکیل میدهد. باتوجهبه حافظه ۱کیلو بایتی کارتهای مایفر، هر سکتور ۶۴بایت دارد و هر بلوک ۱۶بایت! برای واضحترشدن مساله به تصویرزیر دقتکنید.
بلوک صفر از سکتور صفر در هر کارت دربردارنده اطلاعات شرکت تولیدکننده و شناسه کارت میباشد؛ این بلوک قابلنوشتن نیست و فقط کاربر قادربه خواندن است. ساختار ذخیرهسازی دادهها در این بلوک را در تصویرزیر میتوانید مشاهدهکنید.
همانطورکه در تصویرفوق هم مشخصشده برای کارتهای مایفر(Classic) ۷بایت نخست از بلوک صفرِ سکتورِ صفر مشخصکننده UID یا همان شناسه منحصربهفرد کارت است. این شناسه منحصربهفرد کاربردهای زیادی حتی در بحثهای امنیتی میتواند داشتهباشد که در مقالات آینده بدان خواهیم پرداخت. هر سکتور داری ۴بلاک است که بلاک آخر از هر سکتور جهت نگهداری کلیدهای امنیتی است، هر سکتور دو کلید امنیتی دارد که توسط بیتهای Access در سکتور آخر قابل برنامهریزی هستند، مثلا اینکه یک سکتور فقط قادربه خواندن اطلاعات باشد، یکی فقط بتواند بنویسید و… سه بلاک دیگر از سکتور به دادههای کاربر اختصاص دارد. برای جزییات بیشتر به تصویرزیر دقتکنید:
نکات امنیتی در کارتهای Mifare
همانطورکه قبلا توضیحدادیم هر سکتور دو کلید جداگانه برای دسترسیبه اطلاعات خود دارد؛ پس هر کارت در مجموع داری ۳۲کلید مجزا است، با این تکنیک اگر کلیدهای متفاوتی برای هر سکتور درنظر گرفتهشود درصورت پیداشدن هرکدام از کلیدها، دسترسیبه همان سکتور بسته وجود دارد؛ هر کلید شامل ۶بایت است یعنی هر کلید میتواند ۲۸۱۴۷۴۹۷۶۷۱۰۶۵۵ حالتمختلف داشتهباشد، اگر برای هک بخواهیم تمام حالتهای ممکن را چککنیم، و هر دههزار حالت را در یک ثانیه چککنیم باز برای پیداکردن یک کلید نیازبه ۲۸۱۴۷۴۹۷۶۷۱ثانیه زمان دارم یعنی معادل ۸۹۰سال زمان! آنهم فقط برای یک سکتور و میدانید که هر کارت ۳۲سکتور دارد.
در مقالهی بعدی بررسی خواهیمکرد که چطور داده بین کارت و ریدر ردوبدل میشود و آیا بااستفادهاز تکنیک اسنیف (Sniff) میشود به دادهها و کلید دسترسی پیداکرد یا خیر؛ با ما همراه باشید.
منبع:سیسوگ