اکوسیستم اپل ، در سالهای اخیر مورد توجه بازیگران تهدید و محققین امنیتی قرار گرفته. این مسئله رو میشه از میزان آسیب پذیری های کشف شده و 0dayهای اصلاح شده و حملات روی این اکوسیستم ، مشاهده کرد. مثلا در ماههای اخیر بود که خبر یه زنجیره حمله، بنام Triangulation منتشر شد که بهش عنوان پیچیده ترین حمله روی آیفون رو دادن، یا اولین بروزرسانی اپل برای سال جدید میلادی، که همراه با اصلاح یه 0day بود.
با توجه به این مطالب، توجه به امنیت، در این اکوسیستم هم مانند موارد دیگه بیشتر حس میشه. یکی از تهدیداتی که در این سالهای اخیر محصولات اپل رو تحت تاثیر قرار داده، توسعه ی جاسوس افزارهای تجاری مانند Pegasus بوده. بدافزارهایی که توسط شرکت ها توسعه داده میشن و برای آلودگی از اکسپلویتهای 0day استفاده میکنن.
بدلیل ماهیت اکوسیستم iOS ، بررسی چنین بدافزارهایی ، عمدتا زمانبر و پرهزینه هستش و در نتیجه توسط عموم هم شناسایی نمیشه. امروزه، روش های رایجی که برای آنالیز تهدیدات موبایل iOS مورد استفاده قرار میگیره، یا استفاده از یه نسخه ی بکآپ کامل و رمزشده iOS هستش یا بررسی ترافیک شبکه دستگاه. اما مشکل این روشها اینه که یا زمانبر هستن یا نیاز به تخصص و منابع بالایی دارن، بنابراین استفاده از اونا دارای محدودیتهایی هستش.
محققای کسپرسکی ، یه گزارش و روشی منتشر کردن که با استفاده از یسری شواهد فارنزیکی، تونستن بدافزاری های iOS رو شناسایی یا ردپاهایی از اونا رو کشف کنن و یسری اسکریپت هم برای خودکار کردن این فرایند توسعه دادن.
محققا در فرایند آنالیزشون در سالهای 2021 و 2022 از گوشی های آلوده به بدافزار Pegasus ، به یه فایل لاگ سیستمی بنام Shutdown.log رسیدن که دارای یسری ردپا از این بدافزار بوده. این فایل لاگ در همه ی دستگاههای iOS موبایل وجود داره. بنابراین اومدن این فایل رو بیشتر بررسی کردن تا ازش برای شناسایی ردپاهای بدافزارهای دیگه هم استفاده کنن.
بررسی فایل Shutdown.log :
فایل Shutdown.log یه فایل لاگ متنی هستش که در دستگاه های iOS ایجاد میشه. هر رویداد Reboot همراه با یسری ویژگی های محیطی در این فایل ثبت میشه. با بررسی این فایلها، میشه اطلاعات زیادی از چندین سال قبل رو استخراج کرد.
وقتی یه کاربری، دستگاه رو Reboot میکنه، سیستم عامل تلاش میکنه تا همه ی پروسس های در حال اجرا رو قبل از Reboot بدرستی خاتمه بده. اگه فرایند Reboot شروع بشه و پروسس کلاینتی همچنان در حال اجرا باشه، PID و مسیر اون در فایل Shutdown.log لاگ میشه. در فایل لاگ عنوان میشه که این پروسس از فرایند عادی ریبوت جلوگیری میکنه و سیستم منتظر پایان اون هستش. یه UNIX timestamp هم برای این رویداد ثبت میشه که نشون دهنده اینه که، بافرهای مموری برای آماده شدن برای خاموش شدن سیستم عامل، پاک شدن. شکل زیر یه نمونه از این فایلها رو با جزییاتی که ارائه دادیم، نمایش میده .
بدست آوردن فایل Shutdown.log ، خیلی ساده تر از روش های زمانبری مانند گرفتن ایمیج کامل از دستگاه یا بک آپ کامل iOS هستش. این فایل در sysdiagnose (sysdiag) ذخیره میشه.
خوده Sysdiag مجموعه ای از دیتابیس ها و لاگ های سیستمی هستش که میشه ازشون برای دیباگ کردن یا عیب یابی استفاده کرد. روش ایجاد sysdiag ، ممکنه در نسخه های مختلف iOS متفاوت باشه ، اما میشه اون در تنظیمات عمومی سیستم عامل و در بخش Privacy and Analytics پیدا کرد. البته ممکنه عنوان این بخش هم در نسخه های مختلف iOS متفاوت باشه.
در عرض چندی دقیقه میتونید این فایل رو ایجاد کنید که یه فایل با فرمت .tar.gz و حجم حدودا 200-400 مگابایت هستش. بعدش میتونید این فایل رو به سیستمی که کارهای آنالیز رو توش انجام میدید، انتقال بدید. اگه این فایل فشرده رو از حالت فشرده خارج کنید، فایل Shutdown.log در مسیر زیر ، قابل دسترس هستش:
1 |
\system_logs.logarchive\Extra |
شناسائی بدافزارها و درس هایی که محققا یادگرفتن:
محققا وقتی شروع به آنالیز یسری موبایل آلوده کردن، از یه ابزاری بنام MVT که توسط Amnesty International توسعه داده شده، استفاده کردن. اون زمان MVT ، با تجزیه ی دیتابیس DataUsage ، بهمراه یسری شواهد فارنزیکی دیگه، شاخص های بدافزارهارو شناسایی میکرد.
از اونجایی که بدافزارهای موبایل در حال افزایش و روش های تشخیص زمانبر بودن، بنابراین محققا دنبال یه روش سریع و آسون بودن. با اینکه آنالیز ترافیک شبکه ی آیفون میتونه یه روش ساده برای شناسایی آلودگی ها احتمالی آیفون باشه، اما پردازش ترافیک شبکه نیاز به تخصص و منابع بالایی داره.
آنالیز دامپ Sysdiag ، یه روش ساده و با منابع پایین هستش که میشه برای شناسایی آلودگی های احتمالی آیفون استفاده بشه. این متد میتونه از نقطه نظرات مختلف ، تکمیل کننده ی شناسایی آلودگی های احتمالی باشه.
در شکل زیر یه نمونه فایل Shutdown.log رو مشاهده میکنید که از یه گوشی آلوده به Pegasus استخراج شده و ردپای آلودگی این بدافزار /private/var/db/com.apple.xpc.roleaccountd.staging/rolexd
رو نشون میده :
با مشاهده ی آلودگی در این فایل لاگ و همچنین تایید آلودگی از طریق پردازش سایر شواهد فارنزیکی با ابزار MVT ، محققا به این نتیجه رسیدن که این فایل میتونه در شناسایی آلودگی ها کمک کننده باشه. محققا همچنین تونستن سایر آلودگی های Pegasus رو هم که در دستگاههای دیگه تایید کرده بودن با این فایل شناسایی کنن، بنابراین معتقدن که این فایل میتونه بعنوان یه مدرک فارنزیکی قابل اعتماد در شناسایی آلودگی ها استفاده بشه.
محققا معتقدن که این روش یسری ناهنجاری هم داره که باید بررسی بشن و این رو از مشاهداتی که در حین آنالیز داشتن، بدست آوردن. مثلا در یه مورد مشاهده کردن که دستگاه از طریق آنالیز دیتابیس DataUsage آلوده بوده، اما اثری از آلودگی در فایل Shutdown.log نبوده. با آنالیز بیشتر متوجه شدن که دستگاه در روز آلودگی Reboot نشده. این مشاهده منطقیه چون فقط در زمان Reboot دستگاه، رویدادی در این فایل ثبت میشه.
در یه مورد دیگه، محققا وقتی یه گوشی آلوده رو بررسی میکردن متوجه شدن برخی اوقات پروسس sticky مثل پروسس های مرتبط با Pegasus که از Reboot جلوگیری میکنه ،منجر به درج رویداد در فایل Shutdown.log میشه که نشون دهنده ایجاد تاخیر در Reboot هست. پروسس sticky منظور پروسس هایی هستن که بدلیل در حال اجرا بودن، از Reboot شدن سیستم جلوگیری میکنن. محققا پروسس های مرتبط با Pegasus رو در بیش از 4 اعلان تاخیر در Reboot مشاهده کردن. همچنین گوشی های غیرآلوده ای هم مشاهده کردن که دو یا سه اخطار تاخیر در راه اندازی مجدد داشتن. بنابراین محققا اخطار بیش از حد (بیش از 4 مورد) رو یکی دیگه از ناهنجاری های این لاگ ها میدونن که باید بررسی بشه و شاید نشون دهنده بدافزار باشه.
محققا همچنان که روی sysdiag و Shutdown.log کار میکردن، متوجه مسیر بدافزار در گزارش آنالیز بدافزار Reign توسط CitizenLab شدن. این مسیر براشون آشنا بوده.
محققا با مقایسه فایل Shutdown.log که در آلودگی Pegasus بررسی کردن و این مسیر بدافزار Reign ، متوجه شدن که مسیر اجرای این دو بدافزار یکی هستش ، یعنی /private/var/db/ ، این قضیه برای خانواده ی بدافزار Predator هم تقریبا صادقه. در این بدافزاز مسیر اجرا ، /private/var/tmp/ ، هستش.
بنابراین محققا به این نتیجه رسیدن که این سه خانواده بدافزار از یه مسیر مشابه استفاده میکنن، همچنین این مسیر هم طبق آنالیزی که روی Pegasus انجام دادن، در فایل Shutdown.log لاگ میشه، بنابراین احتمالا میشه از این فایل Shutdown.log برای شناسایی این سه خانواده ی بدافزاری استفاده کرد. اما این وسط یه مسئله ی مهم وجود داره و اون اینه کاربر باید حتما دستگاه رو Reboot کنه. اما سوال بهتر اینه که کاربر چند بار باید دستگاهش رو Reboot کنه. جواب این سوال بستگی به میزان تهدید کاربر داره و میتونه هر چند ساعت یکبار، هر روز یا در مواقع رویدادهای مهم و خاص باشه. این Reboot سیستم توسط خیلیا توصیه شده.
بررسی اسکریپتها :
محققا برای اینکه بتونن، فرایند آنالیز فایل Shutdown.log رو خودکار کنن، سه تا اسکرپیت پایتونی توسعه دادن. برای استفاده از این اسکریپتها، کاربر باید یه دامپ از sysdiag داشته باشه و اونو از حالت فشرده استخراج کرده باشه.
اسکریپت اول : iShutdown_detect
این اسکریپت، ناهنجاری هایی که در بالا بهشون اشاره شد رو شناسایی میکنه. اسکریپت فایل لاگ رو آنالیز میکنه و در صورتی که ناهنجاری شناسایی بکنه، اونو گزارش میده. این اسکریپت رو اینجوری فرض کنید که یسری موارد غیرمعمول رو در این فایل Shutdown.log شناسایی میکنه و بیشتر بعنوان پشتیبانی از روند تحقیقات هستش. در زیر برخی از نتایج اجرای این اسکریپت رو مشاهده میکنید :
اسکریپت دوم : iShutdown_parse
این اسکریپت با این هدف توسعه داده شده که محققا و کاربران بتونن ، فایلهای لاگ خودشون رو راحتتر به اشتراک بزارن و همچنین بتونن در آنالیزهای مختلف ازشون استفاده کنن. این اسکریپت ، فایل sysdiag رو میگیره، فایل Shutdown.log رو ازش استخراج میکنه و همچنین میتونه اونو بصورت فایل CSV دربیاره، timestampها رو دیکد کنه و هش های MD5, SHA1, SHA256 رو محاسبه کنه.
اسکریپت سوم: iShutdown_stats
این اسکریپت فایل لاگ رو میگیره و یه گزارشی از تعداد و زمان هایی که کاربر دستگاه رو راه اندازی مجدد کرده، ارائه میده.