امنیت و نفوذ, توصیه شده, دسته‌بندی نشده, سیسوگیها

هک کارت Mifare – قسمت اول

هک کارت مترو تهران

مقدمه:

قراره در چندین پست آینده روشهای نفوذ به کارتهای Mifare که از پروتکل crypto 1  استفاده میکنند را مشخصا تفسیر نماییم.

این بررسی  و نفوذ به علت اینکه اکثر کارتهای پرداخت درون شهری و اکثر شهرهای ایران مثل کارت مترو تهران, اتوبوس مشهد, اتوبوس رانی شیراز, اصفهان کارت و … از این سیستم استفاده میکنند مهم و حیاتی میشه.

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

سیسوگ به عنوان یک مرجع متن باز فارسی در حوزه الکترونیک وظیفه خود میدونه بحث امنیت در حوزه های مختلف الکترونیک را بررسی و هشدارهای لازم را بدهد.

این هشدارها وقتی اهمیت پیدا میکنه که میبنیم مثلا در همین مورد کارت Mifare هم اکنون هیچ هشدار و یا مقاله علمی بصورت فارسی وجود نداره و خدای نکرده در صورت عدم ایجاد تدابیر  امنیتی میتونه ضررهای بسیار زیادی به شرکتهای خصوصی و دولتی وارد کنه.

البته مدت زمان زیادی هست که این باگ در دنیای الکترونیک منتشر گردیده (و سیسوگ صرفا ترجمه و تحقیق در مورد این مورد را ) و بهتر است مقدمات لازم جهت اگاهی و مقابله با ان در ساختار شرکتهای قرار گرفته در این حوزه قرار گیرد.

این هشدار داده میشه تا روالهای افرادی که قراره از چنین سیستمهایی استفاده کنند(در فاز طراحی هستند) تصحیح پیدا کنه و همچنین افرادی که از این سیستمها استفاده میکنند حداقل موارد امنیتی برای جلوگیری از سوء استفاده را مهیا سازند.

لازم به ذکر هست که سوء استفاده از کارتهای پرداخت شهری مبتنی بر Mifare به چند دلیل انجام نشدنی هست که در زیر خدمتتون میگم:

اول اینکه حتی اگر کارت را هک نمایید اطلاعات قرار داده شده داخل کارت غالبا بصورت خاصی چیده یا رمز نگاری شده اند که پیدا کردن الگوریتمهای اون بسیار سخت و گاها غیرممکن است.

دوم اینکه تا جایی که بنده اطلاع دارم شرکتهای ارائه دهنده خدمات پرداخت توسط کارتهای Mifare  در تهران و یا بقیه شهرها سعی میکنند بصورت انلاین کلیه تراکنش ها را مدیریت کنند به عبارتی اگر شما سعی کنید هر نوع سوء استفاده ای کنید در مدت کوتاهی کارت شما شناسایی میشه و میتوانند ضمن غیرفعال کردن کارت مورد نظر دارنده کارت را پیگیری نمایند.

سومین موضوع اینکه این کارهم خلاف شرع و قانون میباشد و میتونه تبعات زیادی برای شما داشته باشه

همچنین برخلاف رسم همیشگی سیسوگ اینبار قسمتی از سورس را منتشر نمیکنه و در عوض سعی میکنه  بر روی موارد فنی تمرکز کنه و سعی کنه روشهای مقابله با اون را  ارائه بده.


هک کارت Mifare

کارت های مترو و اتوبوس ،قطعا از این کارت ها استفاده کرده اید یا حداقل یک بار هم که شده نام آنها را شنیده‌اید با استفاده از کارت مترو یا کارت اتوبوس به سادگی می توان پرداخت الکترونیکی بلیط را انجام داد و با حذف بلیط های کاغذی، اولین گام را برای تحقق رویای شهر الکترونیک برداشت ؛

خوشبختانه هرچند دیر ولی این پروسه در ایران اجرایی شد و در حال حاضر مورد بهره بردای قرار گرفته است ، به شخصه این پروژه را یک پروژه موفقی میدانم و باعث تعجب ام میشه که چرا این روند رو به رشد نگذاشت و در باقی حوزه ها ورود نکرد تا کم‌کم شاهد رشد و پیشرفت هرچه بیشتر در این حوزه باشیم البته ظاهرا جدیدا با معرفی و رونمایی از تکنولوژی NFC گام های مثبتی در این حوزه برداشته شده است ؛ انگار از بحث اصلی فاصله گرفتیم ، همیشه و همه جا باید موارد امنیتی را در نظر گرفت مخصوصا در حوزه های تکنولوژی که از حساسیت بالایی برخوردار هستند و بحث های مالی در میان است در غیر این صورت زمینه برای نفوذ و هک سیستم مهیا می‌شود؛ این جمله رو قبلا هم گفتم که فکر میکنم الزامی باشه که بهش توجه و فکر کنید:

