LANDFALL: جاسوس‌افزار اندرویدی جدید با درجه تجاری در زنجیره اکسپلویت دستگاه‌های سامسونگ

خلاصه اجرایی

محققان Unit 42 خانواده‌ای از جاسوس‌افزارهای اندرویدی را که پیش از این ناشناخته بود، کشف کرده‌اند و ما آن را LANDFALL نام‌گذاری کرده‌ایم. مهاجمان برای توزیع این جاسوس‌افزار از یک آسیب‌پذیری روز-صفر (CVE-2025-21042) در کتابخانه پردازش تصویر اندروید سامسونگ سوءاستفاده کرده‌اند. نقص spezifische که LANDFALL از آن بهره‌برداری کرده، یعنی CVE-2025-21042، یک مورد مجزا نیست، بلکه بخشی از یک الگوی گسترده‌تر از مشکلات مشابه است که در چندین پلتفرم موبایل یافت شده است.

این آسیب‌پذیری پیش از آنکه سامسونگ در آوریل ۲۰۲۵ پس از گزارش حملات واقعی آن را وصله کند، به‌صورت فعال در سطح اینترنت مورد سوءاستفاده قرار می‌گرفت. با این حال، خود اکسپلویت—و جاسوس‌افزار با درجه تجاری که همراه آن استفاده شده—هنوز به‌طور عمومی گزارش و تحلیل نشده‌اند.

LANDFALL در فایل‌های تصویر مخرب (با فرمت DNG) جاسازی شده بود که به نظر می‌رسد از طریق واتس‌اپ ارسال شده‌اند. این روش شباهت زیادی به یک زنجیره اکسپلویت با محوریت اپل و واتس‌اپ دارد که در اوت ۲۰۲۵ توجه‌ها را به خود جلب کرد. همچنین این روش به زنجیره اکسپلویت دیگری شباهت دارد که احتمالاً با استفاده از یک آسیب‌پذیری روز-صفر مشابه (CVE-2025-21043) که در سپتامبر افشا شد، رخ داده است. تحقیقات ما هیچ آسیب‌پذیری ناشناخته‌ای را در واتس‌اپ شناسایی نکرد.

نکته مهم این است که یافته ما پیش از این افشاگری‌ها به دست آمده است—کمپین LANDFALL از اواسط سال ۲۰۲۴ فعال بود و ماه‌ها قبل از رفع آسیب‌پذیری روز-صفر اندروید/سامسونگ (CVE-2025-21042) از آن استفاده می‌کرد.

این آسیب‌پذیری از آوریل ۲۰۲۵ وصله شده است، بنابراین هیچ خطر فعالی کاربران کنونی سامسونگ را تهدید نمی‌کند. در ماه سپتامبر نیز سامسونگ آسیب‌پذیری روز-صفر دیگری (CVE-2025-21043) را در همان کتابخانه پردازش تصویر وصله کرد تا محافظت در برابر این نوع حملات را بیشتر تقویت کند.

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

یافته‌های کلیدی:

  • LANDFALL یک جاسوس‌افزار اندرویدی است که به‌طور خاص برای دستگاه‌های Samsung Galaxy طراحی شده و در فعالیت‌های نفوذ هدفمند در خاورمیانه استفاده شده است.
  • LANDFALL امکان نظارت جامع، از جمله ضبط صدا از میکروفون، ردیابی موقعیت مکانی و جمع‌آوری عکس‌ها، مخاطبین و گزارش تماس‌ها را فراهم می‌کرد.
  • این جاسوس‌افزار از طریق فایل‌های تصویر DNG دستکاری‌شده و با بهره‌برداری از CVE-2025-21042—یک آسیب‌پذیری روز-صفر حیاتی در کتابخانه پردازش تصویر سامسونگ که به‌صورت فعال مورد سوءاستفاده قرار گرفته بود—توزیع می‌شود.
  • زنجیره اکسپلویت احتمالاً شامل توزیع بدون کلیک (zero-click) با استفاده از تصاویر مخرب بوده است، شبیه به زنجیره‌های اکسپلویت اخیر در iOS و Samsung Galaxy.
  • این کمپین در زیرساخت و الگوهای عملیاتی با عملیات‌های جاسوس‌افزاری تجاری در خاورمیانه اشتراکاتی دارد که نشان‌دهنده ارتباط احتمالی با عوامل تهاجمی بخش خصوصی (PSOAs) است.
  • LANDFALL برای ماه‌ها فعال و ناشناخته باقی مانده بود.

مشتریان Palo Alto Networks از طریق محصولات و خدمات زیر محافظت بهتری دریافت می‌کنند:

  • Advanced WildFire
  • Advanced URL Filtering
  • Advanced DNS Security
  • Advanced Threat Prevention

اگر فکر می‌کنید امنیت شما به خطر افتاده یا با یک مورد فوری مواجه هستید، با تیم واکنش به رخداد Unit 42 تماس بگیرید.

موضوعات مرتبط در Unit 42 سامسونگ، آسیب‌پذیری‌ها

کشف جاسوس‌افزار LANDFALL

در اواسط سال ۲۰۲۵، پس از افشای عمومی یک زنجیره اکسپلویت که دستگاه‌های iOS را هدف قرار داده بود، ما به جستجوی نمونه‌هایی از اکسپلویت iOS پرداختیم. این جستجو به کشف جاسوس‌افزار اندرویدی منجر شد که ما آن را LANDFALL نامیدیم.

به‌طور مشخص، Unit 42 چندین نمونه از فایل‌های تصویر DNG حاوی جاسوس‌افزار اندرویدی را کشف کرد که در یک زنجیره اکسپلویت دستگاه‌های Samsung Galaxy را هدف قرار داده بودند. تحلیل ما تأیید کرد که این نمونه‌ها با بهره‌برداری از آسیب‌پذیری CVE-2025-21042، جاسوس‌افزار LANDFALL را، احتمالاً از طریق اکسپلویت‌های بدون کلیک در اپلیکیشن‌های پیام‌رسان، توزیع می‌کنند.

آغاز جستجو: زنجیره اکسپلویت iOS و پرسش‌هایی که برای ما ایجاد کرد

در اوت ۲۰۲۵، اپل به‌روزرسانی‌های امنیتی سیستم‌عامل خود را برای محصولات مختلف منتشر کرد تا آسیب‌پذیری روز-صفر CVE-2025-43300 را که بر پردازش تصاویر DNG تأثیر می‌گذاشت و طبق گزارش‌ها توسط مهاجمان به‌صورت فعال مورد سوءاستفاده قرار گرفته بود، برطرف کند.

در همان ماه، واتس‌اپ یک آسیب‌پذیری روز-صفر با شناسه CVE-2025-55177 را گزارش داد که در حملات پیچیده علیه دستگاه‌های iOS، با آسیب‌پذیری پردازش تصویر پلتفرم‌های اپل زنجیر شده بود. آسیب‌پذیری واتس‌اپ به مهاجمان اجازه می‌داد تا دستگاه‌ها را مجبور به پردازش محتوا از URLهای دلخواه کنند.

هنگامی که این دو آسیب‌پذیری در یک زنجیره اکسپلویت ترکیب شدند، امکان اجرای کد از راه دور بدون کلیک (zero-click) را از طریق تصاویر مخربی که از طریق پیام‌های واتس‌اپ ارسال می‌شدند، فراهم کردند.

با توجه به افشای این زنجیره اکسپلویت فعال و عدم وجود نمونه‌های عمومی از آن، ما جستجویی را برای یافتن این فعالیت آغاز کردیم. جستجوی ما به کشف چندین فایل تصویر DNG که پیش از این شناسایی نشده بودند و حاوی جاسوس‌افزار اندرویدی جاسازی‌شده بودند، منجر شد. این فایل‌ها در طول سال ۲۰۲۴ و اوایل ۲۰۲۵ در VirusTotal آپلود شده بودند.

با قضاوت بر اساس نام فایل‌ها (مانند WhatsApp Image 2025-02-10 at 4.54.17 PM.jpeg و IMG-20240723-WA0000.jpg)، مهاجمان احتمالاً این نمونه‌ها را از طریق واتس‌اپ توزیع کرده‌اند. تحلیل ما از جاسوس‌افزار جاسازی‌شده نشان می‌دهد که برای دستگاه‌های Samsung Galaxy طراحی شده است.

فایل‌های تصویر DNG دستکاری‌شده: روندی جدید در بردارهای حمله

