مقدمه

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

این دقیقاً همان نقطه‌ای است که بسیاری از کاربران، ناخواسته قربانی حملات بدافزاری می‌شوند.

چرا این پیام مشکوک بود؟

در نگاه اول، شاید این پیام چیز خاصی نداشته باشد؛ اما اگر کمی دقیق‌تر نگاه کنیم، چند نشانه‌ی هشداردهنده در آن دیده می‌شود:

1- ارسال فایل APK از طریق پیام‌ رسان (که به‌طور عادی محل توزیع اپلیکیشن نیست)

2- استفاده از جملات احساسی و اغواکننده برای کاهش شک کاربر

3-ارسال فایل از طرف فردی که اصلا من رو نمی شناخت

4- و از همه مهم تر، عکس زنده(live) پسوند gif یا png یا سایر پسوند های مرتبط را دارد نه apk!

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

 

مراحل تحلیل بدافزار

به‌جای نصب یا اجرای این فایل، تصمیم گرفتم آن را در یک محیط ایزوله و امن(ماشین مجازی و سایت virustotal)، گام‌به‌گام تحلیلش کنم تا اطلاعات آن مشخص شود و پاسخ سوالات زیر مشخص شود:

1-این فایل دقیقاً چه کاری انجام می‌دهد؟

2-چه مجوزهایی درخواست می‌کند؟

3-آیا اطلاعات کاربر را سرقت می‌کند؟

4-آیا قابلیت ارسال خودکار به مخاطبین را دارد؟

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

 

هدف مقاله چیست؟

در این مقاله، بدون ورود به جزئیات بیش از حد فنی، روند تحلیل این تروجان را توضیح می‌دهم:

1- چه نشانه‌هایی باعث شک اولیه شد

2- بدافزار چه رفتارهایی داشت

3- و مهم‌تر از همه، چطور می‌توان از قربانی شدن جلوگیری کرد

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

فایل بدافزار را به ویندوز انتقال دادم. این بدافزار اندرویدی با پسوند apk هست پس خطری برای ویندوز و لینوکس نخواهد داشت.

 

معرفی سایت virustotal و نحوه ی استفاده از وبسایت

یکی از بهترین سایت ها برای تحلیل لینک های مخرب و بدافزار ها https://www.virustotal.com/gui/home/upload هست.

بعد از وارد شدن به سایت، صفحه ی زیر را خواهی دید. فایل بدافزار را بارگذاری کنید و صبر کنید تا بارگذاری تمام شود.

نکته: ممکن است به خاطر تحریم ها نیاز باشد از DNS یا VPN برای دسترسی به این سایت استفاده کنید ولی معمولا نیازی نیست.

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

نشانه‌های بدافزار بودن در تصویر زیر دیده می‌شود که خروجی VirusTotal است.

Security Vendors’ Analysis یعنی چه؟

در سایت‌هایی مثل VirusTotal، یک فایل فقط توسط یک آنتی‌ ویروس بررسی نمی‌ شود؛ بلکه هم‌ زمان به ده‌ها شرکت امنیتی (Security Vendors) ارسال می‌شود تا هر کدام با موتور تشخیص مخصوص خودشان آن را تحلیل کنند.

این شرکت‌ها شامل مواردی مثل زیر هستند:

1- آنتی‌ویروس‌ها و موتورهای تشخیص بدافزار

2- شرکت‌های فعال در حوزه امنیت سایبری

3- سیستم‌های تشخیص رفتار مخرب (Behavior-based)

 

تحلیل نتایج بررسی توسط شرکت‌های امنیتی

با توجه به تصویر، این فایل توسط چندین شرکت امنیتی مستقل بررسی شده است. بخش قابل توجهی از آنتی‌ویروس‌ها، این فایل APK را به‌عنوان تروجان اندرویدی شناسایی کرده‌اند؛ برخی آن را جاسوس‌افزار (Spy)، برخی بدافزار چندمنظوره (Multiverse) و برخی نیز بدافزار با رفتار پرخطر (Riskware) تشخیص داده‌اند.

نکته‌: نام‌گذاری‌ها متفاوت‌اند اما ماهیت تهدید یکی است و این فایل رفتاری مخرب دارد و برای کاربر خطرناک محسوب می شود.

در مقابل، چند موتور امنیتی فایل را «Undetected» گزارش کرده‌اند. این موضوع معمولاً در مورد بدافزارهای جدید یا فایل‌هایی که از روش‌های مخفی‌ سازی و رمزگذاری استفاده می‌کنند، طبیعی است و به‌هیچ‌ وجه به معنی سالم بودن فایل نیست.