صرف استفاده از گاوصندوق برای محافظت از دارایی‌ها لزوما تامین امنیت نیست ،آن هم  وقتی که کلید آن را بالای گاوصندوق می گذاریم . 

اولین سوالی که برای هر شخص استفاده کننده ای از یک سیستم پرداختی مطرح می‌شود قابلیت هک پذیر بودن آن سیستم است ؛ به صورت خیلی ساده اغلب افراد یک بار هم که شده به هک کارت Mifare فکر کرده اند یا تمایل به این کار دارند و سوال اغلب افراد این است که “کارت Mifare  را می شود هک کرد؟”

در پاسخ باید اضافه کنم هر نرم افزار یا سخت افزاری دارای باگ است و تا کنون هیچ نرم افزار یا حتی سخت افزار بدون باگی ساخته نشده است ، البته سیستم های با باگ کمتری هم وجود دارند که می توان به OpenBSD یا RedMail اشاره کرد که تا مدت های طولاتی بدون باگ بوده اند ولی نهایتا یک یا دو باگ جزیی در آنها کشف شده است که این نوید را بدهد که هیچ سیستم بدون باگی توسط بشر ساخته نشده است. پس کارت های Mifare هم قابل هک هستند.

در این سری مقالات سعی داریم به بررسی چالش های امنیتی و در نهایت هک کارت Mifare  بپردازیم ، البته در نظر داشته باشید که این مجموعه مقالات صرفا جهت آموزش ترفند های امنیتی است و هرگونه سوء استفاده از آن بر عهده سیسوگ نمی باشد.

همیشه اولین گام در هک هر نوع سیستمی اعم از سخت افزاری یا نرم افزاری آشنایی با نحوه کار و تکنولوژی مورد استفاده آن است ، برای این قسمت قصد داریم کارت های Mifare که در واقع یکی از بسترهای مورد استفاده در پرداخت با کارت است را معرفی کنیم پس با سیسوگ همراه باشید.

آشنایی با RFID

سیستم های RFID انواع مختلفی دارند که با مرور زمان و احساس نیاز ایجاد شده، بروز رسانی شده اند. در واقع سیستم های RFID برای شناسایی چیزها (اعم از جاندار و غیر جاندار) با استفاده از امواج رادیویی ساخته شده است، در انواع قدیمی سیستم های شناسایی ، مثل بارکرد نیاز به رؤیت بارکرد توسط بارکد خوان وجود داشت ، اما در سیستم RFID نیازی به روئیت فیزیکی تگ نیست همین که تگ در دید رادیویی دستگاه قرار داشته باشد کافی است. اما تگ چیست ؟ ، در واقع تگ در ساده ترین حالت ممکن حاوی یک شناسه (مثلا عدد) منحصر به فرد است که آن تگ را از باقی تگ ها جدا می‌کند.

 

RFID ها در فرکانس های کاری مختلفی تولید می شوند از فرکانس های بسیار پایین مثل 125 کیلوهرتز تا فرکانس های خیلی بالا در حدود حوزه فرکانسی UHF یعنی حدود 928 مگاهرتر. بسته به کاربرد و محل استفاده می توان یکی از فرکانس های تعریف شده را استفاده کرد. معمولا در استفاده هایی که تگ و قرائت گر فاصله نزدیکی دارند از فرکانس های پایین یعنی 125 کیلوهرتز یا 13.5 مگاهرتز استفاده می شود مثل تگ های روی کتاب یا محصولات یک فروشگاه یا کارت های حضور و غیاب یا همین کارت مترو و در استفاده هایی که نیاز به شناسایی از فاصله دور وجود داشته باشد از فرکانس های بالا استفاده می شود نظیر پرداخت عوارض اتوبان ها که با برچسب های UHF انجام می‌شود.

در سیستم های RFID دو نمونه TAG وجود دارد ، تگ های ساده که فقط حاوی یک شناسه یونیک هستند و اما دسته دوم تگ های حافظه دار هستند !

مورد بحث این مقاله پیرامون این دسته از تگ ها هست، tag هایی که دارای حافظه هستند و صد البته این گونه تگ ها قادر هستند حجم مشخصی داده را دخیره  و در حافظه نگاه دارند که در نوع قبلی چنین امکانی وجود نداشت.

آشنایی با کارت های استفاده شده در مترو و اتوبوس

کارت های مترو و اتوبوس هم از تکنولوژی کارت های (Tag) غیر تماسی استفاده می کنند و همانطور که در قسمت قبل اشاره شد از نوع تگ های حافظه دار می باشند. تگ های حافظه دار انواع گوناگونی دارند و از تکنولوژی رمزگذاری متفاوتی استفاده می کنند که امنیت را در سطح های مختلفی تامین می کنند.