تحلیل ما از جاسوس‌افزار LANDFALL با کشف فایل‌های تصویر DNG دستکاری‌شده آغاز شد. DNG مخفف Digital Negative است و یک فرمت فایل تصویر خام مبتنی بر فرمت TIFF است. فایل‌های DNG دستکاری‌شده‌ای که ما کشف کردیم، دارای یک آرشیو ZIP جاسازی‌شده هستند که به انتهای فایل ضمیمه شده است. شکل ۱ یکی از این نمونه‌ها را در یک ویرایشگر هگزادسیمال نشان می‌دهد و محل شروع محتوای آرشیو ZIP را در نزدیکی انتهای فایل مشخص می‌کند.

اسکرین‌شاتی از یک نمایشگر هگزادسیمال که محتوای یک فایل تصویر واتس‌اپ با نام «WhatsApp Image 2025-02-10 at 4.54.17 PM.jpeg» را نشان می‌دهد و به شروع یک آرشیو ZIP جاسازی‌شده در داده‌های فایل اشاره می‌کند.
شکل ۱. نمونه‌ای از یک فایل تصویر DNG دستکاری‌شده با یک آرشیو ZIP جاسازی‌شده.

تحلیل ما نشان می‌دهد که این فایل‌های DNG از آسیب‌پذیری CVE-2025-21042 سوءاستفاده می‌کنند؛ این آسیب‌پذیری در کتابخانه پردازش تصویر سامسونگ به نام libimagecodec.quram.so وجود داشت و سامسونگ آن را در آوریل ۲۰۲۵ وصله کرد. اکسپلویت، فایل‌های کتابخانه اشتراکی (.so) را از آرشیو ZIP جاسازی‌شده استخراج می‌کند تا جاسوس‌افزار LANDFALL را اجرا کند. شکل ۲ در زیر، فلوچارت این جاسوس‌افزار را نشان می‌دهد.

فلوچارت توصیف‌کننده جاسوس‌افزار اندرویدی LANDFALL. این فرآیند با یک فایل تصویر dng. دستکاری‌شده که حاوی یک آرشیو zip. جاسازی‌شده است، آغاز می‌شود. این آرشیو شامل یک جزء بارگذار و یک فایل فشرده XZ است. این امر منجر به استخراج اجزای اضافی و یک فایل از حالت فشرده خارج‌شده برای دستکاری خط‌مشی SELinux می‌شود.
شکل ۲. فلوچارت جاسوس‌افزار LANDFALL.

جدول ۱ نمونه‌های فایل تصویر DNG را که ما کشف کردیم، نشان می‌دهد.

هش SHA256 نام فایل اولین مشاهده
9297888746158e38d320b05b27b0032b2cc29231be8990d87bc46f1e06456f93 WhatsApp Image 2025-02-10 at 4.54.17 PM.jpeg ۱۰ فوریه ۲۰۲۵
b06dec10e8ad0005ebb9da24204c96cb2e297bd8d418bc1c8983d066c0997756 IMG-20250120-WA0005.jpg ۲۰ ژانویه ۲۰۲۵
c0f30c2a2d6f95b57128e78dc0b7180e69315057e62809de1926b75f86516b2e WhatsApp Image 2024-08-27 at 11.48.40 AM.jpeg ۲۷ اوت ۲۰۲۴
b975b499baa3119ac5c2b3379306d4e50b9610e9bba3e56de7dfd3927a96032d PHOTO-2024-08-27-11-48-41.jpg ۲۷ اوت ۲۰۲۴
29882a3c426273a7302e852aa77662e168b6d44dcebfca53757e29a9cdf02483 IMG-20240723-WA0001.jpg ۲۳ ژوئیه ۲۰۲۴
b45817ffb0355badcc89f2d7d48eecf00ebdf2b966ac986514f9d971f6c57d18 IMG-20240723-WA0000.jpg ۲۳ ژوئیه ۲۰۲۴

جدول ۱. فایل‌های DNG حاوی بدافزار جاسازی‌شده.

وجود رشته‌هایی مانند WhatsApp Image و WA000 در نام فایل‌ها نشان می‌دهد که مهاجمان احتمالاً تلاش کرده‌اند جاسوس‌افزار اندرویدی جاسازی‌شده را از طریق واتس‌اپ توزیع کنند. این موضوع با گزارش‌های عمومی قبلی درباره بهره‌برداری مشابه مبتنی بر تصاویر DNG از طریق واتس‌اپ که دستگاه‌های اپل را هدف قرار داده بود، مطابقت دارد. علاوه بر این، محققان واتس‌اپ آسیب‌پذیری مشابهی مرتبط با DNG به نام CVE-2025-21043 را شناسایی و به سامسونگ گزارش کردند.

توزیع جاسوس‌افزار LANDFALL: زنجیره‌های اکسپلویت بدافزارهای دستگاه‌های موبایل

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

ما هنوز اکسپلویت‌های بیشتری را که با این فعالیت مرتبط باشند، کشف نکرده‌ایم.

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

تحلیل جاسوس‌افزار LANDFALL

LANDFALL یک جاسوس‌افزار اندرویدی است که به‌طور خاص برای دستگاه‌های Samsung Galaxy طراحی شده و احتمالاً در فعالیت‌های نفوذ هدفمند در خاورمیانه استفاده می‌شود. این جاسوس‌افزار ماژولار برای جاسوسی و استخراج داده مهندسی شده است.

زنجیره آلودگی LANDFALL شامل یک اکسپلویت برای CVE-2025-21042 است؛ این آسیب‌پذیری در کتابخانه پردازش تصویر سامسونگ قرار دارد و توسط این شرکت با شناسه SVE-2024-1969 (Samsung Vulnerabilities and Exposures) ردیابی می‌شود. ما معتقدیم که یک زنجیره حمله کامل از الگوی اجرای کد از راه دورِ بالقوه بدون کلیک (zero-click) پیروی می‌کند که با ارسال تصاویر DNG دستکاری‌شده آغاز می‌شود.

دو جزء از جاسوس‌افزار LANDFALL در داخل تصاویر DNG دستکاری‌شده جاسازی شده‌اند و پس از یک اکسپلویت موفق، استخراج و اجرا می‌شوند:

  • بارگذار (b.so): یک فایل اشتراکی ARM64 ELF (با حجم ۱۰۶ کیلوبایت، stripped و با پیوند پویا) که به عنوان درِ پشتی (backdoor) اصلی عمل می‌کند.
  • دستکاری‌کننده خط‌مشی SELinux (l.so): این جزء که از یک فایل باینری ELF فشرده‌شده با XZ استخراج می‌شود، برای دستکاری خط‌مشی SELinux دستگاه طراحی شده تا به LANDFALL مجوزهای سطح بالا اعطا کرده و به ماندگاری آن کمک کند. (به پیوست A – دستکاری خط‌مشی SELinux مراجعه کنید.)

جدول ۲ فایل‌های اجزای LANDFALL را که در نمونه‌های DNG مخرب جاسازی شده‌اند، نشان می‌دهد.

هش SHA256 جزء LANDFALL اولین مشاهده
ffeeb0356abb56c5084756a5ab0a39002832403bca5290bb6d794d14b642ffe2 جزء b.so ۲۳ ژوئیه ۲۰۲۴
d2fafc7100f33a11089e98b660a85bd479eab761b137cca83b1f6d19629dd3b0 جزء b.so ۲۷ اوت ۲۰۲۴
a62a2400bf93ed84ebadf22b441924f904d3fcda7d1507ba309a4b1801d44495 جزء b.so ۲۳ ژانویه ۲۰۲۵
384f073d3d51e0f2e1586b6050af62de886ff448735d963dfc026580096d81bd جزء b.so ۱۰ فوریه ۲۰۲۵
211311468f3673f005031d5f77d4d716e80cbf3c1f0bb1f148f2200920513261 فایل فشرده XZ (l) برای دستکاری‌کننده خط‌مشی SELinux ۲۳ ژوئیه ۲۰۲۴
69cf56ac6f3888efa7a1306977f431fd1edb369a5fd4591ce37b72b7e01955ee دستکاری‌کننده خط‌مشی SELinux (l.so) استخراج‌شده از فایل فشرده XZ ۲۳ ژوئیه ۲۰۲۴

جدول ۲. اجزای LANDFALL جاسازی‌شده در فایل‌های تصویر DNG.

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

