ورود و ثبت نام

آموزش دورزدن Ssl Pinning در اپلیکیشن های فلاتر

خواندن این مطلب

5 دقیقه

زمان میبرد!

آموزش دورزدن Ssl Pinning در اپلیکیشن های فلاتر

 

سلام به همه دوستان عزیزم ، امیدوارم حالتون عالی باشه 🙂

 

همونطور که میدونید فلاتر (Flutter) این روزا خیلی طرفدار پیدا کرده و خیلی ها به سمت این فریمورک رفتن ، ما هم یکی پروژه هامون رو با فلاتر زدیم که براتون لینکش رو میزارم ببینید.

 

پروژه ابزار Malware Shield (برای دورزدن آنتی ویروس ها)

 

 

اگر تو بحث تست نفوذ اپلیکشن های اندروید کارکرده باشید این موضوع رو میدونید که خیلی از اپلیکیشن هایی که الان دارن استفاده میشن عمده ارتباطشون با سرور هست، پس مهمه که کسی که داره یک اپلیکیشن رو تست نفوذ میزنه بدونه چطوری میشه ارتباط یک اپلیکیشن رو با سرور شنود کرد و اگر مکانیزم امنیتی داره چطوری میشه اونو دور زد! (Bypass)

 

 

مکانیزم امنیتی SSL pinning چیست ؟

 

مکانیزم امنیتی SSL pinning برای این در اپلیکیشن ها استفاده  میشه که ما مطمن بشیم که اپلیکیشن ما فقط با سرور خودش ارتباط میگیره و این وسط ارتباط اپلیکیشن و سرور توسط شخصی شنود نمیشه ، اگر بخوام تخصصی تر بگم برای جلوگیری از حملات MITM (مرد میانی) در اپلیکیشن ها استفاده میشه ، در فلاتر (Flutter) برای پیاده سازی مکانیزم امنیتی SSL pinning میتونید از کتابخانه flutter_ssl_pinning استفاده کنید.

 

 

 

چطوری میشه مکانیزم امنیتی SSL pinning رو دور زد ؟

 

تا اینجا فهمیدیم که مکانیزم امنیتی SSL pinningدقیقا چه کاری انجام میده حالا سوال پیش میاد که اگر این مکانیزم روی اپلیکیشن فعال باشه (این مکانیزم امروزه روز خیلی استفاده میشه و روی تعداد زیادی از اپلیکیشن ها وجود داره) ما چطوری میتونیم دور بزنیم و اطلاعات بین اپلیکیشن و سرور رو شنود کنیم ؟! روش برای اینکار زیاده اما ما اینجا میخوایم این مکانیزم رو روی یک اپلیکیشنی که با فلاتر ساخته شده دور بزنیم (Bypass) پس اگر مثل من به این موضوع علاقه دارید با من همراه باشید.

 

 

 

دیدگاه درست در دنیای واقعی  :

 

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

 

 

 

برای شروع کار به چه چیزایی نیاز داریم ؟

 

برای انجام این سناریو ما یک شبیه ساز اندروید میخواهیم بین NOX و  Genymotion میتونید یکی رو انتخاب کنید ، و برای شنود درخواست ها هم نیاز به BurpSuite داریم ، من اینجا از یک اپلیکیشن فلاتر استفاده میکنم که تستی هست صرفا این اپلیکیشن درخواست HTTP و HTTPS میفرسته و روی این اپلیکیشن مکانیزم امنیتی SSL pinning فعال است.

 

 

بریم سراغ اجرا سناریو Bypass SSL pinning : 

 

برای درک بهتر موضوع در ابتدا من اپلیکیشنی که به عنوان تست میخواهیم ازش استفاده کنیم (لینک دانلود) رو اول میام و درخواست های HTTP که میفرسته رو شنود میکنم با استفاده از BurpSuite و همونطور که میبینید در تصویر زیر بدون هیچ مشکلی درخواست های HTTP برروی BurpSuite قابل دیدن است.

 

 

 

اما زمانی که به اپلیکیشن میگیم که درخواست HTTPS بفرسته از طریق دکمه نارنجی که تو تصویر میبینید ، به سمت BurpSuite هیچ اطلاعاتی ارسال نمیشه و این یعنی اینکه ما مکانیزم SSL pinningرو روی این اپلیکیشن داریم و باید سعی کنیم دوربزنیم این مکانیزم رو تا بتونیم درخواست های HTTPS رو هم روی BurpSuite ببینیم.

 

 

 

برای دورزدن مکانیزم امنیتی SSL pinning در اپلیکیشن های فلاتر ما از ابزار reflutter استفاده میکنیم این ابزار برای مهندسی معکوس اپ های فلاتر ازش استفاده میشه برای نصب reflutter میتونید از دستور زیر استفاده کنید

 

 

من چون از قبل نصب کرده بودم این پیغام اومد:) بعد از نصب reflutter کافیه دستور زیر رو بزنید

 

 

در تصویر فایل APK که به ابزار داده شده همون برنامه تست هست شما میتونید هر اپلیکیشنی رو به ابزار بدید، بعد از اجرای دستور ما گزینه 1 رو میزنیم چون میخواهیم درخواست ها رو شنود کنیم بعد از اون کافیه ای پی ابزار BurpSuite رو بهش بدید ( اگر روی سیستم خودتون BurpSuite هست میتونید 127.0.0.1 رو بزنید. و در آخر یک فایل APK جدید ابزار میسازه که ما باید از اون استفاده کنیم

 

 

این خروجی فایلی هست که ابزار reflutter برای ما میسازه و ما باید اینو نصب کنیم اما مشکلی که هست اینه که چون ما فایل رو ویرایش کردیم نیاز هست که مجدد یه امضا دیجیتال به برنامه بدیم  که موقع نصب سیستم عامل اندروید از ما ایرادی نگیره 🙂

 

برای Signed کردن فایل APK من از uber-apk-signer استفاده میکنم با دستور زیر میتونید اینکارو انجام بدید

 

 

الان سمت اپلیکیشن ما کاری نداریم دیگه باید بریم تنظیمات BurpSuite رو ردیف کنیم در قسمت Proxy Listeners پورت 8083 رو اضافه کنید و بعد از گزینه Edit رو بزنید و گزینه Support invisible proxying رو فعال کنید

 

 

خب عملا کار تمومه کافیه اپلیکیشن جدیدی که برنامه reflutter رو داد رو نصب کنید کنید و اگر HTTPS Request رو بزنید میبینید که درخواست های HTTPS هم الان سمت BurpSuite قابل دیدن هست 🙂 مکانیزم امنیتی SSL pinning بایپس شد

 

 

 

امیدوارم که لذت برده باشید هر سوالی داشتید تو کامنت ها بپرسید جواب میدم 

 

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



نظرات کاربران



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

مطالب مرتبط