کارت های مورد استفاده در سیستم مترو و اتوبوس رانی همه از نوع کارت های مایفر (mifare) کلاسیک هستند. کارت های Mifare Classic دارای یک کیلو بایت حافظه داخلی است که کاربر با استفاده از آن قادر است دادهای مشخصی را با نکات مشخصی در آن ذخیره و یا بازیابی کند.

حافظه کارت های مایفر از نوع Eeprom می باشند ، این نوع حافظه با قطع برق داده ها را ده ها سال در خود نگه می دارد بی آن که به آن خدشه ای وارد شود و البته قابلیت ویرایش داده ها را نیز دارد ! البته هر کارت داری یک قسمت Rom هم هست که اصلاعات اصلی آن توسط شرکت در آن قسمت برنامه ریزی شده است و به هیچ عنوان قابل برنامه ریزی توسط کاربر نیست ، این قسمت که UID نام دارد در واقع در بر دارنده یک عدد منحصر به فرد است که هر کارت را از دیگری مجزا می کند.

آشنایی با کارت Mifare

کارت های مایفر انواع مختلفی دارند از اولین نوع کارت که همان نوع کلاسیک آن می باشد در سال 1994 توسط کمپانی NXP عرضه شد ، بعد از آن بهبود های امنیتی زیادی بر روی آن اعمال شده و باعث ایجاد انواع دیگری نظری Mifare Pro یا Mifare Ultralight یا DESFire و… شده است که آخرین نوع عرضه شده از این تکنولوژی مربوط به سال 2018 است و Mifare 2GO نام دارد و از تکنولوژی NFC استفاده می کند. در این مقاله تمرکز ما بر روی کارت Mifare Classic است که از این به بعد صرفا آن را کارت مایفر (mifare) می خوانیم !

این کارت داری یک کیلو بایت حافظه داخلی است که اجازه ذخیره سازی داده را به کاربر می دهد. داده ها با استفاده از الگوریتم رمزگذاری Crypto-1 کارت و ریدر رد و بدل می شود که امنیت حفظ آنها را تا حدود زیادی تامین می کند.

آشنایی با ساختار کارت Mifare

همانطور که قبلا اشاره کردیم کارت های مایفر دارای 1 کیلو بایت حافظه داخلی هستند ! اما این حافظه به چه صورت مدیریت می شود ؟

در این قسمت به بررسی ساختار درونی کارت های Mifare می پردازیم و توضیح می دهیم که چطور از داده ها در مقابل هک محافظت می شود. در کارت های مایفر حافظه به 16 قسمت تقسیم می شود هر قسمت را یک سکتور می‌خوانیم هر سکتور خود 4 بلوک رو تشکیل میدهد. با توجه به حافظه یک کیلو بایتی کارت های مایفر ، هر سکتور 64 بایت دارد و هر بلوک 16 بایت ! برای واضح تر شدن مساله به تصویر زیر دقت کنید.

 

بلوک صفر از سکتور صفر در هر کارت در بر دارنده اطلاعات شرکت تولید کننده و شناسه کارت می باشد ؛ این بلوک قابل نوشتن نیست و فقط کاربر قادر به خواندن است. ساختار ذخیره سازی داده ها در این بلوک را در تصویر زیر می توانید مشاهده کنید.

همانطور که در تصویر فوق هم مشخص شده برای کارت های مایفر (Classic) هفت بایت نخست از بلوک صفرِ سکتورِ صفر مشخص کننده UID یا همان شناسه منحصر به فرد کارت است.

این شناسه منحصر به فرد کاربرد های زیادی حتی در بحث های امنیتی می تواند داشته باشد که در مقالات آینده بدان خواهیم پرداخت.

هر سکتور داری 4 بلاک است که بلاک آخر از هر سکتور جهت نگهداری کلید های امنیتی است ، هر سکتور دو کلید امنیتی دارد که توسط بیت های Access در سکتور آخر قابل برنامه ریزی هستند ، مثلا این که یک سکتور فقط قادر به خواندن اطلاعات باشد ، یکی فقط بتواند بنویسید ، و … ؛ سه بلاک دیگر از سکتور به داده های کاربر اختصاص دارد. برای جزییات بیشتر به تصویر زیر دقت کنید:

نکات امنیتی در کارت های Mifare

