Microsoft Security Blog NeedyMantis: Unpacking a post-compromise malware family used in targeted operations

بدافزار NeedyMantis در عملیات هدفمند پس از نفوذ شناسایی شد

واحد Microsoft Threat Intelligence بدافزار NeedyMantis را شناسایی کرده است؛ خانواده‌ای ماژولار از بدافزارهای پس از نفوذ که در شمار محدودی از عملیات هدفمند مشاهده شده و سازمان‌های مخابراتی، دانشگاه‌ها، مؤسسه‌های خیریه پزشکی، سازمان‌های بین‌دولتی و پیمانکاران دولتی را تحت تأثیر قرار داده است. بر اساس فعالیت‌های مشاهده‌شده، NeedyMantis معمولاً پس از آن مستقر می‌شود که بازیگر تهدید از پیش به محیط هدف دسترسی یافته باشد. این موضوع نشان می‌دهد که این بدافزار برای حفظ دسترسی بلندمدت و پشتیبانی از عملیات بعدی به‌کار می‌رود.

فعالیت NeedyMantis دست‌کم به اکتبر 2025 بازمی‌گردد. این خانواده هنگام تحلیل و امتداد دادن سرنخ‌ها از پژوهش‌ها و شاخص‌های نفوذِ مرتبط با نفوذ در زنجیره تأمین DAEMON Tools کشف شد؛ موضوعی که Kaspersky پیش‌تر گزارش کرده بود و بخشی از بررسی آن کارزار بود. فعالیت‌های مشاهده‌شده مرتبط با NeedyMantis تا اینجا با فعالیت‌هایی هم‌راستا بوده است که Microsoft آن را به بازیگران تهدیدی که از چین فعالیت می‌کنند نسبت می‌دهد؛ هرچند Microsoft مشخص نکرده است که آیا همه این فعالیت‌ها به یک اپراتور واحد قابل انتساب است یا نه.

هرچند NeedyMantis از تکنیک‌هایی بهره می‌گیرد که در بدافزارهای مدرن رایج است، معماری آن ترکیبی از چندین loader، آرشیوهای فایل رمزگذاری‌شده سفارشی، یک قالب فایل اجرایی سفارشی و مؤلفه‌های ماژولار است که به اپراتورها امکان می‌دهد از تحلیل بگریزند و قابلیت‌ها را از طریق ماژول‌های افزوده گسترش دهند. این ویژگی‌ها، همراه با استفاده از آن در نفوذهای هدفمند، NeedyMantis را به مطالعه‌ای موردی برای فهم چگونگی ایجاد و حفظ دسترسی بلندمدت توسط بازیگران تهدید در محیط قربانی بدل می‌کند.

در این مطلب، چارچوب بدافزار NeedyMantis تحلیل می‌شود. بسته‌بندی و استقرار آن، قالب آرشیو سفارشی، معماری loader، ارتباطات command-and-control (C2) و طراحی ماژولار آن بررسی می‌شود. همچنین شاخص‌های نفوذ (IOC)، شناسایی‌های Microsoft Defender و راهنمای کاهش مخاطره ارائه می‌شود تا به سازمان‌ها برای دفاع در برابر این تهدید و فعالیت‌های مرتبط کمک کند.

عاملان مشاهده‌شده و هدف‌گیری

در زمان نگارش این گزارش، شرکت Microsoft دست‌کم یک بازیگر تهدید را در حال استفاده از بدافزار NeedyMantis مشاهده کرده است: ⁦Storm-3069.⁩ ⁦Storm-3069⁩ شناسه‌ای است که Microsoft Threat Intelligence برای فعالیت مرتبط با نفوذ در زنجیره تأمین DAEMON Tools به‌کار می‌برد. با آن‌که Microsoft ارزیابی می‌کند منشأ این فعالیت چین است، ⁦Storm-3069⁩ را به یک بازیگر تهدید دولتی چین نسبت نداده است. شرکت Microsoft بدافزار NeedyMantis را از طریق تحلیل تکمیلی شاخص‌هایی شناسایی کرد که با تحقیق Kaspersky درباره نفوذ در زنجیره تأمین DAEMON Tools مرتبط بودند.

مشاهده‌های Microsoft نشان می‌دهد فراتر از فعالیت منسوب به ⁦Storm-3069⁩ در کمپین DAEMON Tools، فعالیت‌های دیگری نیز با NeedyMantis رخ داده است؛ این امر حاکی از آن است که ممکن است بیش از یک اپراتور از این بدافزار استفاده کند. تا کنون الگوی فعالیت‌های مشاهده‌شده با NeedyMantis با فعالیت‌هایی همخوان بوده است که Microsoft آنها را به بازیگران تهدید مستقر در چین نسبت می‌دهد؛ از جمله هدف‌گیری همسو با منافع چین و بهره‌گیری از استقرار گزینشی.