تحلیل ما بر روی جزء b.so متمرکز است که به عنوان بارگذار اولیه برای یک چارچوب گسترده‌تر LANDFALL عمل می‌کند. این جزء در آرتیفکت‌های دیباگ خود، به خودش با عنوان «Bridge Head» اشاره می‌کند. این موضوع در ادامه، زمانی که به بحث درباره ارتباط احتمالی بین LANDFALL و گروه‌های جاسوس‌افزاری شناخته‌شده می‌پردازیم، حائز اهمیت خواهد بود.

قابلیت‌های بالقوه LANDFALL

جزء b.so از LANDFALL شامل رشته‌های دیباگ و وضعیت متعددی است، اما منطقی که به بیشتر این رشته‌ها ارجاع دهد را در خود ندارد. این نشان می‌دهد که b.so اجزای اضافی را برای این قابلیت‌ها دانلود می‌کند. تحلیل ما از رشته‌های فرمان جاسازی‌شده و مسیرهای اجرایی در فایل b.so، بینشی در مورد قابلیت‌های بالقوه گسترده‌تر LANDFALL ارائه می‌دهد.

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

  • نسخه سیستم‌عامل
  • شناسه سخت‌افزار (IMEI)
  • شناسه سیم‌کارت/مشترک (IMSI)
  • شماره سریال سیم‌کارت
  • حساب کاربری
  • شماره پست صوتی
  • پیکربندی شبکه
  • تهیه فهرستی از اپلیکیشن‌های نصب‌شده
  • دسترسی به خدمات موقعیت‌یابی
  • وضعیت VPN
  • وضعیت دیباگ USB
  • بلوتوث

استخراج داده

  • ضبط صدا از میکروفون
  • ضبط تماس‌ها
  • تاریخچه تماس‌ها
  • پایگاه داده مخاطبین
  • داده‌های پیامک/پیام‌رسان
  • عکس‌های دوربین
  • فایل‌های دلخواه
  • پایگاه‌های داده روی دستگاه (تاریخچه مرورگر و غیره)

اجرا، بارگذاری و ماندگاری

  • بارگذاری ماژول‌های اشتراکی نیتیو (.so)
  • بارگذاری و اجرای فایل‌های DEX از حافظه و دیسک
  • تزریق به فرآیندها
  • اجرا از طریق LD_PRELOAD
  • اجرای دستورات دلخواه
  • دستکاری SELinux
  • ماندگاری
  • تغییر خط‌مشی SELinux از طریق باینری فشرده
  • نظارت بر پوشه رسانه‌های واتس‌اپ برای دریافت پی‌لودهای اضافی
  • ثبت کلاینت وب واتس‌اپ
  • دستکاری سیستم فایل در پوشه‌های اپلیکیشن‌های اندروید
  • دستکاری سیستم فایل

گریز و دور زدن مکانیزم‌های دفاعی

  • تشخیص دیباگر TracerPid
  • تشخیص فریم‌ورک ابزار دقیق Frida
  • تشخیص فریم‌ورک Xposed
  • بارگذاری پویا کتابخانه با دستکاری فضای نام (namespace)
  • پین کردن گواهی (Certificate pinning) برای ارتباطات C2
  • پاک‌سازی پی‌لود تصاویر واتس‌اپ

مدل‌های دستگاه هدف

  • سری Galaxy S23 (S91[168]BXX.*)
  • سری Galaxy S24 (S921BXXU1AWM9, S92[168]BXX.*)
  • Galaxy Z Fold4 (F936BXXS4DWJ1)
  • Galaxy S22 (S901EXXS4CWD1)
  • Galaxy Z Flip4 (F721BXXU1CWAC)

شکل ۳ نمونه‌ای از رشته‌های مدل‌های دستگاه هدف را در یک نمونه b.so از LANDFALL نشان می‌دهد.

اسکرین‌شاتی از صفحه کامپیوتر که نرم‌افزار ویرایشگر هگزادسیمال را با مقادیر هگزادسیمال و کاراکترهای ASCII مربوطه نمایش می‌دهد. یک بخش در یک کادر قرمز رنگ هایلایت شده است.
شکل ۳. نمونه b.so از LANDFALL در یک ویرایشگر هگزادسیمال که شماره مدل‌های دستگاه‌های هدف را نشان می‌دهد.

ارتباط با سرور فرمان و کنترل (C2)

جزء b.so از LANDFALL با سرور فرمان و کنترل (C2) خود از طریق HTTPS و با استفاده از یک پورت TCP غیر استاندارد و موقت ارتباط برقرار می‌کند. قبل از ترافیک HTTPS، می‌تواند ترافیک پینگ را همان‌طور که در بخش «ارتباط با سرور C2» در پیوست B توضیح داده شده، آغاز کند. برای ترافیک HTTPS، b.so با یک درخواست POST که حاوی اطلاعات دقیق دستگاه و جاسوس‌افزار است، تماس را آغاز می‌کند، مانند:

  • شناسه عامل (Agent ID)
  • مسیر دستگاه (Device path)
  • شناسه کاربر (User ID)

شکل ۴ تفسیری از این درخواست POST اولیه را نشان می‌دهد، که در آن از curl برای نمایش ساختار این درخواست استفاده کرده‌ایم. لازم به ذکر است که LANDFALL برای تولید این ترافیک از curl استفاده نمی‌کند.

اسکرین‌شاتی از یک پنجره ترمینال که یک دستور curl را برای دسترسی به یک API نشان می‌دهد، با هدرهای مختلفی مانند user-agent و content-type که مشخص شده‌اند.
شکل ۴. ساختار درخواست HTTP POST هنگام تماس اولیه b.so با سرور C2.

ترافیک اولیه بیکن (beacon) یک درخواست HTTP POST به سرور C2 با پارامترهای زیر است:

  • protocol: نسخه پروتکل (مثلاً A1.5.0)
  • protocol_ver: نسخه پروتکل (مثلاً “”)
  • type: نوع پیام (مثلاً MSG_TYPE_GET_AGENT)
  • agent_id: شناسه منحصربه‌فرد عامل
  • upload_id: شناسه آپلود
  • command_id: شناسه فرمان
  • source: منبع درخواست (مثلاً bridge_head)
  • incremental_build: نسخه ساخت افزایشی (مثلاً v1.5.0)
  • euid: شناسه کاربری مؤثر (effective user ID) فرآیند
  • bh_path: مسیر فایل باینری b.so روی دستگاه
  • runner: حالت اجراکننده (مثلاً I)

پیکربندی فایل b.so

پیکربندی فایل b.so از طریق ترکیبی از مقادیر پیش‌فرض هاردکد شده و یک شیء JSON رمزگذاری‌شده که در داخل خود فایل جاسازی شده، مدیریت می‌شود. این پیکربندی شامل جزئیات C2، کلیدهای رمزنگاری و شناسه‌های منحصربه‌فرد برای عامل و دستورات است.

شکل ۵ نمونه‌ای از این پیکربندی را نشان می‌دهد.

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

این جزء b.so از LANDFALL همچنین شامل تعدادی مقدار پیکربندی هاردکد شده است. این مقادیر به عنوان مقادیر پیش‌فرض استفاده می‌شوند، مگر اینکه در شیء JSON رمزگذاری‌شده مقادیر دیگری ارائه شده باشد. ما هنوز به طور کامل هدف برخی از این مقادیر را درک نکرده‌ایم. جدول ۳ این مقادیر پیکربندی پیش‌فرض هاردکد شده را نشان می‌دهد.

نام فیلد مقدار پیش‌فرض
allow_wifi true
allow_mobile true
allow_roaming false
socket_timeout 5
sleep_time 60 (0x3c)
sleep_time_between_retries 35 (0x23)
suicide_time 7200 (0x1c20)
live_mode_expiration 0
allow_min_battery 0
is_persistent false

جدول ۳. مقادیر پیکربندی پیش‌فرض هاردکد شده برای بدافزار LANDFALL.

زیرساخت فرمان و کنترل (C2) برای جاسوس‌افزار LANDFALL

بر اساس تحلیل ما از این نمونه‌ها، شش سرور فرمان و کنترل (C2) برای LANDFALL شناسایی کردیم که در جدول ۴ در زیر نشان داده شده‌اند.