همانطور که قبلا توضیح دادیم هر سکتور دو کلید جداگانه برای دسترسی به اطلاعات خود دارد ؛ پس هر کارت در مجموع داری 32 کلید مجزا است ، با این تکنیک اگر کلیدهای متفاوتی برای هر سکتور در نظر گرفته شود در صورت پیدا شدن هر کدام از کلید ها ، دسترسی به همان سکتور بسته وجود دارد؛ هر کلید شامل 6 بایت است یعنی هر کلید می تواند 281474976710655 حالت مختلف داشته باشد ، اگر برای هک بخواهیم تمام حالت های ممکن را چک کنیم ، و هر ده هزار حالت را در یک ثانیه چک کنیم باز برای پیدا کردن یک کلید نیاز به 28147497671 ثانیه زمان دارم یعنی معادل 890 سال زمان ! آن هم فقط برای یک سکتور و میدانید که هر کارت 32 سکتور دارد.

در مقاله بعدی بررسی خواهیم کرد که چطور داده بین کارت و ریدر رد و بدل می شود و آیا با استفاده از تکنیک اسنیف (Sniff) می شود به داده ها و کلید دسترسی پیدا کرد یا خیر ؛ با سیسوگ همراه باشید.

10 دیدگاه در “هک کارت Mifare – قسمت اول

  1. احسان گفت:

    سلام
    مقاله خیلی خوبی هست
    قسمت بعدی کی میاد ؟

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

      سلام دوست عزیز
      انشالله به زودی

  2. MHD گفت:

    اول اینکه حتی اگر کارت را هک نمایید اطلاعات قرار داده شده داخل کارت غالبا بصورت خاصی چیده یا رمز نگاری شده اند که پیدا کردن الگوریتمهای اون بسیار سخت و گاها غیرممکن است.

    سلام
    این مطلب صحیح نیست، در واقع بدلیل ضعفی که اشاره کردین امکان سو استفاده از کارتهای مایفر وجود داره و هیچ روشی برای جلوگیری از سو استفاده موجود نیست.روشهایی مثل بلک لیست هم که اشاره کردین تنها از تکرار سواستفاده (بدلیل آفلاین بودن تراکنشها )جلوگیری میکنند.
    البته این موضوع در مورد مایفرهای کلاسیکه نه نوع دسفایر یا پرو.
    ممنون بابت مطالب خوبتون ; )

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

      بله کاملا درسته ، مقاله به این نخواهد پرداخت که چطور ار اطلاعات کارت استفاده نمایید ، و البته خود دیتای موجود در کارت میتونه به هر روش دیگه ای رمز شده باشه که استفاده از اون رو غیر ممکن بکنه ! که البته اون هم لایه دیگری از امنیت است. فرض کنید خود دیتای موجود با الگوریتم AES رمزگذاری شده باشه یا با کلید وابسته به زمان رمز شده باشه و…. و هزاران راهکار دیگه که میشه برای تامین امنیت اطلاعات استفاد کرد.
      و البته ناگفته نماد که راه کار هایی وجود دارد که میشه باز امنیت را حتی در سطح سحت افزار افزایش داد !
      ولی در آخر امنیت یک مقوله مطلق نیست و همیشه راهکار های مختلفی برای دور زدن اون وجود خواهد داشت ؛

      1. MHD گفت:

        و البته خود دیتای موجود در کارت میتونه به هر روش دیگه ای رمز شده باشه که استفاده از اون رو غیر ممکن بکنه !
        عرضم اینه که با هیچ مدل رمزنگاری نمیشه سواستفاده از کارت رو غیر ممکن کرد.حتی با استفاده از aes , …
        استفاده از کلید وابسته به زمان برای این مورد (یک کیف پول آفلاین) هم فک میکنم بی معنی باشه !
        به همین دلیله که خود nxp تاکید داره که استفاده از مایفرهای کلاسیک در موارد تجاری کنار گذاشته بشه و محصولاتی مثل اویستر کارت و … مدتهاست به دسفایر کوچ کردند.

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

          بله دوست عزیز، فرمایش شما درست در نهایت با ندونستن ساختار دیتا میشه کارت رو کلون کرد ولی الان واقعا کدوم کیف پول آفلاین هست ؟ کارت مترو یا اتوبوس تا اونجایی که اطلاع دارم آنلاین هست و دیتا در نهایت به یه سرور ارسال میشه حالا اونجا چه پردازش هایی مبشه برای پیدا کردن تخلف ؛ اونو دقیقش رو اطلاع ندارم ولی میدونم چنین کاری رو انجام میدند.
          شاید هم فعلا هیچ بررسی روش انجام ندهند ولی اطلاع دارم که ساختارش وجود داره.

  3. V گفت:

    جالب بود
    ممنون

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

      خواهش میکنم دوست عزیز.

  4. Pofa گفت:

    سلام متن و موضوع جالبی بود. مشتاق قسمت‌های بعدیش هستم
    فقط لطفا متن رو یک بار دیگه چک کنید اشتباهات املایی و نگارشی زیادی داشت.
    با تشکر از شما

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

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

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

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