NeedyMantis در نفوذهایی مشاهده شده است که بر سازمان‌های مخابراتی، دانشگاه‌ها، سازمان‌های بین‌دولتی، مؤسسات غیرانتفاعی حوزه پزشکی و پیمانکاران دولتی اثر گذاشته‌اند. با توجه به محدود بودن استقرار مشاهده‌شده این بدافزار و همسویی آن با فعالیت‌هایی که Microsoft به بازیگران تهدید مستقر در چین نسبت می‌دهد، الگوی قربانیان نشان می‌دهد NeedyMantis به‌صورت گزینشی و نه گسترده مستقر می‌شود. با این حال، Microsoft هنوز تعیین نکرده است که آیا تمام فعالیت‌های مشاهده‌شده به همان یک بازیگر تهدید قابل انتساب است یا بازیگران متعددی به این بدافزار دسترسی دارند.

بسته‌بندی و توزیع بدافزار

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

بدافزار NeedyMantis از چند مؤلفه تشکیل شده است که به C++ و به‌صورت x64 shellcode نوشته شده‌اند. زنجیره اجرای بدافزار با یک لودر مرحله‌اول و یک بایگانی فایل آغاز می‌شود. مشاهده شده است که لودر و بایگانی در کنار نرم‌افزارهای قانونی بسته‌بندی شده‌اند؛ لودر مرحله‌اول که خود را به‌عنوان یک DLL ضروری جا می‌زند، از طریق DLL sideloading بارگذاری می‌شود.

برخی از نرم‌افزارهای متن‌باز که این بدافزار از آن‌ها سوءاستفاده کرده است عبارت‌اند از: Poedit (ترجمه)، curl (انتقال داده)، Vim (ویرایشگر متن) و TightVNC (دسترسی راه دور). شرکت Microsoft همچنین مشاهده کرده است که NeedyMantis خود را به‌جای مؤلفه‌های DLL متعلق به Microsoft Office، Broadcom، Intel و NVIDIA جا می‌زند. فهرست زیر نمونه‌ای از نام مسیرهای DLL مورد استفاده بدافزار است:

  • %ProgramFiles%\Poedit\WinSparkle.dll
  • %ProgramData%\USOShared\libcurl.dll
  • %ProgramData%\VIM\vim64.dll
  • %ProgramData%\TightVNC\VIM\vim64.dll
  • %ProgramData%\office\dbghelp.dll
  • %ProgramData%\broadcom\dbghelp.dll
  • %ProgramData%\Intel\jli.dll
  • %ProgramFiles%\modifiable\nvml.dll
  • %ProgramData%\ics\nvml.dll

بایگانی فایل بدافزار همنام DLL بارگذار است، بدون پسوند؛ برای نمونه WinSparkle یا libcurl.

در یک واقعه مشاهده‌شده، یک عامل طی فعالیت تعاملی مستقیم از مجموعه‌ابزار Impacket استفاده کرد تا نرم‌افزار مشروع، DLL مخرب و بایگانی فایل را از یک اشتراک شبکه کپی کند و آن را روی یک دستگاه هدف اجرا کند. این فعالیت پس از آن انجام شد که بازیگر از پیش به محیط دسترسی پیدا کرده بود و نشان می‌دهد NeedyMantis چگونه می‌تواند در مرحله پس از به‌خطر‌افتادنِ یک نفوذ وارد محیط شود.

NeedyMantis معمولاً در مرحله پس از به‌خطر‌افتادنِ یک نفوذ مشاهده می‌شود، پس از آنکه بازیگر به محیط هدف دسترسی برقرار کرده است. هرچند یکی از کاربران شناخته‌شده این بدافزار با شناسه ⁦Storm-3069⁩ با نفوذهای زنجیره تأمین مرتبط بوده است، شرکت Microsoft مشاهده نکرده است که خود NeedyMantis از طریق نفوذ زنجیره تأمین توزیع شده باشد. با این حال، فعالیت در زنجیره تأمین همچنان یکی از روش‌هایی است که بازیگر می‌تواند از آن برای کسب دسترسی لازم جهت استقرار بدافزار استفاده کند.

معماری و قابلیت‌های NeedyMantis

بارگذار مرحله اول

بارگذار مرحله اول NeedyMantis یک DLL است که به‌صورت بارگذاری جانبی اجرا می‌شود و زمانی راه‌اندازی می‌گردد که نرم‌افزار مشروعی که همراه آن بسته‌بندی شده اجرا شود. تنها وظیفه آن استخراج بارگذار مرحله دوم از بایگانی فایل و ادامه اجرای بدافزار در آن بخش است.