آدرس IP دامنه اولین مشاهده آخرین مشاهده
194.76.224[.]127 brightvideodesigns[.]com ۷ فوریه ۲۰۲۵ ۱۹ سپتامبر ۲۰۲۵
91.132.92[.]35 hotelsitereview[.]com ۳ فوریه ۲۰۲۵ ۱۶ سپتامبر ۲۰۲۵
92.243.65[.]240 healthyeatingontherun[.]com ۱۱ اکتبر ۲۰۲۴ ۲ سپتامبر ۲۰۲۵
192.36.57[.]56 projectmanagerskills[.]com ۳ فوریه ۲۰۲۵ ۲۶ اوت ۲۰۲۵
46.246.28[.]75 ناشناخته ناشناخته ناشناخته
45.155.250[.]158 ناشناخته ناشناخته ناشناخته

جدول ۴. سرورهای C2 مربوط به LANDFALL.

جایگاه LANDFALL در تصویر بزرگ‌تر

LANDFALL یکی از نمونه‌های یک الگوی گسترده‌تر از زنجیره‌های اکسپلویت است که دستگاه‌های موبایل را تحت تأثیر قرار می‌دهد و به آسیب‌پذیری‌های پردازش تصویر DNG مرتبط است.

استفاده کمپین LANDFALL از یک فایل DNG دستکاری‌شده، یک بردار حمله مهم و تکرارشونده را برجسته می‌کند: هدف قرار دادن آسیب‌پذیری‌ها در کتابخانه‌های پردازش تصویر DNG. نقص خاصی که LANDFALL از آن بهره‌برداری کرده، یعنی CVE-2025-21042، یک مورد مجزا نیست، بلکه بخشی از یک الگوی گسترده‌تر از مشکلات مشابه است که در چندین پلتفرم موبایل یافت شده است. در واقع، در اوایل سال ۲۰۲۵، سامسونگ نقص دیگری در همان کتابخانه سامسونگ با شناسه CVE-2025-21043 را شناسایی کرد و زنجیره اکسپلویت موازی در iOS نیز شناسایی شد که از CVE-2025-43300 در iOS اپل و CVE-2025-55177 در واتس‌اپ بهره می‌برد.

ارتباط با CVE-2025-21043 (SVE-2025-1702)

تحلیل ما ارتباط احتمالی با یک آسیب‌پذیری جداگانه در همان کتابخانه، یعنی CVE-2025-21043 (SVE-2025-1702)، را نشان داد که سامسونگ آن را در به‌روزرسانی امنیتی سپتامبر ۲۰۲۵ خود وصله کرد. اگرچه در نمونه‌های LANDFALL که ما کشف کردیم از آن سوءاستفاده نشده بود، شباهت‌های بین اکسپلویت LANDFALL (CVE-2025-21042) و این آسیب‌پذیری (CVE-2025-21043) قابل توجه است. هر دو آسیب‌پذیری تقریباً در یک زمان به‌طور عمومی افشا شدند و هر دو به پردازش فایل‌های تصویر DNG که از طریق اپلیکیشن‌های ارتباطی موبایل ارسال می‌شوند، مرتبط هستند.

آسیب‌پذیری CVE-2025-43300 اپل

در اوت ۲۰۲۵، اپل آسیب‌پذیری روز-صفر CVE-2025-43300 را که بر پردازش تصاویر DNG تأثیر می‌گذاشت و به‌صورت فعال در سطح اینترنت مورد سوءاستفاده قرار گرفته بود، برطرف کرد تا امکان اجرای کد از راه دور بدون کلیک را از طریق تصاویر مخربی که از طریق اپلیکیشن‌های ارتباطی موبایل ارسال می‌شدند، از بین ببرد.

ما نمی‌توانیم تأیید کنیم که آیا این زنجیره برای توزیع نسخه‌ای معادل LANDFALL برای iOS استفاده شده است یا اینکه آیا همان عامل تهدید در پشت هر دو حمله قرار دارد. با این حال، این توسعه موازی در اکوسیستم iOS، همراه با افشای آسیب‌پذیری‌های سامسونگ و اپل با فاصله تنها چند هفته، الگوی گسترده‌تری از بهره‌برداری از آسیب‌پذیری‌های پردازش تصویر DNG در حملات جاسوس‌افزاری پیچیده موبایل را برجسته می‌کند.

نمودار زمانی که رویدادهای مهم امنیت سایبری از سال ۲۰۲۴ تا ۲۰۲۵ را با حضور نهادهایی مانند VirusTotal، سامسونگ، اپل و واتس‌اپ نشان می‌دهد. رویدادهای کلیدی شامل کشف یک فایل DNG مخرب در VirusTotal در ژوئیه ۲۰۲۴ و به‌روزرسانی‌ها و وصله‌های مختلف توسط سامسونگ و اپل در پاسخ به آسیب‌پذیری‌های مختلف است. بازه زمانی از ژوئیه ۲۰۲۴ تا سپتامبر ۲۰۲۵ را پوشش می‌دهد.
شکل ۶. جدول زمانی فایل‌های تصویر DNG مخرب اخیر و فعالیت‌های اکسپلویت مرتبط.
  • ژوئیه ۲۰۲۴ – فوریه ۲۰۲۵: نمونه‌های اولیه فایل‌های تصویر DNG مخرب حاوی LANDFALL برای اولین بار در ژوئیه ۲۰۲۴ در VirusTotal ثبت می‌شوند و نمونه‌های اضافی به صورت دوره‌ای طی چند ماه بعد ظاهر می‌شوند.
    • فایل‌های DNG از یک آسیب‌پذیری در کتابخانه پردازش تصویر اندروید سامسونگ (SVE-2024-1969, CVE-2025-21042) سوءاستفاده می‌کنند.
  • ۲۵ سپتامبر ۲۰۲۴: آسیب‌پذیری به‌صورت خصوصی به سامسونگ گزارش می‌شود.
  • آوریل ۲۰۲۵: سامسونگ یک به‌روزرسانی فرم‌ور برای رفع آسیب‌پذیری SVE-2024-1969 منتشر می‌کند که بعداً با افشای عمومی به CVE-2025-21042 شناخته شد.
  • اوت ۲۰۲۵: تحولات موازی رخ می‌دهد.
    • اپل یک آسیب‌پذیری روز-صفر را که بر پردازش تصاویر DNG تأثیر می‌گذارد و به‌صورت فعال مورد سوءاستفاده قرار گرفته بود، وصله می‌کند (CVE-2025-43300).
    • واتس‌اپ آسیب‌پذیری (CVE-2025-55177) را افشا می‌کند که با آسیب‌پذیری روز-صفر پردازش تصویر DNG اپل (CVE-2025-43300) زنجیر شده بود.
    • ما فایل‌های تصویر DNG را کشف کردیم که با بهره‌برداری از CVE-2025-21042، جاسوس‌افزار اندرویدی را که ما آن را LANDFALL نامیدیم، توزیع می‌کردند.
    • واتس‌اپ به سامسونگ آسیب‌پذیری CVE-2025-21043 را افشا کرد—یک آسیب‌پذیری روز-صفر دیگر مرتبط با DNG در دستگاه‌های Samsung Galaxy.
  • سپتامبر ۲۰۲۵: سامسونگ به‌روزرسانی‌های فرم‌ور دستگاه‌های موبایل را برای CVE-2025-21043 (SVE-2025-1702) منتشر می‌کند. همزمان، شناسه CVE-2025-21042 (SVE-20254-1969) را به آسیب‌پذیری قبلی که پیش از این شناسه CVE نداشت، اختصاص می‌دهد.

قربانیان احتمالی

تحلیل داده‌های ارسالی به VirusTotal برای فایل‌های DNG مخرب، اهداف احتمالی را در عراق، ایران، ترکیه و مراکش نشان می‌دهد.

مرکز ملی CERT ترکیه (به ترکی، USOM) آدرس‌های IP مورد استفاده توسط سرورهای C2 جاسوس‌افزار LANDFALL را به عنوان مخرب، مرتبط با موبایل و APT گزارش کرده است، که این موضوع نیز احتمال هدف قرار گرفتن قربانیان در ترکیه را تأیید می‌کند.

ارتباط با گروه‌های جاسوس‌افزاری شناخته‌شده

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

چنین ابزارهایی اغلب به عنوان جاسوس‌افزار تجاری توسعه یافته و فروخته می‌شوند و به گروه‌هایی به نام عوامل تهاجمی بخش خصوصی (PSOAs) نسبت داده می‌شوند که اغلب نهادهای قانونی هستند. طبق گزارش‌ها، این گروه‌ها به نهادهای دولتی خدمات ارائه می‌دهند.

