جاسوس‌افزار TriangleDB زیر ذره‌بین

جاسوس‌افزار TriangleDB زیر ذره‌بین
تاریخ انتشار : ۰۱ مرداد ۱۴۰۲

کارشناسان شرکت Kaspersky در گزارشی به بررسی خصوصیات فنی این جاسوس‌افزار پرداخته‌اند.

به گزارش گرداب، یک جاسوس‌افزار پیشرفته در قالب یک عملیات سایبری بزرگ منتسب به سرویس‌های جاسوسی آمریکا، توانسته بود هزاران دستگاه موبایل شرکت اپل را آلوده کند. سرویس اطلاعاتی روسیه (FSB) و شرکت امنیت سایبری کسپرسکی خبر از شناسایی این بدافزار خطرناک دادند. متنی که در ادامه می‌آید ترجمه‌ی گزارش فنی کارشناسان این شرکت درباره‌ی نتایج بررسی جاسوس‌افزار موسوم به ‏TriangleDB‌ است.

گزارش پایگاه رسانه‌ای گرداب در خصوص این بدافزار را بخوانید:

عملیات مثلث‌سازی: آمریکا چگونه از گوشی‌های آیفون جاسوسی کرد؟

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


طی سال‌های گذشته نمونه‌های متعددی از آلوده شدن دستگاه‌های iOS به جاسوس‌افزار‌هایی مانند Pegasus، Predator، Reign و... وجود داشته است. در اغلب موارد فرآیند آلوده شدن یک دستگاه شامل سوءاستفاده از زنجیره‌ای از آسیب‌پذیری‌های مختلف است؛ مثلاً برای فرار از جعبه‌ی شنی[۱] برنامه‌ی iMessage هنگام بررسی یک فایل آلوده در ضمیمه‌ی پیام و برای دست‌یابی به کنترل‌های root از طریق یک آسیب‌پذیری در هسته‌ی سیستم عامل (kernel). به خاطر این پیچیدگی‌ها، کشف یکی از آسیب‌پذیری‌های در این زنجیره اغلب منجر به شناسایی بقیه‌ی حلقه‌های زنجیره و کشف جاسوس‌افزار نهایی نمی‌شود. برای مثال در سال ۲۰۲۱ تحلیل نسخه‌های پشتیبان iTunes کمک به کشف یک فایل ضمیمه شامل آسیب‌پذیری FORCEDENTRY کرد، اما این کد در مرحله‌ی اجرا فایلی را از یک سرور دوردست دانلود کرد. این سرور در هنگام تحلیل آسیب‌پذیری در دسترس نبود. به همین دلیل فرآیند تحلیل بدافزار نتوانست «آسیب‌پذیری را دنبال کند».

در بررسی «عملیات مثلث‌سازی» (Operation Triangulation) ما هدف‌گذاری کردیم که بیشترین اجزای ممکن از زنجیره‌ی آسیب‌پذیری‌ها را بازیابی کنیم. این کار حدود ۶ ماه طول کشید. پس از تکمیل این زنجیره، ما بررسی دقیقی از مراحل شناسایی‌شده را آغاز کردیم. تا کنون ما تحلیل جاسوس‌افزار را تمام کرده و آماده‌ی انتشار جزئیات هستیم.

جاسوس‌افزار TriangleDB زیر ذره‌بین

زنجیره‌ی آلودگی در عملیات مثلث‌سازی

پس از اینکه مهاجمان از طریق یک آسیب‌پذیری در هسته‌ی سیستم عامل، کنترل‌های root را در یک دستگاه iOS بدست آوردند، اقدام به جاگذاری جاسوس‌افزار (که ما آن را TriangleDB نام‌گذاری کرده‌ایم) می‌کنند. جاسوس‌افزار در حافظه جاگذاری می‌شود. این بدان معناست که پس از روشن شدن مجدد دستگاه، تمامی آثار جاسوس‌افزار از بین می‌رود. به همین دلیل اگر قربانی دستگاهش را راه‌اندازی مجدد (reboot) کند مهاجمان برای آلوده کردن مجدد دستگاه باید یک پیام در iMessage با ضمیمه‌ی آلوده ارسال کنند. یعنی باید تمامی زنجیره‌ی آسیب‌پذیری‌ها را مجدداً مورد استفاده قرار دهند. اگر دستگاه راه‌اندازی مجدد نشود، جاسوس‌افزار خود را پس از ۳۰ روز پاک می‌کند، مگر اینکه این مدت توسط مهاجمان تمدید شود.