تاریخ ساخت این بدافزار 15 دسامبر هست دقیقا تاریخ ارسالش توسط کاربر(شاید خود کاربر خالق بدافزار هست... شاید اره! ولی زود قضاوت نکنید!).

 

بدافزار کرم(worm) چیست و چگونه کار می کند؟

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

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

زبان برنامه نویسی تروجان اندرویدی چیست؟

برنامه نویسی این بدافزار 7 مگابایتی با زبان های مختلف برنامه نویسی به شرح زیر است:

60/6 درصد با استفاده از کاتلین

30/3 درصد جاوا 

قلب و هسته ی مرکزی این بدافزار که تقریبا 9 درصد آن است، رمزنگاری شده و غیرقابل دسترس هست بنابراین زبان مورد استفاده مشخص نیست.

بسته هایی که certificate ندارند توسط محافظ امنیتی اندروید اجازه ی نصب نمی گیرند. این بدافزار از certificate موقت استفاده می کند که تا 2053 اعتبار دارد، این باعث می شود تا با یک اجازه ی "نصب بسته از منابع غیر رسمی" توسط کاربر، روی تلفن فرد قربانی نصب شود.

 

بدافزارها چه دسترسی هایی می خواهند؟

۱. جاسوسِ پیامک‌ها (SMS Permissions)

بدافزار اجازه خواسته که پیامک‌های شما را بخواند (READ_SMS)، دریافت کند (RECEIVE_SMS) و حتی از طرف شما پیامک بفرستد (SEND_SMS).

خطر کجاست؟ تمام پیامک‌های بانکی و کدهای تایید دو مرحله‌ای (OTP) شما مستقیماً برای هکر ارسال می‌شود. هکر با این دسترسی می‌تواند حساب بانکی شما را خالی کند یا وارد تلگرام و اینستاگرام شما شود، بدون اینکه شما حتی متوجه آمدن پیامک کد تایید بشوید!

۲. دزدِ هویت و مخاطبین (READ_CONTACTS)

این فایل می‌خواهد به لیست تمام دوستان، خانواده و همکاران شما دسترسی داشته باشد.

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

۳. شنود و مدیریت تماس (CALL_PHONE & READ_PHONE_STATE)

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

خطر کجاست؟ هکر می‌تواند بفهمد چه زمانی با گوشی کار می‌کنید، با چه کسی حرف می‌زنید و حتی در برخی نسخه‌های پیشرفته‌تر، صدای محیط یا مکالمات را ضبط کند.

۴. نفوذ به حساب‌های کاربری (GET_ACCOUNTS)

خطر کجاست؟ این دسترسی به بدافزار اجازه می‌دهد لیست تمام ایمیل‌ها و حساب‌هایی که روی گوشی سینک شده (مثل گوگل، یاهو و...) را ببیند تا برای حملات بعدی و هک ایمیل‌ها برنامه‌ریزی کند.

چرا این دسترسی‌ها برای یک اپلیکیشن ساده غیرطبیعی است؟
یک لحظه از خودتان بپرسید: «چرا یک اپلیکیشن که قرار است مثلاً یک ابلاغیه قضایی یا یک خبر مهم را به من نشان دهد، باید بتواند از طرف من پیامک بزند یا لیست مخاطبینم را بردارد؟»

پاسخ ساده است: این یک اپلیکیشن نیست، یک ریموت‌کنترل برای هکر است.

بدافزارها دقیقاً به دنبال چه چیزی هستند؟

وقتی یک اپلیکیشن سالم (مثل تقویم یا ماشین‌حساب) نصب می‌ کنید، نهایتاً دسترسی به حافظه یا شاید اینترنت را می‌خواهد. اما به آیکون‌های مثلثی قرمز در تصویر زیر مشاهده می کنید، در دنیای امنیت «اعلام وضعیت قرمز» هستند.

سایت https://www.virustotal.com/gui/home/upload یک بخش خیلی مفید به اسم جعبه شنی دارد. 

آموزش استفاده از جعبه ی شنی(sand box) برای تحلیل بدافزار

تا اینجا فقط به برسی لیست دسترسی‌ ها پرداختیم، در واقع داشتیم «پرونده» و «ظاهر» متهم را  توسط آنتی ویروس ها  بررسی می‌کردیم. اما بخش Sandbox در سایت VirusTotal، مثل یک اتاق بازجویی شیشه‌ای است.

جعبه شنی یا سندباکس چیست؟

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

