خلاصه اجرایی
محققان 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 را در نزدیکی انتهای فایل مشخص میکند.

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

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

ترافیک اولیه بیکن (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، کلیدهای رمزنگاری و شناسههای منحصربهفرد برای عامل و دستورات است.
شکل ۵ نمونهای از این پیکربندی را نشان میدهد.

این جزء 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 در حملات جاسوسافزاری پیچیده موبایل را برجسته میکند.

- ژوئیه ۲۰۲۴ – فوریه ۲۰۲۵: نمونههای اولیه فایلهای تصویر 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 ارسال میکند، همانطور که در زیر نشان داده شده است.

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

تنها پس از این مراحل، حلقه اصلی بیکندهی به 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) را برمیگرداند که به ورودیهای کاتالوگ پیام برای «بدون پیکربندی»، «انتقال ناموفق» و «حذف ناموفق» نگاشت میشوند. یک روتین خواهر، در صورت تنظیم بودن یک پرچم ماندگاری سراسری، فایل پشتیبان را به صورت