در نمونه تحلیل‌شده، نام DLL بارگذار WinSparkle.dll (⁦SHA-256⁩: e842dd7642c8e04b5ec20b6393848a9c904e4832930950c16664fe7800ba382e) بود و نام بایگانی فایل آن WinSparkle (⁦SHA-256⁩: 9cb68f986043a576e19d32184c583b7d8f571c7219d8dc0065dced1c13f077ef) بود. NeedyMantis مؤلفه به‌روزرسانی نرم‌افزار WinSparkle مربوط به نرم‌افزار ترجمه Poedit را جعل و جایگزین کرده بود.

لودر برای دشوارکردن تحلیل از تکنیک‌های متداول ضدتحلیل استفاده می‌کند؛ مانند مبهم‌سازی بیشتر رشته‌های مهم آن.

A code snippet for x86 architecture manipulating memory addresses and performing data manipulation.
شکل 1. نمونه‌ای از واگشایی رشته‌های مبهم‌سازی‌شده

این روش با نام obfuscated stack strings شناخته می‌شود؛ زیرا هر جزء از رشته به‌صورت مرحله‌ای روی پشته تابع ساخته می‌شود. پس از ساخته‌شدن، با انجام عملیات‌های ریاضی گوناگون از حالت مبهم خارج می‌شود. بیشتر رشته‌های مبهم‌شده در این لودر نام ماژول‌های DLL و API در Windows هستند. این رشته‌ها پس از رفع مبهم‌سازی برای بازیابی پویا آدرس API در Windows در زمان اجرا استفاده می‌شوند.

علاوه بر رشته‌های مبهم‌سازی‌شده، بسیاری از مقادیر ثابت کد نیز به‌صورت مبهم ذخیره شده‌اند.

C++ code performing a loop that manipulates a pointer to an integer array, incrementing an element, and then performing a calculation involving pointer arithmetic before a sleep function
شکل 2. نمونه‌ای از واگشایی مقدار ثابت مبهم‌سازی‌شده «1032»

در نهایت، این لودر دو روش ضددیباگ دارد: یکی مبتنی بر ProcessDebugFlags و دیگری با استفاده از ThreadHideFromDebugger.

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

آرشیوهای فایل سفارشی

آرشیوهای فایل NeedyMantis در قالبی سفارشی، رمزگذاری‌شده و فشرده هستند. برای دسترسی به فایل‌ها، لایه بیرونی آرشیو با XOR واگشایی و سپس با تابع RtlDecompressBuffer از حالت فشرده خارج می‌شود. پس از این مرحله، مدخل‌های فایل به‌صورت مجزا در دسترس است. در هر مدخل، نام فایل با XOR واگشایی می‌شود و محتوای آن با RtlDecompressBuffer از حالت فشرده خارج می‌شود.

افست‌ها، کلیدهای XOR و مقادیر این قالب فایل از یک نمونه تا نمونه دیگر تغییر می‌کنند.

A hexadecimal data structure depicting a file's header, containing information such as checksums, entry counts, and sizes for various compressed files.
شکل 3. نمونه خروجی یک ابزار بازگشایی آرشیو که فراداده آرشیو فایل WinSparkle را نمایش می‌دهد

این آرشیو شامل 11 فایل زیر است:

  • فایل ⁦7-zip.chm⁩ مولفه معتبر ⁦7-Zip⁩ است.
  • فایل ⁦7-zip.dll⁩ مولفه معتبر ⁦7-Zip⁩ است.
  • فایل ⁦7-zip32.dll⁩ مولفه معتبر ⁦7-Zip⁩ است.
  • فایل 7z.exe مولفه معتبر ⁦7-Zip⁩ است.
  • فایل Disk2vhd.dll مولفه معتبر Sysinternals با نام Disk2vhd است.
  • فایل main.dll مولفه معتبر Sysinternals با نام Ctrl2Cap است.
  • فایل kernel32.dll یک kernel32.dll معتبر است.
  • فایل encryptbase64.ps1 لودر مرحله دوم است.
  • فایل dnsapi.dll یک dnsapi.dll واقعی نیست، اما پیکربندی بدافزار را در خود دارد.
  • فایل ws2_32.dll یک ws2_32.dll واقعی نیست، اما شامل یک DLL ارتباطی مبتنی بر WebSockets است.
  • فایل msvcrt140.dll یک msvcrt140.dll واقعی نیست، اما shellcode لازم برای بارگذاری ماژول‌های DLL و تعیین آدرس exports را در خود دارد.

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

آرشیوهای فایل NeedyMantis دیگری که تحلیل شده‌اند نام فایل‌ها و مؤلفه‌های متفاوتی داشته‌اند. برای نمونه، نسخه‌ای قدیمی‌تر از بدافزار از یک آرشیو فایل libcurl (⁦SHA-256⁩: c82520eb03c084226be4eafbff46f56dca0aa8804a2a7f23a085a96afe71ef77) استفاده می‌کرد و تنها چهار فایل در بر داشت:

  • فایل 300.c — پیکربندی بدافزار.
  • فایل 300.s — DLL ارتباطی مبتنی بر WebSockets.
  • فایل is — ماژول ماندگاری با استفاده از Windows Services.
  • فایل m.l — مؤلفه اصلی.

