کارشناسان شرکت Kaspersky در گزارشی به بررسی خصوصیات فنی این جاسوسافزار پرداختهاند.
به گزارش گرداب، یک جاسوسافزار پیشرفته در قالب یک عملیات سایبری بزرگ منتسب به سرویسهای جاسوسی آمریکا، توانسته بود هزاران دستگاه موبایل شرکت اپل را آلوده کند. سرویس اطلاعاتی روسیه (FSB) و شرکت امنیت سایبری کسپرسکی خبر از شناسایی این بدافزار خطرناک دادند. متنی که در ادامه میآید ترجمهی گزارش فنی کارشناسان این شرکت دربارهی نتایج بررسی جاسوسافزار موسوم به TriangleDB است.
گزارش پایگاه رسانهای گرداب در خصوص این بدافزار را بخوانید:
عملیات مثلثسازی: آمریکا چگونه از گوشیهای آیفون جاسوسی کرد؟
«پایگاه رسانهای گرداب جهت آگاهی و افزایش دانش مخاطبان خود به ترجمه و انتشار مطالبی در حوزههای مختلف فناوری اقدام میکند. انتشار مطالب به معنای تایید محتوای آن نیست».
طی سالهای گذشته نمونههای متعددی از آلوده شدن دستگاههای iOS به جاسوسافزارهایی مانند Pegasus، Predator، Reign و... وجود داشته است. در اغلب موارد فرآیند آلوده شدن یک دستگاه شامل سوءاستفاده از زنجیرهای از آسیبپذیریهای مختلف است؛ مثلاً برای فرار از جعبهی شنی[۱] برنامهی iMessage هنگام بررسی یک فایل آلوده در ضمیمهی پیام و برای دستیابی به کنترلهای root از طریق یک آسیبپذیری در هستهی سیستم عامل (kernel). به خاطر این پیچیدگیها، کشف یکی از آسیبپذیریهای در این زنجیره اغلب منجر به شناسایی بقیهی حلقههای زنجیره و کشف جاسوسافزار نهایی نمیشود. برای مثال در سال ۲۰۲۱ تحلیل نسخههای پشتیبان iTunes کمک به کشف یک فایل ضمیمه شامل آسیبپذیری FORCEDENTRY کرد، اما این کد در مرحلهی اجرا فایلی را از یک سرور دوردست دانلود کرد. این سرور در هنگام تحلیل آسیبپذیری در دسترس نبود. به همین دلیل فرآیند تحلیل بدافزار نتوانست «آسیبپذیری را دنبال کند».
در بررسی «عملیات مثلثسازی» (Operation Triangulation) ما هدفگذاری کردیم که بیشترین اجزای ممکن از زنجیرهی آسیبپذیریها را بازیابی کنیم. این کار حدود ۶ ماه طول کشید. پس از تکمیل این زنجیره، ما بررسی دقیقی از مراحل شناساییشده را آغاز کردیم. تا کنون ما تحلیل جاسوسافزار را تمام کرده و آمادهی انتشار جزئیات هستیم.
زنجیرهی آلودگی در عملیات مثلثسازی
پس از اینکه مهاجمان از طریق یک آسیبپذیری در هستهی سیستم عامل، کنترلهای root را در یک دستگاه iOS بدست آوردند، اقدام به جاگذاری جاسوسافزار (که ما آن را TriangleDB نامگذاری کردهایم) میکنند. جاسوسافزار در حافظه جاگذاری میشود. این بدان معناست که پس از روشن شدن مجدد دستگاه، تمامی آثار جاسوسافزار از بین میرود. به همین دلیل اگر قربانی دستگاهش را راهاندازی مجدد (reboot) کند مهاجمان برای آلوده کردن مجدد دستگاه باید یک پیام در iMessage با ضمیمهی آلوده ارسال کنند. یعنی باید تمامی زنجیرهی آسیبپذیریها را مجدداً مورد استفاده قرار دهند. اگر دستگاه راهاندازی مجدد نشود، جاسوسافزار خود را پس از ۳۰ روز پاک میکند، مگر اینکه این مدت توسط مهاجمان تمدید شود.
با TriangleDB آشنا شوید
جاسوسافزار TriangleDB به زبان Objective-C نوشته شده است. این زبان نامهایی که توسعهدهنده برای عناصر و متدها نوشته است را حفظ میکند. در فایل دودویی (binary) نام متدها مبهمسازی (obfuscation) نشده، اما نام عناصر کلاسها سرواژههایی نامفهوم است که باعث شده نتوان حدسی درباره معنای آنها داشت.
در برخی موارد نیز میتوان معنای سرواژهها را حدس زد. برای مثال osV نسخهی سیستم عامل iOS است و iME شامل کد IMEI دستگاه میباشد.
رشتههای متنی (string) داخل جاسوسافزار نیز به صورت HEX کدگذاری و با روش XOR رمزنگاری شدهاند:
پیادهسازی الگوریتم rolling XOR در جاسوسافزار برای رمزگشایی رشتهها
ارتباطات فرماندهی و کنترل
جاسوسافزار پس از اجرا شدن، با استفاده از کتابخانهی تبادل دادهی Protobuf شروع به ارتباط با سرور کنترل و فرماندهی (C۲) میکند. در تنظیمات جاسوسافزار دو سرور دیده میشود: سرور اصلی و سرور کمکی (که در تنظیمهای IS و ISf قرار دارند). در حالت عادی جاسوسافزار از سرور اصلی استفاده میکند و اگر با خطا روبهرو شود با سرور کمکی ارتباط برقرار میکند (به وسیلهی فراخواندن متد - [CRConfig swapLpServerType:]).
علاوهبراین، پیامهای ارسال و دریافتشده با الگوریتمهای رمزنگاری متقارن (3DES) و نامتقارن (RSA) رمزنگاری میشوند. تمامی پیامها از طریق پروتکل HTTPS و با استفاده از درخواستهای POST تبادل میشوند و مقدار کوکی (cookie) نیز برابر است با g و یک رشتهی عددی از پارامترهای تنظیمی pubKI.
جاسوسافزار به صورت دورهای علائم فعال بودن خود (heartbeat beacon) را همراه با دستهای از اطلاعات ارسال میکند؛ اطلاعاتی شامل نسخهی جاسوسافزار، شناسههای دستگاه (شماره سریال، IMEI, MEID و ...) تنظیمات پردازشِ بهروزرسانی (اینکه آیا امکان دانلود و نصب خودکار بهروزرسانیها فعال است یا نه).
بخشی از پیام اعلام فعال بودنِ بدافزار (نسخهی ۱.۷.۰.۵ بدافزار، اجرا شده روی نسخهی ۱۵.۳.۱ سیستم عامل iOS)
دستورات TriangleDB
سرور کنترل و فرماندهی در پاسخ پیامهای اعلام فعال بودن، دستوراتی ارسال میکند. دستورات به شکل پیامهای Protobuf ارسال میشوند که type name آنها با CRX آغاز میشود. معنای این نامها مشخص نیست. برای مثال دستور فهرست کردن دایرکتوریها CRXShowTables و فرمان تغییر آدرس سرورهای کنترل و فرماندهی CRXConfigureDBServer نام دارد. در مجموع جاسوسافزاری که ما تحلیل کردیم ۲۴ دستور مختلف دارد که برای انجام دادن این کارها طراحی شدهاند:
یکی از دستورهای جالبی که در جاسوسافزار کشف کردیم CRXPollRecords نام دارد. این دستور تغییرات در پوشهها را رصد کرده و در فایلهای دستکاریشده به دنبال عبارتهای RegEx خاصی میگردد. برای رصد تغییرات در فایل، یک توصیفگر فایل[۲] Unix از دایرکتوری مورد نظر به دست آورده شده و سپس یک اجرا کنندهی رویداد[۳] vnode به آن متصل میشود. هرگاه جاسوسافزار از یک تغییر مطلع میشود، اجرا کنندهی رویداد به دنبال فایلهای تغییریافتهای که با عبارت RegEx مورد نظر مهاجم انطباق دارند میگردد. سپس این فایلها طی یک برنامهی زمانی به سرور فرماندهی و کنترل ارسال میشوند.
پارامترهای این دستور اینها هستند:
در جدول زیر ما دستورهای تعبیه شده در جاسوسافزار را با همان نامهایی که توسعهدهنده انتخاب کرده (و در صورت امکان به همراه شناسههای عددی آنها) بررسی کردهایم.
شناسهی دستور |
نام انتخابشده توسط توسعهدهنده |
توضیح |
0xFEED |
CRXBlank |
هیچ عملیاتی ندارد. |
0xF001 |
؟ |
جاسوسافزار را با بستن پردازش آن، حذف میکند. |
0xF301 |
CRXPause |
جاسوسافزار را به مدت مشخصی بر حسب ثانیه غیرفعال میکند. |
0xFE01 |
؟ |
جاسوسافزار را به یک مدت شبهتصادفی که در تنظیمات caS و caP مشخص شده غیرفعال میکند. این مدت زمان چیزی بین caP – caS و caP + caS خواهد بود. |
0xFB01 |
CRXForward |
مقدار تنظیم caP را تغییر میدهد. |
0xFB02 |
CRXFastForward |
مقدار تنظیم caS را تغییر میدهد. |
0xF201 |
CRXConfigureDBServer |
آدرس سرورهای اصلی و کمکی کنترل و فرماندهی را تغییر میدهد. |
0xF403 |
CRXUpdateConfigInfo |
پارامترهای تنظیمات جاسوسافزار را تغییر میدهد. ورودیهای این دستور شامل شناسهی پارامتر مورد نظر و مقدار جدید آن است. شناسههای پارامترها یک رشتهی عددی است، مانند “nineteen” و “twentyone”. |
0xF101 |
CRXExtendTimeout |
طول عمر جاسوسافزار را به اندازهی مدت مشخصی بر حسب ثانیه افزایش میدهد. طول عمر پیشفرض 30 روز است. |
0xF601 |
CRXQueryShowTables |
فهرستی از دایرکتوریهای مشخص را با استفاده از رابط (API) fts به دست میآورد. |
0xF801 |
CRXFetchRecordInfo |
اطلاعات یک فایل را برمیگرداند (شامل خصوصیات، دسترسیها، اندازه، تاریخ ساخت و تغییر و آخرین دسترسی). |
0xF501 |
CRXFetchRecord |
محتوای فایل مشخصشده را برمیگرداند. |
0xFC10 |
CRXPollRecords |
رصد یک دایرکتوری برای یافتن فایلهایی که نامشان با یک عبارت مشخص RegEx منطبق است را آغاز میکند. |
0xFC11 |
CRXStopPollingRecords |
اجرای دستور CRXPollRecords را متوقف میکند. |
0xFC01 |
CRXFetchMatchingRecords |
فایلهایی که با یک عبارت RegEx منطبق هستند را برمیگرداند. |
0xF901 |
CRXUpdateRecord |
بسته به مقدار ورودی iM، در یک فایل اطلاعات مینویسد یا یک ماژول جدید به جاسوسافزار اضافه میکند. |
0xFA02 |
CRXRunRecord |
یک ماژول با نام مشخص را به صورت بازتابی و از طریق بارگذاری فایل Mach-O اجرا میکند. |
0xF902 |
CRXUpdateRunRecord |
یک ماژول جدید به جاسوسافزار افزوده و آن را اجرا میکند. |
0xFA01 |
CRXDeleteRecord |
بسته به مقادیر ورودی، یک ماژول را از جاسوسافزار حذف کرده یا یک فایل با نام مشخصشده را حذف میکند. |
0xF402 |
CRXGetSchemas |
فهرستی از پردازشهای در حال اجرا را برمیگرداند. |
0xFB44 |
CRXPurgeRecord |
یک پردازش با شناسه مشخصشده را با استفاده از SIGKILL یا SIGSTOP (بسته به ورودی دستور) میبندد. |
0xFD01 |
؟ |
اطلاعاتی درباره برنامههای نصبشده روی iOS برمیگرداند. |
0xFB03 |
CRXGetIndexesV2 |
اطلاعات احراز هویت دستگاه آلودهشده را برمیگرداند. وضعیت قفل بودن صفحه دستگاه را رصد میکند و پس از باز شدن قفل صفحه، این اطلاعات را از نشانی /private/var/Keychains/keychain-2.db جمعآوری میکند: گذرواژههای generic، گذرواژههای اینترنت، گواهیها، کلیدها، هویت دیجیتال. کد جاسوسافزار میتواند با نسخههای مختلف فایل keychain کار کند، از جمله آنهایی که در iOS4 استفاده شدهاند. |
0xF401 |
؟ |
اطلاعات موقعیت مکانی قربانی را برمیگرداند: مختصات، ارتفاع، جهت حرکت دستگاه و سرعت. به صورت پیشفرض این دستور تنها زمانی کار میکند که صفحهی دستگاه خاموش باشد. اما مهاجم میتواند با تغییر تنظیمات جاسوسافزار این امر را تغییر دهد. |
یافتههای عجیب
هنگام بررسی جاسوسافزار TriangleDB ما جزئیات جالب توجه بسیاری یافتیم:
بررسی ادامه دارد
کار بررسی TriangleDB که یک جاسوسافزار پیچیده iOS با نکات عجیب فراوان بود، تمام شد. ما به تحلیل این کارزار ادامه خواهیم داد و شما را از کلیهی جزئیات این حملهی پیچیده مطلع خواهیم کرد.
پینوشتها:
[۱] در امنیت رایانهای جعبهی شنی (به انگلیسی Sandbox) یک سازوکار حفاظتی برای جدا نگهداشتن بعضی نرمافزارهای در حال اجرا در آن واحد با دیگر نرمافزارهاست، و اغلب برای اجرای کدهای تست نشده یا برنامه یا تارنماهای غیرقابل اعتماد مورد استفاده قرار میگیرد، تا خطرات احتمالی سیستمعامل یا میزبان را تهدید نکند. (به نقل از ویکیپدیای فارسی)
[2] Unix file decriptor
[3] vnode event handler