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

چکیده:

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

نکته مهم: هدف این مقاله آموزشی است و در جهت افزایش آگاهی در حوزه امنیت سایبری می‌باشد.

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

در این روش بدون اینکه نرم‌افزار نصب یا اجرا کنیم از طریق بررسی کدهای برنامه عملکرد این نرم‌افزار را تحلیل می‌کنیم. برای شروع از ابزار Apktool برای دی‌کامپایل (decompile) کردن app.apk استفاده می‌کنیم مطابق شکل(۱).

شکل ۱: استفاده از ابزار Apktool برای دیکامپایل (decomplie) app.apk.

بعد از دیکامپایل کردن پوشه app را باز می‌کنیم و فایل AndroidManifest.xml که هسته اصلی نرم‌افزارهای اندرویدی است را باز می‌کنیم. مطابق بخش‌های شماره گذاری شده شکل (۲) و (۳) توضیحات هر قسمت در زیر داده شده است:

  1. این بخش اسم اصلی نرم‌افزار است که در مراحل بعدی استفاده می‌کنیم.
  2. در این قسمت permissionهای مورد نیاز در نسخه‌های قدیمی اندروید است.
  3. Activity از مهم‌ترین قسمت‌های برنامه است که همان بخش ظاهری برنامه مانند دکمه‌ها کادرها و غیره می‌باشد. این بخش تغییر می‌کند اولین قسمتی که بعد از باز شدن برنامه نشان دهد کدام است که به این عمل Splash می‌گوییم.
  4. سایر Activityها مانند فرم ثبت‌نام، صفحه ورود، صفحه جستجو و قسمت‌های دیگه که در برنامه استفاده می‌شود در این قسمت است.
  5. کدهای Broadcast Receiver همیشه در حالت آماده باش منتظر پرچم هستند که در صورت وقوع شروع به اجرا می‌کنند به عنوان مثال زمانی که گوشی زنگ می‌خورد این کدها می‌تواند به صورت خودکار تماس را قطع کنند.
شکل ۲: محتویات فایل AndroidManifest.xml.
شکل ۳: محتویات فایل AndroidManifest.xml.

برنامه‌هایی که توسط توسعه دهنده نوشته می‌شوند به زبان جاوا هستند و کدها برای اینکه در سیستم عامل اندروید قابل اجرا شوند به کدهای op code تبدیل می‌شوند. در اینجا باید بفهمیم توسعه دهنده چه کدی را در اینجا استفاده کرده است و عکس این فرایند را انجام دهیم به این معنی که کدهای op code را به کدهای جاوا تبدیل کنیم و برای این کار از ابزار dex2jar استفاده می‌کنیم. برای شروع فایل app.apk را تغییر نام داده و به app2.zip تبدیل می‌کنیم و فایل‌ها را از حالت فشرده خارج کرده و وارد پوشه app2 می‌شویم و فایل classes.dex با برنامه dex2jar تبدیل به فرمت jar می‌کنیم. با ابزار jd-gui.jar فایل jar را باز کرده و کدها را تحلیل می‌کنیم. شکل (۴ و ۵).

شکل ۴: تبدیل به jar فایل classes.dex.
شکل ۵: محتویات فایل jar.

در فایل AndroidManifest.xml بخش اصلی برنامه می‌باشد بعد از اجرای برنامه splash activity برای کاربر نمایش داده می‌شود. در قسمت Mactivity توسط برنامه نویس کلاس پایه ایجاد شده است و تمام activityها از این قسمت ارث می‌برند. در ادامه به توضیح کلاس Splash می‌پردازیم. برنامه‌نویس در متد onCreateبه اصطلاح layout xml صفحه Splash را با روش setContentView به کاربر نمایش داده است. برنامه نویس در کلاس MActivity متد Load تعریف کرده است که بتواند در هر activity بعد از نمایش layout دستوراتی را بصورت اتوماتیک اجرا کند.شکل(۶).

شکل ۶: اطلاعات اکتیویتی برنامه.

در متد Load کلاس Splash تابع  Get_Permission را فراخوانی کرده است تا دسترسی‌های مورد نظر را دریافت کند. در متد Denied اگر شما مجوزها را قبول نکنید پیامی به شما می‌دهد و برنامه را می‌بندد. برنامه نویس در متد Animation که بعد از اتمام افکت‌های نمایشی کارهای زیر را انجام می‌دهد:

  1. تشخیص اینکه آیا برنامه در شبیه ساز کار می‌کند یا خیر؟
  2. آیا قبلا کاربر ثبت نام کرده است یا خیر؟
  3. حساب کاربر فعلی block شده است یا خیر؟

به بیان ساده‌تر برنامه نویس کلاس Main را تعریف کرده است و در متد Load آن بررسی می‌کند که آیا شماره‌های contacts وجود دارد یا حتی شماره‌ای جدید اضافه شده است و آن را با متد Send_Contacts به سرور خود ارسال می‌کند. یعنی لیست شماره‌‌های تلفن شما را با نام‌های که خودتان ذخیره کردید را ارسال می‌کند و به این شکل بانک خود را تکمیل می‌کند. پس هر کاربری که این نرم افزار را نصب کند تمامی شماره تلفن‌های گوشی بصورت اتوماتیک به سرور ارسال می‌شود که به مرور زمان تبدیل دیتابیسی بزرگ از اطلاعات کاربران می شود و منجربه افشای اطلاعات و سواستفاده از داده ها در فضای دارک وب می گردد. شکل‌(۷ و ۸).

شکل ۷: بررسی وجود مخاطبین.
شکل ۷: ارسال اطلاعات مخاطبین.