ما در این زمان نتوانستیم فعالیت LANDFALL را به طور رسمی به یک PSOA یا عامل تهدید شناخته‌شده نسبت دهیم. Unit 42 فعالیت‌های مرتبط با CVE-2025-21042 و LANDFALL را با شناسه CL-UNK-1054 ردیابی می‌کند.

دو جنبه قابل توجه و شایسته تأکید هستند.

اول، زیرساخت C2 و الگوهای ثبت دامنه LANDFALL شباهت‌هایی با زیرساخت مرتبط با Stealth Falcon دارد که توسط Unit 42 مشاهده شده است. این شباهت‌ها بر اساس گزارش‌های عمومی مختلف و همچنین فعالیت Stealth Falcon است که ما برای اهدافی در خاورمیانه تحلیل کرده‌ایم.

دوم، جزء جاسوس‌افزاری که ما تحلیل کردیم، در آرتیفکت‌های دیباگ خود، به خودش با عنوان «Bridge Head» اشاره می‌کند. قابل ذکر است که اصطلاح Bridge Head یک نام مستعار رایج است که توسط برخی شرکت‌های سایبری تهاجمی بخش خصوصی (از جمله NSO، Variston [PDF]، Cytrox و Quadream) برای بارگذارهای مرحله اول استفاده می‌شود. با این حال، این قرارداد نام‌گذاری به تنهایی یک پیوند انتساب مستقیم را تشکیل نمی‌دهد.

در حالی که این یک نام رایج در جاسوس‌افزارهای تجاری موبایل برای توصیف بارگذارها است، اما شباهت‌هایی با چارچوب Heliconica دارد. این چارچوب نیز شامل ارجاعاتی به «BridgeHead» است، همان‌طور که Google TAG در مورد فروشنده جاسوس‌افزار Variston گزارش داده است. گوگل Variston را به عنوان یک PSOA (ارائه‌دهنده اکسپلویت‌ها) مستقر در بارسلون شناسایی کرد. تحلیل‌های بیشتر از سوی گوگل و گزارش‌های دیگر نشان داد که ابزارهای Variston از طریق یک فروشنده به نام Protect Electronic Systems (یا Protected AE) به مشتریان در امارات متحده عربی عرضه می‌شد.

این ارتباط بالقوه ارائه‌دهنده-مشتری با امارات متحده عربی قابل توجه است، زیرا مایکروسافت و دیگران گزارش داده‌اند که Stealth Falcon نیز به شدت از آن کشور فعالیت می‌کند. طبق گزارش‌ها، Variston در اوایل سال ۲۰۲۵ پس از افشای عمومی فعالیت‌های خود، عملیاتش را متوقف کرد.

تا اکتبر ۲۰۲۵، به جز در زیرساخت، ما همپوشانی مستقیمی بین کمپین‌های موبایلی LANDFALL و فعالیت‌های مبتنی بر اندپوینت Stealth Falcon، و همچنین پیوندهای قوی و مستقیمی با Stealth Falcon مشاهده نکرده‌ایم. با این حال، این شباهت‌ها ارزش بحث را دارند.

نتیجه‌گیری

کشف جاسوس‌افزار LANDFALL از یک کمپین هدفمند علیه دستگاه‌های اندرویدی سامسونگ پرده برمی‌دارد. زنجیره اکسپلویت شامل CVE-2025-21042 است، آسیب‌پذیری‌ای که توسط سامسونگ در آوریل ۲۰۲۵ وصله شد. وجود این جاسوس‌افزار در فایل‌های تصویری DNG با نام‌گذاری‌های مرتبط با واتس‌اپ، احتمالاً نشان‌دهنده تلاش مهاجمان برای توزیع اکسپلویت از طریق یک اپلیکیشن پیام‌رسان است.

از زمان ظهور اولین نمونه‌ها در ژوئیه ۲۰۲۴، این فعالیت نشان می‌دهد که چگونه اکسپلویت‌های پیچیده می‌توانند برای مدت طولانی در مخازن عمومی باقی بمانند تا اینکه به‌طور کامل درک شوند.

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

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

مشتریان Palo Alto Networks از طریق محصولات زیر در برابر جاسوس‌افزار اندرویدی LANDFALL محافظت بهتری دارند:

  • مدل‌های یادگیری ماشین و تکنیک‌های تحلیلی Advanced WildFire با توجه به شاخص‌های به اشتراک گذاشته شده در این تحقیق، بازبینی و به‌روزرسانی شده‌اند.
  • Advanced URL Filtering و Advanced DNS Security دامنه‌ها و URLهای شناخته‌شده مرتبط با این فعالیت را به عنوان مخرب شناسایی می‌کنند.
  • Advanced Threat Prevention دارای یک سیستم تشخیص مبتنی بر یادگیری ماشین است که می‌تواند اکسپلویت‌ها را در لحظه شناسایی کند.

اگر فکر می‌کنید ممکن است مورد نفوذ قرار گرفته باشید یا با یک موضوع فوری مواجه هستید، با تیم واکنش به رخداد Unit 42 تماس بگیرید یا با شماره‌های زیر تماس حاصل فرمایید:

  • آمریکای شمالی: شماره رایگان: +1 (866) 486-4842 (866.4.UNIT42)
  • بریتانیا: +44.20.3743.3660
  • اروپا و خاورمیانه: +31.20.299.3130
  • آسیا: +65.6983.8730
  • ژاپن: +81.50.1790.0200
  • استرالیا: +61.2.4062.7950
  • هند: 000 800 050 45107

شرکت Palo Alto Networks این یافته‌ها را با اعضای همکار خود در Cyber Threat Alliance (CTA) به اشتراک گذاشته است. اعضای CTA از این اطلاعات برای استقرار سریع حفاظت برای مشتریان خود و برای ایجاد اختلال سیستماتیک در فعالیت‌های بازیگران سایبری مخرب استفاده می‌کنند. درباره Cyber Threat Alliance بیشتر بدانید.

شاخص‌های نفوذ (Indicators of Compromise)

نمونه‌های بدافزار

فهرستی از نمونه‌های بدافزار برای فعالیت LANDFALL در جدول ۷ در زیر آورده شده است.

هش SHA256 نام فایل حجم
b06dec10e8ad0005ebb9da24204c96cb2e297bd8d418bc1c8983d066c0997756 img-20250120-wa0005.jpg 6.66 مگابایت
c0f30c2a2d6f95b57128e78dc0b7180e69315057e62809de1926b75f86516b2e 2.tiff 6.58 مگابایت
9297888746158e38d320b05b27b0032b2cc29231be8990d87bc46f1e06456f93 whatsapp image 2025-02-10 at 4.54.17 pm.jpeg 6.66 مگابایت
d2fafc7100f33a11089e98b660a85bd479eab761b137cca83b1f6d19629dd3b0 b.so 103.31 کیلوبایت
384f073d3d51e0f2e1586b6050af62de886ff448735d963dfc026580096d81bd 103.31 کیلوبایت
b975b499baa3119ac5c2b3379306d4e50b9610e9bba3e56de7dfd3927a96032d 1.jpeg 5.66 مگابایت
a62a2400bf93ed84ebadf22b441924f904d3fcda7d1507ba309a4b1801d44495 103.31 کیلوبایت
29882a3c426273a7302e852aa77662e168b6d44dcebfca53757e29a9cdf02483 img-20240723-wa0001.jpg 6.58 مگابایت
2425f15eb542fca82892fd107ac19d63d4d112ddbfe698650f0c25acf6f8d78a 6357fc.zip 380.71 کیلوبایت
b45817ffb0355badcc89f2d7d48eecf00ebdf2b966ac986514f9d971f6c57d18 img-20240723-wa0000.jpg 5.65 مگابایت
69cf56ac6f3888efa7a1306977f431fd1edb369a5fd4591ce37b72b7e01955ee localfile~ 1.42 مگابایت
211311468f3673f005031d5f77d4d716e80cbf3c1f0bb1f148f2200920513261 l 332.88 کیلوبایت
ffeeb0356abb56c5084756a5ab0a39002832403bca5290bb6d794d14b642ffe2 103.31 کیلوبایت

جدول ۷. نمونه‌های بدافزار برای فعالیت LANDFALL.

آدرس‌های IP

  • 45.155.250[.]158
  • 46.246.28[.]75
  • 91.132.92[.]35
  • 92.243.65[.]240
  • 192.36.57[.]56
  • 194.76.224[.]127