لودر مرحله دوم

در نمونه تحلیل‌شده، فایل encryptbase64.ps1 لودر مرحله دوم بود. با وجود پسوند .ps1 مربوط به PowerShell، محتوای فایل شل‌کد x64 است. هدف آن رمزگشایی و ازفشرده‌سازی یک باینری نهفته است که مؤلفه اصلی NeedyMantis به شمار می‌رود.

این لودر همچنین قابلیت‌هایی برای مقابله با تحلیل دارد که با مرحله اول تفاوت دارد. برای رمزگشایی رشته‌ها، دو بلوک داده رمزگذاری‌شده و کلیدهای XOR را در آفست‌های محاسبه‌شده پیدا می‌کند و سپس آن‌ها را رمزگشایی می‌کند. بلوک نخست، که اهمیت بیشتری دارد، شامل چند نام DLL و API در Windows است که نام‌ها در زمان اجرا به‌صورت پویا بازیابی می‌شوند. بلوک دوم، که در ادامه نشان داده شده است، فهرستی از نام‌های DLL در Windows و مقادیر هش Windows API را در بر دارد:

فهرستی از اعداد مبنای شانزده که نام DLLهای Windows و مقادیر هش Windows API را نشان می‌دهد.
شکل 4. مقادیر هش Windows API پس از رمزگشایی

این مؤلفه برای بازیابی توابع Windows API بر پایه مقادیر هش از الگوریتمی مبتنی بر چرخش به راست (ROR) با مقدار چرخش قابل‌پیکربندی استفاده می‌کند. در نمونه تحلیل‌شده مقدار 11 به‌کار رفته است. در شکل 5 قطعه‌کدی در Python نشان داده شده که این الگوریتم را بازتولید می‌کند:

قطعه‌کدی در Python که شامل دو تعریف تابع است: `ror(num, count, size)` و `resolve(func, name)`.
شکل 5. نمونه کد Python برای الگوریتم هش Windows API

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

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

کدی که فراداده و سرآیندهای سکشن را نشان می‌دهد؛ شامل offset، آدرس‌های مبنا، اندازه و ویژگی‌های سکشن‌های '.text'، '.rdata'، '.data' و '.reloc'.
شکل 6. نمونه خروجی ابزار تبدیل فرمت فایل اجرایی سفارشی به فایل PE

مولفه اصلی

مولفه اصلی NeedyMantis ارتباطات C2 را هماهنگ می‌کند و ماژول‌های اضافی دانلودشده را مدیریت می‌کند.

یک mutex با نام – می‌سازد؛ مانند Contoso-Poedit.exe. همانند لودر مرحله اول، اغلب رشته‌ها و مقادیر ثابتِ مولفه اصلی به‌صورت رشته‌های مبهم‌شده روی پشته ذخیره شده‌اند.

پیکربندی

پیکربندی بدافزار در فایلی با نام dnsapi.dll از آرشیو سفارشی فایل‌ها ذخیره شده بود. این نام فایل یک کتابخانه شبکه‌ای Windows را جعل می‌کند. در نمونه بررسی‌شده، فایل شامل یک ساختار دودویی به اندازه 3448 بایت است. این ساختار فیلدهای زیر را در بر دارد:

  • در آدرس 0x00: ناشناخته (پیکربندی شامل “300” بود، اما مولفه‌ها به “400” نیز ارجاع می‌دهند).
  • در آدرس 0x1c: نام مولفه ارتباطی (ws2_32.dll).
  • در آدرس 0x128: پورت C2 (443).
  • در آدرس 0x12c: میزبان C2 (corp.tripswithengine[.]com).
  • در آدرس 0x334: مسیر C2 (/library/zip/).
  • در آدرس 0x53C: مقدار WinHttpOpen AccessType (0).
  • در آدرس 0x954: نام کاربری Proxy (تنظیم نشده).
  • در آدرس 0xB5C: گذرواژه Proxy (تنظیم نشده).
  • در آدرس 0xD64: مرتبط با زمان خواب (300).
  • در آدرس 0xD68: مرتبط با زمان خواب (300).

کتابخانه DLL ارتباطات

طبق آنچه در پیکربندی آمده است، NeedyMantis از مولفه‌ای ارتباطی با نام ws2_32.dll استفاده می‌کند. این مولفه نیز در آرشیو سفارشی فایل‌ها ذخیره شده است. همانند فایل پیکربندی، نام فایل یک کتابخانه شبکه‌ای Windows را جعل می‌کند.