با TriangleDB آشنا شوید

جاسوس‌افزار TriangleDB به زبان Objective-C نوشته شده است. این زبان نام‌هایی که توسعه‌دهنده برای عناصر و متد‌ها نوشته است را حفظ می‌کند. در فایل دودویی (binary) نام متد‌ها مبهم‌سازی (obfuscation) نشده، اما نام عناصر کلاس‌ها سرواژه‌هایی نامفهوم است که باعث شده نتوان حدسی درباره معنای آن‌ها داشت.

جاسوس‌افزار TriangleDB زیر ذره‌بین

در برخی موارد نیز می‌توان معنای سرواژه‌ها را حدس زد. برای مثال osV نسخه‌ی سیستم عامل iOS است و iME شامل کد IMEI دستگاه می‌باشد.

رشته‌های متنی (string) داخل جاسوس‌افزار نیز به صورت HEX کدگذاری و با روش XOR رمزنگاری شده‌اند:

جاسوس‌افزار TriangleDB زیر ذره‌بین

پیاده‌سازی الگوریتم rolling XOR در جاسوس‌افزار برای رمزگشایی رشته‌ها

ارتباطات فرماندهی و کنترل

جاسوس‌افزار پس از اجرا شدن، با استفاده از کتابخانه‌ی تبادل داده‌ی Protobuf شروع به ارتباط با سرور کنترل و فرماندهی (C۲) می‌کند. در تنظیمات جاسوس‌افزار دو سرور دیده می‌شود: سرور اصلی و سرور کمکی (که در تنظیم‌های IS و ISf قرار دارند). در حالت عادی جاسوس‌افزار از سرور اصلی استفاده می‌کند و اگر با خطا روبه‌رو شود با سرور کمکی ارتباط برقرار می‌کند (به وسیله‌ی فراخواندن متد - [CRConfig swapLpServerType:]).

علاوه‌براین، پیام‌های ارسال و دریافت‌شده با الگوریتم‌های رمزنگاری متقارن (3DES) و نامتقارن (RSA) رمزنگاری می‌شوند. تمامی پیام‌ها از طریق پروتکل HTTPS و با استفاده از درخواست‌های POST تبادل می‌شوند و مقدار کوکی (cookie) نیز برابر است با g و یک رشته‌ی عددی از پارامتر‌های تنظیمی pubKI.

جاسوس‌افزار به صورت دوره‌ای علائم فعال بودن خود (heartbeat beacon) را همراه با دسته‌ای از اطلاعات ارسال می‌کند؛ اطلاعاتی شامل نسخه‌ی جاسوس‌افزار، شناسه‌های دستگاه (شماره سریال، IMEI, MEID و ...) تنظیمات پردازشِ به‌روزرسانی (اینکه آیا امکان دانلود و نصب خودکار به‌روزرسانی‌ها فعال است یا نه).

جاسوس‌افزار TriangleDB زیر ذره‌بینبخشی از پیام اعلام فعال بودنِ بدافزار (نسخه‌ی ۱.۷.۰.۵ بدافزار، اجرا شده روی نسخه‌ی ۱۵.۳.۱ سیستم عامل iOS)

دستورات TriangleDB

سرور کنترل و فرماندهی در پاسخ پیام‌های اعلام فعال بودن، دستوراتی ارسال می‌کند. دستورات به شکل پیام‌های Protobuf ارسال می‌شوند که type name آن‌ها با CRX آغاز می‌شود. معنای این نام‌ها مشخص نیست. برای مثال دستور فهرست کردن دایرکتوری‌ها CRXShowTables و فرمان تغییر آدرس سرور‌های کنترل و فرماندهی CRXConfigureDBServer نام دارد. در مجموع جاسوس‌افزاری که ما تحلیل کردیم ۲۴ دستور مختلف دارد که برای انجام دادن این کار‌ها طراحی شده‌اند:

  • تعامل با فایل‌سیستم (ساختن، دستکاری کردن، سرقت و حذف فایل‌ها)
  • تعامل با سایر پردازش‌ها (فهرست کردن یا بستن آن‌ها)
  • یافتن اطلاعات احراز هویت قربانی که می‌تواند برای سرقت گواهی‌های امنیتی او استفاده شود.
  • دسترسی به موقعیت مکانی قربانی
  • اجرای ماژول‌های دیگر، که فایل‌های اجرایی Mach-O هستند که جاسوس‌افزار آن‌ها را بارگذاری می‌کند. این فایل‌های اجرایی به شکل بازتابی (reflective) بارگذاری می‌شوند و فایل‌های دودویی آن‌ها تنها در حافظه ذخیره می‌شود.

