تارگتهای کلهگنده و سد محکمی به نام
mTLS!تا حالا موقع تست نفوذ یا مهندسی معکوس اپلیکیشنهای بانکی و مالی به
mTLS برخورد کردید؟ همون لایه امنیتی سرسختی که برخلاف TLS معمولی، سرور هم از کلاینت (گوشی) گواهینامه معتبر میخواد و اجازه نمیده ترافیک رو به این راحتیها از Burp Suite رد کنید!در این سری پستها میخوایم قدم به قدم مکانیزم یک مقاله فوقالعاده رو بررسی کنیم که نشون میده چطور میشه با ابزار قدرتمند `Frida` این سد امنیتی رو دور زد.
پترن دفاعی این اپلیکیشن چیه؟
خیلی از برنامهنویسها برای محافظت از کلید خصوصی (`Private Key`) که روی گوشی کلاینت ذخیره میشه، از رمز عبورهای پویا در زمان اجرا (
Runtime-Derived Password) استفاده میکنن. در این مقاله هم توسعهدهنده کارش رو بلد بوده:🔴 رمز عبور به هیچ وجه هاردکد نشده.
🔴 رمز در لحظه اجرا از ترکیب `
ANDROID_ID، مشخصات رام دستگاه (Build.FINGERPRINT`) و اسم پکیج ساخته میشه.🔴 برای سختتر شدن کار، خروجی از ۲۰۰,۰۰۰ مرتبه تکرار الگوریتم `PBKDF2` رد میشه!
🔴 بعد از استفاده هم بلافاصله حافظه رم با `
Arrays.fill` وایپ (پاک) میشه.به نظر غیرقابل نفوذ میاد، مگه نه؟ شکستن این رمز به صورت آفلاین تقریباً غیرممکنه! اما امان از یک اشتباه کوچک در معماری ذخیرهسازی کلید...
در پست بعدی وارد فاز عملیاتی میشیم و اولین قفل رو با فریدا باز میکنیم. با ما همراه باشید!
#AndroidSecurity #mTLS #Frida #ReverseEngineering #PenetrationTesting
@AndroidSec_fa