در جعبه شنی برای بدافزار چه اتفاقی می افتد؟

در sandbox بدافزار فکر می‌کند روی گوشی یک قربانی واقعی نصب شده است.

پس شروع به فعالیت می‌کند:

تماس با خانه (Network Activity): بدافزار بلافاصله سعی می‌کند به سرور هکر متصل شود. در جعبه می‌بینیم که این اپلیکیشن بی‌ارتباط، دارد به سرورهایی در کشورهای دیگر اطلاعات می‌فرستد.

عکاسی از محیط (Screenshots): یکی از جالب‌ترین بخش‌های سایت VirusTotal این است که از مراحل نصب و اجرای بدافزار اسکرین‌شات می‌گیرد. هکرها گاهی ظاهر اپلیکیشن را شبیه برنامه‌های رسمی (مثل همتا یا سهام عدالت) می‌سازند تا شما را فریب دهند؛ جعبه این چهره دروغین را به ما نشان می‌دهد.

تغییرات مخفیانه (File System): جعبه گزارش می‌دهد که بدافزار کدام فایل‌ها را در حافظه گوشی ساخته یا پاک کرده است. مثلاً ممکن است یک فایل مخفی بسازد تا حتی بعد از حذف اپلیکیشن، باز هم به جاسوسی ادامه دهد.

اهمیت استفاده از جعبه شنی در تحلیل بدافزار چیست؟

بسیاری از بدافزارهای امروزی «هوشمند» هستند. آن‌ها ممکن است در نگاه اول توسط آنتی‌ویروس شناسایی نشوند (چون کد یا امضای جدیدی دارند)، اما رفتار مخرب را نمی‌توانند پنهان کنند.

نکته کلیدی: اگر در بخش Behavior دیدید که اپلیکیشن به آدرس‌های اینترنتی مشکوک وصل می‌شود یا در حال خواندن لیست مخاطبین و پیامک‌های شماست، یعنی با یک بدافزار قطعی طرف هستید، حتی اگر نیمی از آنتی‌ویروس‌ها آن را سبز نشان دهند!

چطور از این اطلاعات سایت VirusTotal برای امنیت خودمان استفاده کنیم؟

سایت VirusTotal با این بخش به ما می‌گوید: «فریب ظاهر را نخور، به رفتار نگاه کن.» اگر فایلی برایتان ارسال شد و در بخش سندباکس دیدید که فعالیت‌های غیرعادی (مثل ارسال پیامک یا اتصال به آی‌پی‌های ناشناس) دارد، آن را بلافاصله پاک کنید و حتی به دیگران هم هشدار دهید.

نمونه تصویر از محیط sandbox در سایت VirusTotal:

تحلیل تصویر پایین: این بدافزار تمام ترافیک خود را در پورت 443 پنهان کرده است، دقیقا مانند پولشویی منتها از نوع اطلاعاتی (شاید بهتر باشه بهش بگیم پکت شویی!) تا بدافزار توسط نرم افزارهای امنیتی موبایلی پیدا نشود.پورت 443، پورت وب گردی هست تمام دیوارآتش های اندرویدی این پورت را برای کاربر باز می گذارند و هکر از این موضوع سوء استفاده کرده است.

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

در تصویر پایین دامنه ها جزئی تر به url تقسیم شده و قابل تحلیل و برسی هست.

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

 

تحلیل بدافزار با دستور apktool در لینوکس

بدافزار را با دستور scp منتقل کردم به لینوکس و با دستور زیر با استفاده از  apktool تلاش به برسی اش کردم اما برسی به خاطر رمزنگاری شکست خورد.

apktool d Unknown-3424.apk -o Unknown-3424_dec

 

تحلیل فایل بدافزار با ابزار aapt در لینوکس

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

aapt dump badging Unknown-3424.apk

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

 

نحوه ی دیدن محتویات فایل apk فشرده در لینوکس

با استفاده از دستور زیر می شود محتویات بسته APK بدافزار را  از حالت فشرده خارج کرد و دید.

unzip -l

 در مورد این بدافزار حالا که اطلاعات کافی داریم، نیاز هست فایل های assets را تحلیل کنیم تا دقیق تر با نحوه ی کار این بدافزار آشنا شویم ولی به خاطر رمزنگاری در این مقاله این تحلیل انجام نشد اما وجود فایل مشکوک assets/libx.so نشان دهنده ی بدافزار بودن این فایل می تواند باشد(اگر این مرحله را اول انجام دادید). 

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

نتیجه گیری:

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