پایان کار mTLS و نفوذ کامل به ترافیک شبکه
توی دو تا پست قبلی تونستیم با فریدا، گواهینامه کلاینت و کلید خصوصی رو مستقیماً از حافظه رم اپلیکیشن استخراج کنیم. حالا نوبت به برداشت محصول میرسه!
گام نهایی: تزریق به Burp Suite
۱. دو بلاک متنی (PEM) مربوط به کلید و گواهی رو از کنسول فریدا کپی و ذخیره میکنیم.
۲. با ابزار OpenSSL اونها را به یک فایل واحد کلاینت تبدیل میکنیم:
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in cert.pem
۳. فایل حاصل رو در تنظیمات Burp Suite و در بخش Client TLS Certificates وارد میکنیم.
کار تمومه! حالا Burp Suite گواهینامه معتبر رو به سرور ارائه میده، سرور فریب میخوره و درخواستهای ما با پاسخ ۲Keep OK باز میشن. ترافیک کاملاً شنود و دستکاری میشه!
برنامهنویسها چطور باید جلو این آسیبپذیری رو بگیرن؟
مهمترین درسی که از این مقاله میگیریم اینه که رمزنگاری قویِ فایل، جایگزین امنیت محل ذخیرهسازی نمیشه. راهکار قطعی:
۱. استفاده از AndroidKeyStore + TEE: کلیدها باید طوری ساخته بشن که در لایه سختافزار قرار بگیرن. در این حالت متد getEncoded() مقدار null برمیگردونه و کلید هیچوقت وارد رم نرمافزاری نمیشه که فریدا بتونه اون رو ببینه.
۲. استفاده از Key Attestation: سرور باید در زمان ثبتنام بررسی کنه که کلید حتماً سختافزاری باشه و کلیدهای نرمافزاری رو رد کنه.
برای مطالعه جزئیات بیشتر، خطوط کد جاوای اپلیکیشن و اسکریپت فریدای استفاده شده، میتونید مقاله کامل رو در مدینوم مطالعه کنید:
🔗 https://kiratliygt.medium.com/how-to-bypass-mtls-on-android-with-frida-45c5e71373e8
#AndroidSecurity #CyberSecurity #AppSec #mTLSBypass #DefensiveCoding
@AndroidSec_fa