نام‌های دامنه

  • brightvideodesigns[.]com
  • healthyeatingontherun[.]com
  • hotelsitereview[.]com
  • projectmanagerskills[.]com

منابع تکمیلی

  • CISA Adds One Known Exploited Vulnerability to Catalog – Alert, CISA
  • NVD – CVE-2025-21042 – NIST
  • NVD – CVE-2025-43300 – NIST
  • NVD – CVE-2025-55177 – NIST
  • Samsung Mobile Security Updates – Samsung
  • WhatsApp Security Advisories 2025 – WhatsApp
  • Stealth Falcon’s Exploit of Microsoft Zero Day Vulnerability – Check Point Research
  • Stealth Falcon preying over Middle Eastern skies with Deadglyph – ESET
  • Buying Spying [PDF] – Google TAG
  • New details on commercial spyware vendor Variston – Google TAG
  • IP address entry for 91.132.92[.]35 – Turkish National CERT (USOM)
  • CVE-2025-21043 Analysis: When DNG Opcodes Become Attack Vectors – Blog, Matt Suiche
  • ELEGANT BOUNCER Detection Framework – Matt Suiche, GitHub

پیوست‌ها

پیوست الف: دستکاری خط‌مشی SELinux

جزء LANDFALL برای دستکاری خط‌مشی SELinux، فایل l.so است. این فایل قابلیت دور زدن کنترل‌های امنیتی سیستم را فراهم می‌کند. این فایل از مسیر /data/data/com.samsung.ipservice/files/l از حالت فشرده خارج شده و در مسیر /data/data/com.samsung.ipservice/files/l.so قرار گرفته و اجرا می‌شود.

به جای داشتن قوانین هاردکد شده، l.so یک موتور عمومی را پیاده‌سازی می‌کند که می‌تواند به صورت پویا دستورات جدید خط‌مشی SELinux را از یک منبع خارجی تجزیه و بارگذاری کند و خط‌مشی در حال اجرا در حافظه را تغییر دهد.

توابع export شده مرتبط و منحصربه‌فرد:

  • sepolicy_from_data: بارگذاری خط‌مشی از داده‌های باینری
  • sepolicy_add_statement: افزودن دستورات خط‌مشی به صورت جداگانه
  • sepolicy_to_buffer: سریال‌سازی خط‌مشی تغییریافته
  • sepolicy_delete: پاک‌سازی اشیاء خط‌مشی

پیوست ب: جزئیات بیشتر در مورد تحلیل جاسوس‌افزار LANDFALL

این پیوست به تفصیل قابلیت‌های مشاهده‌شده جزء بارگذار LANDFALL و همچنین قابلیت‌هایی را که استنباط می‌کنیم در ماژول‌های دیگر چارچوب کامل LANDFALL که هنوز به آن‌ها دسترسی پیدا نکرده‌ایم، وجود دارند، شرح می‌دهد.

Bridge Head جاسوس‌افزار LANDFALL که روی دیسک با نام b.so ذخیره شده، توسط یک اکسپلویت روی دستگاه بارگذاری می‌شود. بلافاصله پس از بارگذاری پس از اکسپلویت، LANDFALL متغیر محیطی LD_PRELOAD را تجزیه می‌کند تا از به ارث بردن preloads بالادستی جلوگیری کند. سپس شناسه کاربری مؤثر (effective user ID) را از طریق geteuid() می‌خواند و آن را به صورت سراسری ذخیره می‌کند تا شاخه‌های بعدی بتوانند رفتار خود را برای حالت روت در مقابل غیر روت تنظیم کنند. سپس وارد روتین اصلی می‌شود.

اطلاعات اولیه فرآیند (pid والد، euid، رشته ساخت اندروید) را جمع‌آوری می‌کند، یک پرچم اجراکننده (runner flag) را از متغیر محیطی R می‌خواند و یک کپی از آن را برای اقدامات بعدی ذخیره می‌کند. این مقدار (معمولاً I برای تعاملی یا P برای غیرفعال) به سرور فرمان و کنترل گزارش داده می‌شود و نحوه راه‌اندازی یک پی‌لود مرحله‌بندی شده بعدی را تعیین می‌کند. مسیر نگاشت شده خود را پیدا می‌کند، مسیر پایه خصوصی اپلیکیشن در /data/data/com.samsung.ipservice/files/ را به عنوان دایرکتوری کاری خود انتخاب کرده و سپس دو مسیر فرزند در آنجا می‌سازد. یک مسیر برای دانلود مرحله‌بندی شده و دیگری برای فایل نهایی l.so که برای اجرا استفاده می‌شود.

پیکربندی

LANDFALL یک پیکربندی JSON را مستقیماً از فایل خود می‌خواند و با الگوریتم XOR رمزگشایی می‌کند. جاسوس‌افزار با بازنویسی پیش‌فرض‌های داخلی در شیء تجزیه‌شده، پیکربندی را نرمال‌سازی می‌کند: فیلدهای عددی در صورت عدم وجود یا صفر بودن، پیش‌فرض می‌شوند و برخی مقادیر بولین، صرف‌نظر از پیکربندی ارائه‌شده، به مقادیر ثابتی مجبور می‌شوند. در نهایت، بررسی می‌کند که یک کلید عمومی (X.509 DER) در پیکربندی وجود داشته باشد و در غیر این صورت خارج می‌شود.

جدول ۸ خلاصه‌ای از نرمال‌سازی پیکربندی انجام‌شده در این مرحله را نشان می‌دهد.

نام کلید نوع مقدار پیش‌فرض الزامی
allow_wifi بولین به true اجبار می‌شود (مقدار false/عدم وجود را به true تغییر می‌دهد) خیر
allow_mobile بولین به true اجبار می‌شود (مقدار false/عدم وجود را به true تغییر می‌دهد) خیر
allow_roaming بولین در صورت عدم وجود/false بودن، پیش‌فرض false است؛ true، true باقی می‌ماند خیر
allow_min_battery عدد صحیح 0 اگر مقدار 0 یا ناموجود باشد خیر
sleep_time عدد صحیح (ثانیه) 60 اگر مقدار 0 یا ناموجود باشد خیر
sleep_time_between_retries عدد صحیح (ثانیه) 35 اگر مقدار 0 یا ناموجود باشد خیر
suicide_time عدد صحیح (ثانیه) 7200 اگر مقدار 0 یا ناموجود باشد خیر
live_mode_expiration عدد صحیح (ثانیه) 0 اگر مقدار 0 یا ناموجود باشد خیر
socket_timeout عدد صحیح (ثانیه) 5 اگر مقدار 0 یا ناموجود باشد خیر
is_persistent بولین در صورت عدم وجود/false بودن، پیش‌فرض false است؛ true، true باقی می‌ماند خیر
bridge_head_version_major عدد صحیح به‌طور ثابت روی 2 تنظیم می‌شود (همیشه) خیر
bridge_head_version_minor عدد صحیح به‌طور ثابت روی 1 تنظیم می‌شود (همیشه) خیر
cnc_hostname رشته هیچ؛ باید وجود داشته باشد بله
cnc_port عدد صحیح هیچ؛ باید غیر صفر باشد بله
cnc_base_url رشته هیچ؛ باید وجود داشته باشد بله
agent_id رشته (UUID) هیچ؛ باید وجود داشته باشد بله
command_id رشته (UUID) هیچ؛ باید وجود داشته باشد بله
commands آرایه باید وجود داشته باشد؛ خوانده و آزاد می‌شود (ساختار در اینجا حفظ نمی‌شود) بله
public_key X.509 DER (بایت) هیچ؛ باید وجود داشته و معتبر باشد بله

جدول ۸. کلیدها و مقادیر برای بدافزار LANDFALL.

ارتباط با سرور C2

پس از تکمیل پیکربندی، b.so توابع شبکه و رمزنگاری لازم را بارگذاری می‌کند، محیط SSL خود را راه‌اندازی کرده و یک زمینه کلاینت امن برای ارتباطات HTTPS آینده آماده می‌کند. اگر هر بخشی از این راه‌اندازی با شکست مواجه شود، به جای ریسک کردن با یک راه‌اندازی ناقص، به طور کامل خارج می‌شود.