یکی از دستور‌های جالبی که در جاسوس‌افزار کشف کردیم CRXPollRecords نام دارد. این دستور تغییرات در پوشه‌ها را رصد کرده و در فایل‌های دستکاری‌شده به دنبال عبارت‌های RegEx خاصی می‌گردد. برای رصد تغییرات در فایل، یک توصیف‌گر فایل[۲] Unix از دایرکتوری مورد نظر به دست آورده شده و سپس یک اجرا کننده‌ی رویداد[۳] vnode به آن متصل می‌شود. هرگاه جاسوس‌افزار از یک تغییر مطلع می‌شود، اجرا کننده‌ی رویداد به دنبال فایل‌های تغییریافته‌ای که با عبارت RegEx مورد نظر مهاجم انطباق دارند می‌گردد. سپس این فایل‌ها طی یک برنامه‌ی زمانی به سرور فرماندهی و کنترل ارسال می‌شوند.

پارامتر‌های این دستور این‌ها هستند:

جاسوس‌افزار TriangleDB زیر ذره‌بین

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

شناسه‌ی دستور

نام انتخاب‌شده توسط توسعه‌دهنده

توضیح

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 ما جزئیات جالب توجه بسیاری یافتیم:

  • توسعه‌دهندگان از رمزگشایی رشته‌های متنی با نام unmunging استفاده کرده‌اند. متدی که کار رمزگشایی رشته‌ها را انجام می‌دهد + [CRConfig unmungeHexString:] نام دارد.
  • مشاهده کردیم که در کد جاسوس‌افزار به عناصر مختلف برنامه با عناوین و اصطلاحاتی از ساختار پایگاه‌های داده (Database) یاد شده است. به همین دلیل بود که ما پسوند DB را به نام این جاسوس‌افزار (TriangleDB) افزودیم.

جاسوس‌افزار TriangleDB زیر ذره‌بین

  • در هنگام بررسی کد TriangleDB ما متوجه شدیم که کلاس CRConfig (که برای ذخیره‌سازی تنظیمات جاسوس‌افزار استفاده شده) متدی با نام populateWithFieldsMacOSOnly دارد که در هیچ‌کجای کد از آن استفاده نشده است. به هر حال وجود این متد نشان می‌دهد دستگاه‌های macOS نیز می‌توانند با جاسوس‌افزار مشابهی هدف قرار بگیرند.
  • جاسوس‌افزار دسترسی‌های متعددی را از سیستم عامل درخواست می‌کند. بعضی از آن‌ها در کد مورد استفاده قرار نگرفته‌اند، مانند دسترسی به دوربین، میکروفن، دفترچه نشانی‌ها یا ارتباط با سایر دستگاه‌ها از طریق Bluetooth. پس ممکن است قابلیت‌هایی که این دسترسی‌ها به کد می‌دهد در ماژول‌های جانبی جاسوس‌افزار استفاده شود.

بررسی ادامه دارد

کار بررسی TriangleDB که یک جاسوس‌افزار پیچیده iOS با نکات عجیب فراوان بود، تمام شد. ما به تحلیل این کارزار ادامه خواهیم داد و شما را از کلیه‌ی جزئیات این حمله‌ی پیچیده مطلع خواهیم کرد.


پی‌نوشت‌ها:

[۱] در امنیت رایانه‌ای جعبه‌ی شنی (به انگلیسی Sandbox) یک سازوکار حفاظتی برای جدا نگه‌داشتن بعضی نرم‌افزار‌های در حال اجرا در آن واحد با دیگر نرم‌افزارهاست، و اغلب برای اجرای کد‌های تست نشده یا برنامه یا تارنما‌های غیرقابل اعتماد مورد استفاده قرار می‌گیرد، تا خطرات احتمالی سیستم‌عامل یا میزبان را تهدید نکند. (به نقل از ویکی‌پدیای فارسی)

[2] Unix file decriptor

[3] vnode event handler