اخیرا بدافزارهای جدید در Google Play و App Store به وفور یافت می شود. در سال های اخیر بدافزارهای زیادی در غالب یک اپلیکیشن پیام رسان ارائه شدند که برخی از آن ها جهت یافتن تصاویر اسکرین شات و کلمات بازیابی کیف های پول دیجیتال؛ گالری موبایل کاربران را اسکن می کرد. این جستجو از یک مدل OCR استفاده می کند که برای استخراج و ارسال به سرور C2، تصاویری را روی دستگاه قربانیان انتخاب میکند. این بدافزار کاربران اندروید و ویندوز را هدف قرار داده بود که اخیرا به کاربران iOS هم رسید! این اپلیکیشن ها ابتدا از منابع غیر رسمی منتشر شده اند.
بدافزارهای جدید در Google Play و App Store
در اواخر سال 2024، بدافزار جدیدی کشف شد که SparkCat نام داشت. هکرها از تاکتیک های مشابهی برای حمله به کاربران اندروید و iOS استفاده میکردند.
برخی از آنها در Google Play و App Store موجود بودند، که برای سرقت عبارات بازیابی کیف پولهای کریپتو تعبیه شده بودند. برنامه های آلوده در گوگل پلی بیش از 242000 بار دانلود شده اند. این اولین باری بود که یک دزد سایبری بطور رسمی در اپ استور اپل پیدا می شد.
ماژول اندروید این بدافزار یک پلاگین OCR ساخته شده با کتابخانه ML Kit گوگل را رمزگشایی و راه اندازی می کند و از آن برای تشخیص متنی که در تصاویر داخل گالری یافت می شود استفاده می کند. تصاویری که با کلمات کلیدی دریافت شده از C2 مطابقت داشتند به سرور ارسال می شوند. ماژول مخرب مخصوص iOS طراحی مشابهی داشت و به کتابخانه ML Kit گوگل برای OCR متکی بود.
بدافزار SparkCat از پروتکل ناشناسی برای پیادهسازی خود توسط زبان Rust جهت برقراری ارتباط با C2 استفاده میکند. Rust زبانی غیرمعمول برای نوشتن برنامههای موبایل است.
با توجه به بازه زمانی فعالیت بدافزار و تاریخ ایجاد فایلهای پیکربندی آن در GitLab، SparkCat از مارس 2024 فعال بوده است.
یک بدافزار SDK در Google Play
اولین اپلیکیشنی که شک برانگیز شد یک برنامه تحویل غذا در امارات و اندونزی به نام ComeCome به سرنام APK: com.bintiger.mall.android بود که در زمان تحقیق در Google Play با بیش از 10000 بار دانلود موجود بود.

Spark به زبان جاوا نوشته شده است. هنگامی که مقداردهی اولیه می شود، یک فایل پیکربندی JSON را از یک آدرس GitLab که در بدنه بدافزار جاسازی شده است دانلود می کند. JSON با base64 رمزگشایی می شود و سپس با AES-128 در حالت CBC رمزگشایی می شود.