قبل از ورود به حلقه بیکن‌دهی (beaconing) به C2، به صورت اختیاری اطلاعات تله‌متری ارسال می‌کند. اگر با دسترسی روت در حال اجرا باشد، یک خط کوتاه «started» را فرمت‌بندی می‌کند که شامل موارد زیر است:

  • یک نشانگر نسخه ثابت (مثلاً v1.5.0)
  • pid
  • euid
  • حالت اجراکننده

سپس آن را از طریق یک درخواست POST به سرور C2 ارسال می‌کند، همان‌طور که در زیر نشان داده شده است.

درخواست POST به سرور C2

اگر حالت اجراکننده I باشد، ابتدا دستیار SELinux را آماده می‌کند: دستیار خط‌مشی فشرده‌شده (/data/data/com.samsung.ipservice/files/l) را پیدا کرده، آن را با استفاده از یک دیکدر داخلی XZ در یک بافر جدید از حالت فشرده خارج می‌کند و نتیجه را در data/data/com.samsung.ipservice/files/l.so می‌نویسد. سپس با ارسال یک پینگ با استفاده از agent_id بدون خط تیره به عنوان پی‌لود، به سرور C2 بیکن می‌فرستد. نتیجه این عملیات، مانع ادامه جریان نمی‌شود و به عنوان یک تله‌متری برای اپراتور عمل می‌کند.

نمونه‌ای از کد برای پینگ در حالت I در ادامه آمده است.

نمونه کد برای ارسال I-ping به سرور میزبان.

تنها پس از این مراحل، حلقه اصلی بیکن‌دهی به C2 آغاز می‌شود. زمان صفر را ثبت کرده و یک بودجه زمانی دقیق حدود ۷۲۰۰ ثانیه (suicide_time) را برای کل جلسه اعمال می‌کند.

دو بافر مسیر بزرگ و قابل استفاده مجدد را صفر می‌کند: یکی برای داده خام (blob) که ممکن است از سرور برسد و دیگری برای شیء اشتراکی از حالت فشرده خارج‌شده. هر دو مسیر در دایرکتوری کاری خصوصی اپلیکیشن قرار دارند (مثلاً /data/data/com.samsung.ipservice/files/). با آماده شدن مسیرها، با سرور فرمان و کنترل تماس گرفته و یک بدنه فشرده به سبک URL-encoded با جفت‌های key=value می‌سازد:

  • یک تگ پروتکل/واریانت؛ نوع پیام بیکن
  • agent_id، command_id و یک upload_id جدید (UUIDv4) برای همبستگی
  • source=bridge_head
  • Euid
  • پرچم اجراکننده و مسیر نصب آن روی دیسک

در صورت لزوم، یک هش SHA-1 را بر روی بخشی از پیام محاسبه کرده و آن را ضمیمه می‌کند. از رشته User-Agent کروم زیر استفاده می‌کند:

  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36

درخواست‌ها به مسیر پایه پیکربندی‌شده هدایت می‌شوند (مثلاً POST /is/ HTTP/1.0). قبل از ارسال هرگونه داده اپلیکیشن، اتصال TLS را پین می‌کند.

هنگام خواندن پاسخ از سرور C2، LANDFALL کد وضعیت پاسخ را بررسی کرده و هدرها را برای تعیین طول و نوع پیام جستجو می‌کند. برخی از کدهای وضعیت—به‌ویژه تایم‌اوت‌ها و مجموعه‌ای ماسک‌شده از کدهای 4xx/5xx (مانند 408، 504)—به‌عنوان گذرا در نظر گرفته شده و باعث فعال شدن sleep(sleep_time_between_retries) (پیش‌فرض ۳۵ ثانیه) قبل از تلاش مجدد با یک اتصال جدید می‌شوند. پاسخ یافت‌نشدن (مانند 404) برای این اجرا به عنوان پایانی در نظر گرفته شده و از حلقه خارج می‌شود. اگر وضعیت نشان‌دهنده موفقیت باشد و بدنه وجود داشته باشد، LANDFALL به مرحله آماده‌سازی (staging) ادامه می‌دهد.

پی‌لودهای مرحله بعد

مرحله آماده‌سازی (Staging) با پاک‌سازی وضعیت سیستم فایل آغاز می‌شود. اگر یک فایل خام قدیمی در مسیر موقت وجود داشته باشد، آن را حذف می‌کند. بایت‌های خام را در یک فایل آماده‌سازی به نام aa.so در دایرکتوری کاری می‌نویسد و سپس تلاش می‌کند آن‌ها را با استفاده از یک دیکدر داخلی XZ/LZMA که در یک بافر تقریباً ۵ مگابایتی از پیش تخصیص‌یافته باز می‌شود، از حالت فشرده خارج کند.

در صورت موفقیت، بایت‌های از حالت فشرده خارج‌شده را در dec_a.so (مسیر نهایی .so) در دایرکتوری کاری می‌نویسد، فایل موقت aa.so را پاک می‌کند و حالت فایل dec_a.so را به 777 تغییر می‌دهد تا اطمینان حاصل شود که در زمینه‌های مختلف قابل بارگذاری است.

نمونه کد استخراج‌کننده XZ (کوتاه شده):

یک استخراج‌کننده که تا یک اندازه از پیش تعیین‌شده داده را از حالت فشرده خارج می‌کند.

با قرار گرفتن شیء اشتراکی در جای خود (dec_a.so)، بر اساس پرچم اجراکننده، یک استراتژی اجرایی را انتخاب می‌کند. برای تنظیمات تعاملی (I)، دو متغیر محیطی را export کرده و یک ابزار سیستمی بی‌خطر را به صورت همزمان راه‌اندازی می‌کند:

  • LD_PRELOAD=<final.so> PRELOAD_PATH=/data/data/com.samsung.ipservice/files/l.so /system/bin/id (که در آن <final.so> همان dec_a.so است)

PRELOAD_PATH به مسیر دستگاهی اشاره می‌کند که محتوای خط‌مشی SELinux در آنجا انتظار می‌رود و به کد preload شده اجازه می‌دهد تا خط‌مشی را در زمان راه‌اندازی پیدا کرده و اعمال کند. توجه داشته باشید که این PRELOAD_PATH فقط در حالت تعاملی استفاده می‌شود و مسیر اجرای غیرفعال آن را حذف می‌کند.

برای اجراهای غیرفعال (P)، همان ابزار را در پس‌زمینه راه‌اندازی می‌کند:

  • LD_PRELOAD=<final.so> /system/bin/id (که در آن <final.so> همان dec_a.so است)

این کار به این دلیل انجام می‌شود که کنترل به سرعت بازگردد در حالی که دستیار در فرآیند دیگری در حال مقداردهی اولیه است. در داخل، هر دو از طریق یک پوسته (/system/bin/sh -c <cmd>) اجرا می‌شوند. در هر دو مورد، فقط نتایج موفقیت‌آمیز محدود را می‌پذیرد:

  • کد خروج 0 یا یک کد خاص 0x15؛ هر چیز دیگری به عنوان شکست در نظر گرفته شده و از حلقه خارج می‌شود.

پس از بارگذاری موفق، یک خط «ended» را فرمت‌بندی کرده و ارسال می‌کند که پیام آغازین را منعکس می‌کند و شامل موارد زیر است:

  • نشانگر نسخه
  • pid
  • incremental_build
  • runner

قطعه کد

سپس رشته‌ها و بافرهای موقت را آزاد می‌کند. اگر هیچ پی‌لودی در دسترس نبود، یا اگر یک خطای گذرا رخ داد، زمان سپری‌شده را با بودجه تقریباً ۷۲۰۰ ثانیه‌ای خود مقایسه می‌کند. اگر زمان باقی مانده باشد، به مدت زمان پیکربندی‌شده می‌خوابد و دوباره تلاش می‌کند.

در نهایت، وقتی حلقه به پایان می‌رسد، چه پس از بارگذاری موفق مرحله بعدی یا به دلیل اتمام بودجه زمانی یا خطاهای غیرقابل بازیابی، به طور تمیز خود را جمع می‌کند. اگر با دسترسی روت در حال اجرا باشد، یک مسیر مستقیم _exit(status) را به جای بازگشت عادی ترجیح می‌دهد تا عوارض جانبی در زمان اجرا را به حداقل برساند. در همه موارد، هدف آن این است که فقط حداقل آرتیفکت‌های مورد نیاز برای ادامه کار کد مرحله‌بندی شده را باقی بگذارد.

قابلیت‌های بدون ارجاع