این DLL ارتباطات تنها یک خروجی با نام SystemInfo دارد. همان‌گونه که در شکل 7 آمده است، SystemInfo تعداد 10 تابع در اختیار مولفه اصلی می‌گذارد تا یک اتصال WebSockets با C2 برقرار و نگهداری شود:

A sequence of function declarations for a communication system, including open, close, connect, send, receive, and placeholder functions.
شکل 7. توابع API در DLL ارتباطات

این کتابخانه برای WebSockets از APIهای WinINet استفاده می‌کند. همچنین مقدار user-agent به‌صورت hard-coded برابر firefox/21.0 است.

نسخه دومی از DLL ارتباطات نیز در یک آرشیو فایل مشاهده شده است. این نسخه همان API ارتباطی را پیاده‌سازی می‌کند، اما به‌جای WinINet از Libwebsockets (LWS) استفاده می‌کند.

فرمان و کنترل

بیکن اولیه C2 یک درخواست HTTPS GET است، مشابه شکل 8 زیر:

An HTTP request for a ZIP file in a web browser, specifying various cache control and connection settings.
شکل 8. درخواست اولیه C2 از نوع HTTPS GET

هدر Set-Cookie حاوی اطلاعات سامانه است. مقدار هدر را می‌توان از Base64 دیکد و سپس با RtlDecompressBuffer از حالت فشرده خارج کرد. پس از خارج‌سازی از فشردگی، یک شیء JSON به دست می‌آید. کلیدهای آن عبارت‌اند از:

  • نام رایانه – c
  • نام کاربری – u
  • داده‌ای که با Base64 کدگذاری شده است؛ پس از decode شامل ورودی‌هایی می‌شود که هر کدام در یک خط و به‌صورت «<key>: <value>» هستند – o
    • نام فرآیند – p
    • فرآیند والد – pa
    • فایل‌ها در شاخه ProgramFiles – f
    • فهرست فرآیندها – p

    سپس اتصال به WebSockets تبدیل می‌شود و ادامهٔ ارتباط با یک پروتکل C2 دودویی انجام می‌شود. این پروتکل به یک سرآیند و مؤلفه‌های دادهٔ اختیاری تقسیم می‌شود. سرآیند 44-بایتی شامل فیلدهای زیر است:

    • کلید XOR 16 بایتی: 0x00
    • طول دادهٔ غیرفشرده: 0x10
    • طول دادهٔ فشرده: 0x14
    • شمارهٔ فرمان: 0x18
    • طول داده: 0x28
    • دادهٔ اختیاری: 0x2c

    یک کلید XOR تصادفی به طول 16 بایت تولید می‌شود و سرآیند از افست 0x18 به بعد با XOR کدگذاری می‌شود. اگر داده‌ای وجود داشته باشد، با RtlCompressBuffer فشرده و در صورت نیاز با RC4 نیز رمزگذاری می‌شود.

    پیام‌های اولیهٔ این پروتکل دودویی یک تبادل کلید با سرور C2 هستند. روند به این صورت اجرا می‌شود:

    • از سرور C2 تعداد 32 بایت دریافت می‌شود، اما نادیده گرفته می‌شود.
    • یک بافر تصادفی 1024 بایتی ایجاد می‌شود.
    • 32 بایت نخست این بافر تصادفی به‌عنوان کلید RC4 برای ارتباطات بعدی استفاده می‌شود.
    • یک بافر 256 بایتی ساخته می‌شود که با google.com شروع می‌شود و ادامهٔ آن بایت‌های تصادفی است.
    • این بافر 256 بایتی با RC4 رمزگذاری می‌شود.
    • یک طول تصادفی بین 292 و 1282 انتخاب می‌شود.
    • دادهٔ پیام پروتکل C2 به این صورت ساختاربندی می‌شود:
      • طول تصادفی: 0x00
      • بافر RC4-شدهٔ google.com: 0x04
      • بافر تصادفی 1024 بایتی که برای ساخت کلید RC4 استفاده شده است (حداقل 32 بایت از آن): 0x104

      فرمان‌ها

      مولفهٔ اصلی تنها چند فرمان دارد. فرمان‌های ارسالی به C2 شامل موارد زیر است:

      • ارسال نام رایانه و نام کاربری – 1110
      • ارسال یک شناسهٔ hard-coded (مانند 20001) – 1112
      • پیام keep alive برای نگه‌داشتن اتصال – 1150

      فرمان‌هایی که از C2 دریافت می‌شود شامل موارد زیر است:

      • بارگذاری ماژول – 1020
      • خارج‌کردن ماژول – 1030
      • ارسال داده به ماژول – 1050 / 1150
      • غیرفعال کردن پرچم‌های فعال – 1070

      فرمان‌های بارگذاری، خارج‌کردن و ارسال داده در مولفهٔ اصلی نشان می‌دهد که NeedyMantis می‌تواند قابلیت‌های خود را از طریق ماژول‌های افزوده گسترش دهد، اما توانمندی‌های این ماژول‌ها هنوز تأیید نشده است.

      راهنمای کاهش مخاطره و حفاظت

      شرکت Microsoft انجام اقدامات زیر را برای کاهش اثر این تهدید توصیه می‌کند.

      • در ترافیک خروجی شبکه به‌دنبال اتصال‌های خروجی به دامنه corp.tripswithengine[.]com بگردید.
      • قابلیت cloud-delivered protection و تنظیم block at first sight را فعال کنید تا گونه‌های جدید و ناشناخته بدافزار به‌سرعت شناسایی و مسدود شوند.
      • قابلیت Endpoint Detection and Response (EDR) در حالت block mode را اجرا کنید تا Microsoft Defender for Endpoint بتواند آرتیفکت‌های مخرب را مسدود کند، حتی زمانی که آنتی‌ویروس غیر Microsoft تهدید را تشخیص نمی‌دهد یا Microsoft Defender Antivirus در حالت passive اجرا می‌شود. قابلیت EDR در حالت block mode در پشت‌صحنه برای رفع آرتیفکت‌های مخربی که پس از نفوذ شناسایی می‌شوند عمل می‌کند.
      • قابلیت network protection را در Microsoft Defender for Endpoint فعال کنید.
      • قابلیت automatic attack disruption را در Microsoft Defender XDR پیکربندی کنید. قابلیت automatic attack disruption برای مهار حمله‌های در حال اجرا، محدود کردن اثرگذاری بر دارایی‌های سازمان و فراهم‌کردن زمان بیشتر برای تیم‌های امنیتی به‌منظور رفع کامل حمله طراحی شده است.
      • مشتریان Microsoft Defender XDR می‌توانند قوانین attack surface reduction زیر را برای پیشگیری از تکنیک‌های رایج مورد استفاده مهاجمان فعال کنند.
        • قانون Block executable files from running unless they meet a prevalence, age, or trusted list criterion
        • قانون Block execution of potentially obfuscated scripts

        می‌توانید اثر یک قانون attack surface reduction بر شبکه خود را با باز کردن security recommendation مربوط به همان قانون در threat and vulnerability management ارزیابی کنید. در پنجره جزئیات توصیه، بخش user impact را بررسی کنید تا مشخص شود چه درصدی از دستگاه‌ها می‌توانند بدون اثر نامطلوب بر بهره‌وری کاربران، سیاست جدید برای فعال‌سازی قانون در حالت blocking را بپذیرند.

        شناسایی‌های Microsoft Defender

        مشتریان Microsoft Defender می‌توانند به فهرست شناسایی‌های قابل‌اطلاق زیر مراجعه کنند. Microsoft Defender فرایندهای شناسایی، پیشگیری، بررسی و پاسخ را در سطح endpointها، هویت‌ها، ایمیل و برنامه‌ها هماهنگ می‌کند تا در برابر حملاتی از جنس تهدید مطرح‌شده در این نوشته، حفاظت یکپارچه فراهم کند.

        تاکتیک فعالیت مشاهده‌شده پوشش Microsoft Defender
        اجرا بارگذاری shellcode، sideloading مربوط به DLL، رمزگشایی و فشرده‌گشایی. پوشش توسط Microsoft Defender for Endpoint:

        – Suspicious DLL loaded
        – An executable file loaded an unexpected DLL file
        – Suspicious decode command

        همچنین Microsoft Defender Antivirus:

        – TrojanDropper:Win64/NeedyMantis

        اجرا فعالیت دست‌به‌کیبورد با بهره‌گیری از ابزار Impacket برای مراحل بعدی. پوشش توسط Microsoft Defender for Endpoint:

        – Ongoing hands-on-keyboard attack via Impacket toolkit
        – Impacket toolkit
        – Impacket module execution

        همچنین Microsoft Defender Antivirus:

        – HackTool:Win32/Impacket

        اجرا الگوهای TTP مربوط به عامل تهدید ⁦Storm-3069.⁩ پوشش توسط Microsoft Defender for Endpoint:

        – Suspicious activity linked to an emerging threat actor has been detected
        فرماندهی و کنترل اتصال شبکه به زیرساخت NeedyMantis. Microsoft Defender Antivirus:

        – Behavior:Win64/NeedyMantis

        راهکار Microsoft Security Copilot

        راهکار Microsoft Security Copilot در Microsoft Defender یکپارچه است و برای تیم‌های امنیتی قابلیت‌های مبتنی بر AI فراهم می‌کند تا رخدادها را خلاصه کنند، فایل‌ها و اسکریپت‌ها را تحلیل کنند، هویت‌ها را خلاصه کنند، از پاسخ‌های راهنما استفاده کنند، و نیز خلاصه دستگاه، پرس‌وجوهای شکار و گزارش‌های رخداد تولید کنند.

        مشتریان همچنین می‌توانند ایجنت‌های AI از جمله این ایجنت‌های Microsoft Security Copilot را برای انجام کارهای امنیتی به‌شکل کارآمد استقرار دهند:

        • ایجنت Threat Intelligence Briefing
        • ایجنت Phishing Triage
        • ایجنت Threat Hunting
        • ایجنت Dynamic Threat Detection

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

        گزارش‌های اطلاعات تهدید

        مشتریان Microsoft Defender XDR می‌توانند برای دریافت به‌روزترین اطلاعات درباره عامل تهدید، فعالیت مخرب و تکنیک‌هایی که در این نوشته بحث شده است، گزارش‌های threat analytics زیر را در پرتال Defender استفاده کنند (نیازمند لایسنس برای حداقل یکی از محصولات Defender XDR). این گزارش‌ها اطلاعات threat intelligence، اطلاعات حفاظتی و اقدامات پیشنهادی برای پیشگیری، کاهش اثر یا پاسخ‌گویی به تهدیدهای مرتبطِ یافت‌شده در محیط‌های مشتریان ارائه می‌کنند.

        • نمایه ابزار: NeedyMantis
        • نمایه عامل: ⁦Storm-3069⁩
        • نمایه ابزار: Impacket

        مشتریان Microsoft Security Copilot همچنین می‌توانند از Microsoft Security Copilot integration در Microsoft Defender Threat Intelligence استفاده کنند، چه در پرتال مستقل Security Copilot و چه در تجربه یکپارچه در پرتال Microsoft Defender، تا اطلاعات بیشتری درباره این بدافزار و فعالیت‌های مرتبط به‌دست آورند.

        پرس‌وجوهای شکار

        راهکار Microsoft Defender XDR

        مشتریان Microsoft Defender XDR می‌توانند پرس‌وجوهای advanced hunting زیر را اجرا کنند تا فعالیت‌های مرتبط را در شبکه‌های خود بیابند.

        جا زدن NeedyMantis به‌جای نرم‌افزار

        فهرستی از پوشه‌های قانونی و بدون‌تغییرِ برنامه‌ها، به‌همراه نام فایل‌های DLL مخربِ جایگزینی که توسط NeedyMantis به‌صورت بارگذاری جانبی بارگذاری شده‌اند.

        DeviceFileEvents
        | where Timestamp > ago(7d)
        | where (
            (FolderPath matches regex @"^[A-Za-z]:\\Program Files\\Poedit" and FileName == "WinSparkle.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\Program Files \(x86\)\\Poedit" and FileName == "WinSparkle.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\USOShared" and FileName == "libcurl.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\VIM" and FileName == "vim64.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\TightVNC\\VIM" and FileName == "vim64.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\office" and FileName == "dbghelp.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\broadcom" and FileName == "dbghelp.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\Intel" and FileName == "jli.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\Program Files\\modifiable" and FileName == "nvml.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\Program Files \(x86\)\\modifiable" and FileName == "nvml.dll")
            or (FolderPath matches regex @"^[A-Za-z]:\\ProgramData\\ics" and FileName == "nvml.dll")
        )
        | project Timestamp, DeviceId, DeviceName, ActionType, FolderPath, FileName,
                  SHA1, SHA256, MD5,
                  InitiatingProcessAccountDomain, InitiatingProcessAccountName, InitiatingProcessAccountSid,
                  InitiatingProcessAccountUpn,
                  InitiatingProcessMD5, InitiatingProcessSHA1, InitiatingProcessSHA256,
                  InitiatingProcessFolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine,
                  InitiatingProcessCreationTime,
                  ReportId, TenantId
        

        بخش NeedyMantis C2

        این کوئری اتصال به سایت C2 متعلق به NeedyMantis را برای این فعالیت شناسایی می‌کند.

        search in (DeviceNetworkEvents, EmailUrlInfo, UrlClickEvents, DeviceEvents, DeviceFileEvents, DeviceProcessEvents)
          "corp.tripswithengine.com"
        | where Timestamp > ago(7d)
        | extend SourceTable = $table
        | project Timestamp,
                  DeviceName,
                  InitiatingProcessAccountName,
                  InitiatingProcessAccountUpn,
                  AccountName,
                  AccountUpn,
                  RemoteIP,
                  LocalIP,
                  IPAddress,
                  RemoteUrl,
                  Url,
                  UrlDomain,
                  FileOriginUrl,
                  FileOriginReferrerUrl,
                  FileOriginIP,
                  ProcessCommandLine,
                  InitiatingProcessCommandLine,
                  InitiatingProcessFileName,
                  FileName,
                  FolderPath,
                  NetworkMessageId,
                  SourceTable
        

        هاردکد شدن user-agent در DLL ارتباطی NeedyMantis

        اتصال‌هایی را که از user-agent هاردکدشده NeedyMantis استفاده می‌کنند شناسایی کنید.

        search in (DeviceNetworkEvents, DeviceEvents, UrlClickEvents, EmailUrlInfo)
          "Firefox/21.0"
        | where Timestamp > ago(7d)
        | extend SourceTable = $table
        | project Timestamp,
                  DeviceName = iff(isnull(DeviceName), "", DeviceName),
                  AccountUpn = coalesce(InitiatingProcessAccountUpn, AccountUpn, ""),
                  AccountName = coalesce(InitiatingProcessAccountName, AccountName, ""),
                  RemoteIP = coalesce(RemoteIP, IPAddress, ""),
                  Url = coalesce(RemoteUrl, Url, ""),
                  UserAgent = AdditionalFields,
                  SourceTable
        

        راهکار Microsoft Sentinel

        مشتریان Microsoft Sentinel می‌توانند از تحلیل‌های TI Mapping (مجموعه‌ای از تحلیل‌ها که همگی با پیشوند «TI map» آغاز می‌شوند) استفاده کنند تا نشانگرهای دامنه‌های مخرب ذکرشده در این پست را به‌صورت خودکار با داده‌های موجود در فضای کاری خود تطبیق دهند. اگر تحلیل‌های TI Map در حال حاضر مستقر نشده‌اند، مشتریان می‌توانند راهکار Threat Intelligence را از Microsoft Sentinel Content Hub نصب کنند تا قانون تحلیل در فضای کاری Sentinel آن‌ها مستقر شود.

        زیرساخت C2 NeedyMantis

        این کوئری اتصال به سایت command and control مربوط به NeedyMantis را برای این فعالیت شناسایی می‌کند.

        search in (CommonSecurityLog, SecurityEvent, AzureDiagnostics)
          "corp.tripswithengine.com"
        | where TimeGenerated > ago(7d)
        | project TimeGenerated,
                  DeviceName,
                  Computer,
                  SourceIP,
                  SourcePort,
                  SourceUserName,
                  DestinationIP,
                  DestinationPort,
                  DestinationHostName,
                  DestinationDnsDomain,
                  RequestURL,
                  ProcessName,
                  DestinationUserName,
                  SourceHostName,
                  Message,
                  $table
        

        هاردکد بودن user-agent در DLL ارتباطی NeedyMantis

        اتصال‌هایی را که از user-agent هاردکد NeedyMantis استفاده می‌کنند شناسایی کنید.

        CommonSecurityLog
        | where TimeGenerated > ago(7d)
        | where RequestClientApplication contains "Firefox/21.0" or Message contains "Firefox/21.0"
        | project TimeGenerated, DeviceName, SourceUserName, SourceIP, DestinationIP, RequestURL, RequestClientApplication
        

        شاخص‌های نفوذ

        شاخص نوع توضیح اولین مشاهده آخرین مشاهده
        e842dd7642c8e04b5ec20b6393848a9c904e4832930950c16664fe7800ba382e ⁦SHA-256⁩ لودر مرحله اول WinSparkle.dll ⁦2026-05-21⁩ ⁦2026-05-21⁩
        9cb68f986043a576e19d32184c583b7d8f571c7219d8dc0065dced1c13f077ef ⁦SHA-256⁩ آرشیو فایل سفارشی WinSparkle ⁦2026-05-23⁩ ⁦2026-05-23⁩
        c82520eb03c084226be4eafbff46f56dca0aa8804a2a7f23a085a96afe71ef77 ⁦SHA-256⁩ آرشیو فایل سفارشی libcurl ⁦2025-10-03⁩ ⁦2025-10-03⁩
        corp.tripswithengine[.]com نام میزبان نام میزبان C2

مطالب مرتبط

The Hacker News Attackers Breached JetBrains Cadence via Unpatched TeamCity, Extracting AWS Credentials
اخبار

نفوذ به Cadenceِ JetBrains از طریق TeamCity و نشت اعتبارنامه‌های AWS

شرکت JetBrains اعلام کرد مهاجمان با CVE-2026-63077 در TeamCity به Cadence نفوذ کرده و به نسخه‌های پشتیبان و داده‌های کاربری دست یافته و اعتبارنامه‌های AWS را استخراج کرده‌اند. کاربران باید فوراً اسرار را تعویض کنند.

ادامه مطلب »

دیدگاهتان را بنویسید

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

انتخاب مسیریاب

برای مسیریابی یکی از اپلیکیشن های زیر را انتخاب کنید.