اگر SDK نتواند پیکربندی را بازیابی کند، از تنظیمات پیش فرض استفاده می کند. کد زیر پیکربندی بدافزار در GitLab است:
{
“http”: [“https://api.aliyung.org”],
“rust”: [“api.aliyung.com:18883”],
“tfm”: 1
}
Spark از متد POST برای برقراری ارتباط با سرور استفاده می کند. داده ها را قبل از ارسال با الگوریتم AES-256 در حالت CBC رمزگذاری می کند و پاسخ های سرور را نیز با الگوریتم AES-128 در حالت CBC رمزگشایی می کند. در هر دو مورد، کلیدها رمزگذاری شده هستند.
این بدافزار یک فایل JSON تولید می کند که در آن مسیر آپلود داده ها و همچنین داده های رمزگذاری شده از مرحله قبل قرار می گیرند.
{
“path”: “upload@<PATH>”,
“method”: “POST”,
“contentType”: “application/json”,
“data”: “<DATA>”
}
این فایل JSON بوسیله ی کتابخانه libmodsvmp.so و از طریق پروتکلی ناشناسی بوسیله ی پورت های TCP به سرور ارسال می شود. این را هم باید اضافه کنم که این کتابخانه به زبان Rust نوشته شده است.
تجزیه و تحلیل این کتابخانه آسان نیست، زیرا Rust از یک روش فراخوانی غیر استاندارد استفاده می کند و هیچ نام تابعی در آن یافت نمی شود. قبل از ارسال داده ها به سرور، کتابخانه یک کلید 32 بایتی برای رمز AES-GCM-SIV تولید می کند.
کلید AES ابتدا با RSA رمزگذاری شده و سپس به سرور ارسال می شود. به محض دریافت درخواست، سرور مهاجم کلید AES را با یک کلید RSA خصوصی رمزگشایی میکند. بدافزار دیتاهای دریافتی را رمزگشایی و سپس پاسخ را با ZSTD فشرده و با الگوریتم AES-GCM-SIV رمزگذاری میکند. پس از رمزگشایی در کتابخانه، پاسخ سرور به SDK ارسال میشود، جایی که برای ارتباط با سرور http، تحت رمزگشایی base64 قرار میگیرد. ارتباط بین ماژول بدافزار و سرور را میتوانید در زیر مشاهده کنید.

بسته به زبان سیستم، مدلهای مختلف OCR را برای تشخیص حروف لاتین در تصاویر دانلود میکند. سپس SDK اطلاعات دستگاه را در سرور C2 آپلود میکند. سرور با یک آبجکت پاسخ می دهد که فعالیت های بیشتر بدافزار را کنترل می کند. این آبجکت یک فایل JSON است که ساختار آن در زیر نشان داده شده است. مقدار 1 در کلید uploadSwitch به بدافزار اجازه می دهد تا به کار خود ادامه دهد.
{
“code”: 0,
“message”: “success”,
“data”: {
“uploadSwitch”: 1,
“pw”: 0,
“rs”: “”
}
}
سپس SDK یک لاگ تماس به برنامه را از سمت کلاینت ثبت می کند. هر زمان که کاربر بدافزار را اجرا کند، ارتباط آغاز می شود و کنترل کننده درخواست دسترسی به گالری تصاویر کاربر را می فرستد. اگر کلید pw در آبجکت فوق برابر با 1 باشد، ماژول در صورت رد درخواست، دسترسی را ادامه خواهد داد. کاربران ممکن است هنگام تماس با پشتیبانی، تصاویر را پیوست کنند. اگر دسترسی داده شود، SDK عملکرد اصلی از پیش تعیین شده خود را اجرا می کند. این عملیات با ارسال یک درخواست به C2 و دریافت پارامترهای پردازش OCR در یک پاسخ شروع می شود.
{
“code”: 0,
“message”: “success”,
“data”: {
“letterMax”: 34,
“letterMin”: 2,
“enable”: 1,
“wordlistMatchMin”: 9,
“interval”: 100,
“lang”: 1,
“wordMin”: 12,
“wordMax”: 34
}
}
این پارامترها توسط پردازنده استفاده می شوند تا تصاویر را با کلمات شناسایی شده توسط OCR فیلتر کنند. این بدافزار فهرستی از کلمات کلیدی را درخواست میکند، که از آنها برای انتخاب تصاویر برای آپلود در سرور C2 استفاده می شود.
تصاویری که با معیارهای جستجو مطابقت دارند در سه مرحله از دستگاه دانلود می شوند. ابتدا درخواستی حاوی هش MD5 تصویر به /api/e/img/uploadedCheck در C2 ارسال میشود. سپس، تصویر در فضای ذخیرهسازی ابری آمازون یا فایل@/api/res/send در سرور rust آپلود میشود. پس از آن، یک لینک به تصویر در مسیر /api/e/img/rekognition در C2 آپلود می شود. بنابراین، SDK که برای تجزیه و تحلیل طراحی شده است، در واقع بدافزاری است که به طور انتخابی محتوای گالری را به سرقت می برد.

شاید از خود بپرسید که هکرها به دنبال چه نوع تصاویری بودند؟! پس از بررسی لیستی از کلمات کلیدی از سرورهای C2 بدافزار مشخص شد تصاویری که حاوی عبارات بازیابی بود و برای دسترسی مجدد به کیف پول ارز دیجیتال مورد استفاده قرار گیرند بیشتر مورد هدف بوده است. این عبارات همگی نشان میدهند که مهاجمان انگیزه مالی داشتند.
{
“code”: 0,
“message”: “success”,
“data”: {
“keywords”: [“助记词”, “助記詞”, “ニーモニック”, “기억코드”, “Mnemonic”,
“Mnemotecnia”, “Mnémonique”, “Mnemonico”, “Mnemotechnika”, “Mnemônico”,
“클립보드로복사”, “복구”, “단어”, “문구”, “계정”, “Phrase”]
}
}
ویژگیهای SDK ممکن است از برنامهای به برنامه دیگر متفاوت باشد. در حالی که بدافزار در ComeCome تنها زمانی که کاربر چت پشتیبانی را باز می کرد مجوز درخواست می کرد، در برخی موارد دیگر، تنها صرفا بازکردن خود اپلیکیشن برای آغاز به کار این بدافزار کافی بود.

ComeCome در گوشی های iOS هم به همان روشی که در نسخه اندروید وجود داشت دستگاه ها را آلوده می کرد. این اولین مورد شناخته شده از یک اپلیکیشن آلوده به جاسوس افزار OCR در بازار رسمی اپلیکیشن اپل یعنی App Store است.

تصویر زیر نمونه ای از برنامه های پیام رسان آلوده به این بدافزار در اپ استور است که برای فریب دادن قربانیان طراحی شده اند.

بسیاری از این اپلیکیشن ها حاوی فایلی به نام modify_gzip.rb می باشند که در پوشه ی اصلی برنامه قرار دارد و حاوی یک اسکریپت مخرب پایتونی می باشند. به نظر می رسد که توسعه دهندگان این بدافزار از این اسکریپت برای بهره برداری های پس از آلودگی به بدافزار استفاده می کنند. محتویات فایل modify_gzip.rb در زیر قرار داده شده است.

فریم ورک اصلی این بدافزار به زبان Objective-C نوشته شده و با الگوریتم HikariLLVM رمزنگاری شده است. در برنامههایی که بدافزار در آنها شناسایی شده است، یکی از سه نام GZIP ، googleappsdk و stat بر روی فایل دیده می شد. همانند نسخه مخصوص اندروید، بدافزار iOS نیز از رابط ML Kit استفاده میکند که دسترسی به یک مدل Google OCR برای تشخیص متن و یک کتابخانه Rust که پروتکل ارتباطی با C2 است را فراهم میکند.
اسکریپت این بدافزار شامل چندین کلاس مخرب است.
MMMaker : یک فایل را دانلود می کند و اطلاعات مربوط به دستگاه را جمع آوری می کند.
ApiMgr : داده های دستگاه را ارسال می کند.
PhotoMgr : عکس های حاوی کلمات کلیدی را در دستگاه جستجو می کند و آنها را در سرور آپلود می کند.
MMCore : اطلاعات مربوط به C2 را دارد.
MMlocationMgr : مکان فعلی دستگاه را جمع آوری می کند.
این را بدانید که تروجان بسته به برنامه ای که در آن اجرا می شود می تواند رفتار متفاوتی داشته باشد. تعداد برنامه های بالقوه آلوده بیش از آن چیزی است که فکرش را می کنید.
منابع:
Hackers art
Secure list