در حین مهندسی معکوس، ما چندین روتین کامپایل‌شده در جزء b.so را شناسایی کردیم که توسط جریان کنترل مشاهده‌شده آن فراخوانی نمی‌شوند. به نظر می‌رسد این ویژگی‌های پنهان برای استفاده توسط ماژول‌های بعدی که بارگذاری می‌شوند، طراحی شده‌اند.

همچنین بسیار محتمل است که برخی از این توابع باقی‌مانده از نسخه‌های قدیمی‌تر LANDFALL باشند. آنها رفتارهای مشخصی را در مورد مسیرهای رسانه واتس‌اپ، کشف DCIM، آماده‌سازی سیستم فایل و بهداشت فرآیند در اندروید نشان می‌دهند:

  • یک روتین یک خط تله‌متری «started» را آماده کرده و سپس با زیرسیستم رسانه دستگاه تعامل می‌کند. این خط را به این صورت فرمت‌بندی می‌کند:
    • BH v1.5.0 started – pid: , euid=, incremental_build: v1.5.0, runner:
  • اگر بررسی‌های داخلی آن موفقیت‌آمیز باشد، یک broadcast را برای اجبار به اسکن مجدد گالری با استفاده از این دستور شل دقیق اجرا می‌کند:
    • am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/hacked.jpg
  • در همان جریان، همچنین یک جستجو برای «جدیدترین عکس» در DCIM با استفاده از دستور زیر ایجاد می‌کند:
    • find /sdcard/DCIM -type f -exec ls -t1 {} + | grep -v hacked| head -1
    • این الگو با جمع‌آوری جدیدترین آیتم دوربین در حالی که یک آرتیفکت را که خود می‌تواند ایجاد کند مستثنی می‌کند، سازگار است. این روتین کامپایل شده است اما توسط هیچ کد دیگری در نمونه فراخوانی نمی‌شود.
  • قراردهنده مسیر رسانه واتس‌اپ. روتین دیگری یک PNG 1×1 کدگذاری‌شده به صورت Base64 (iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ…JRU5ErkJggg==) را رمزگشایی کرده و دایرکتوری‌های رسانه واتس‌اپ را در حافظه خارجی برای یافتن یک مسیر فایل اخیر که با شناسه عامل مطابقت دارد (UUID ابتدا از خط تیره پاک می‌شود) جستجو می‌کند. یک خط لوله جستجو را در هر دو مسیر پیش‌فرض (ID 0) و چند کاربره (ID 95) ایجاد و اجرا می‌کند:
    • find /storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp\ Images/ /storage/emulated/95/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp\ Images/ -type f -atime -720m -maxdepth 1 -exec grep -lo ‘.*<agentIdNoHyphens>.*’ {} \; -quit 2>/dev/null.
    • اگر چنین مسیری بازگردانده شود، PNG رمزگشایی‌شده را به همان صورت در آنجا می‌نویسد. این به نظر می‌رسد یک آرتیفکت پوششی یا یک نشانگر مخفی برای تصاویر واتس‌اپ باشد.
  • یک دستیار دیگر یک دایرکتوری پایه و یک رشته را می‌گیرد و یک مسیر JPEG منطبق را با اجرای دستور زیر برمی‌گرداند:
    • find <base> -name ‘*.jpg’ -exec grep -le ‘.*<pattern>.*’ {} \;
    • قبل از بازگشت، خطوط جدید انتهایی را حذف کرده و وجود مسیر را تأیید می‌کند.
  • بررسی اجتناب از Zygote: یک دستیار بهداشت فرآیند یک بافر برای خط فرمان خود تخصیص می‌دهد و فقط زمانی موفقیت را برمی‌گرداند که نام با zygote یا zygote64 مطابقت نداشته باشد. این برای اجتناب از فرآیندهای میزبان ویژه اندروید طراحی شده است.
  • حل‌کننده نماد و پاک‌سازی SELinux: دو روتین کوچک، امور فنی پویای SELinux را مدیریت می‌کنند.
    • یکی /system/lib64/libselinux.so را با dlopen باز کرده و getfilecon و setfilecon را در اشاره‌گرهای تابع سراسری حل می‌کند.
    • دیگری این را از بین برده و اشاره‌گرها را پاک می‌کند.
    • هر دو برای پشتیبانی از کار با خط‌مشی/زمینه فایل وجود دارند اما توسط مسیر کد مشاهده‌شده ارجاع داده نمی‌شوند.
  • یک روتین جامع‌تر لیستی از مسیرهای سیستم فایل را می‌پذیرد. برای هر کدام، برچسب فعلی را از طریق getfilecon ذخیره می‌کند، یک برچسب‌زن داخلی را روی مسیر فراخوانی می‌کند، مالکیت را از طریق chown اعمال می‌کند و سپس برچسب ذخیره‌شده را با setfilecon بازیابی می‌کند. هنگامی که chown یا setfilecon با شکست مواجه می‌شوند، کدهای منفی مشخصی را برمی‌گرداند.
  • یک جستجوگر فایل وجود دارد که سعی می‌کند یک مسیر را باز کند و نتیجه را به کدهای وضعیت داخلی (موفقیت، دسترسی رد شد، یافت نشد، خطای عمومی) نگاشت می‌کند. همچنین وضعیت کتابخانه داخلی را بازنشانی می‌کند (شامل هرگونه هندل SELinux که قبلاً باز شده است).
  • نگاشت نتیجه اجرای فرآیند به وضعیت پیام: یک نگاشت‌کننده کوچک نتیجه یک دستیار اجرای فرمان داخلی را به کدهای کاتالوگ پیام تبدیل می‌کند (مثلاً نگاشت یک بازگشت خاص (1) به کد CMD_STAT_* 0x0C و 2-3 به 0x51). این گزارش‌دهی را برای دستیارها استاندارد می‌کند اما توسط منطق فعلی قابل دسترسی نیست.
  • ساختن یک آرایه JSON گزارش دستگاه: یک روتین غیرفعال دیگر یک آرایه cJSON می‌سازد که هر ورودی آن شامل device_path، یک فیلد باینری کدگذاری‌شده به Base64، یک بولین last_updated و یک وضعیت متنی مشتق‌شده از جدول داخلی CMD_STAT_* است. این روتین یک بردار ورودی را پیمایش کرده، فایل مرجع را در حافظه می‌خواند، آن را به Base64 کدگذاری می‌کند و به آرایه اضافه می‌کند.
  • یک دستیار کوچک قالب‌بندی رشته، وقوع توکن –working_dir– را در یک مقدار JSON پیدا کرده و آن را با مسیر زمان اجرا که توسط b.so ردیابی می‌شود، جایگزین می‌کند.
  • افزودن TracerPid به تله‌متری: یک دستیار تشخیصی /proc/self/status را تجزیه کرده، خط TracerPid را استخراج می‌کند، آن را به یک عدد صحیح تبدیل می‌کند و اگر بزرگتر از صفر باشد، یک جفت کلید/مقدار فرمت‌بندی‌شده را از طریق سازنده رشته b.so به بدنه درخواست اضافه می‌کند.
  • یک دستیار آماده‌سازی، یک بافر موجود را با یک بلوک شبه تصادفی مشتق‌شده از یک رشته ورودی الحاق می‌کند:
    • یک بایت را با rand() مقداردهی اولیه می‌کند.
    • هر بایت بعدی ورودی را در یک جمع‌کننده چرخشی XOR می‌کند.
    • بایت‌های جمع‌کننده را به عنوان پسوند می‌نویسد.
    • سپس بافر ترکیبی را از طریق نویسنده b.so در یک مسیر فایل داده‌شده می‌نویسد.
  • یک جفت نصب‌کننده/حذف‌کننده دو مرحله‌ای از سه کلید پیکربندی استفاده می‌کند: persistency_origin، persistency_payload و persistency_backup. روتین اصلی بررسی می‌کند که هر سه تنظیم شده باشند، در صورت لزوم نسخه پشتیبان را به مبدأ بازمی‌گرداند و سپس فایل پی‌لود را حذف می‌کند. کدهای وضعیت مشخصی (0x4B/0x4C/0x4D) را برمی‌گرداند که به ورودی‌های کاتالوگ پیام برای «بدون پیکربندی»، «انتقال ناموفق» و «حذف ناموفق» نگاشت می‌شوند. یک روتین خواهر، در صورت تنظیم بودن یک پرچم ماندگاری سراسری، فایل پشتیبان را به صورت

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا