تحلیل Lemon Duck : بدافزار یا APT؟

بدافزار lemon duck

نویسنده: کوشا زنجانی
یک ماه پیش از طرف شرکتی (که در این مقاله آن را شرکت قربانی صدا می‌کنیم) یک لاگ برای من ارسال شد که فعالیتی مخرب در آن تشخیص داده شده بود. تنها چیزی که من در این لاگ پیدا کردم، یک URL بود!
ابتدا با تکنیک‌های Google Dork این لینک را جستجو کردم. بعد از اندکی جستجو چند URL دیگر پیدا کردم که یکی از آن‌ها متعلق به وبسایت app.any.run بود. این وبسایت یکی از بهترین سندباکس‌ها برای تحلیل بدافزار و دانلود نمونه است، و به نظر می‌رسید که این لینک قبلا در این سندباکس تحلیل شده است؛ ولی من کارم را ادامه دادم چون می‌خواستم خودم لینک را تحلیل کنم.
کار را با جمع‌کردن سرنخ‌هایی شروع کردم که با استفاده از آن‌ها بتوانم بفهمم چطور باید تحلیلم را شروع کنم. به نظر می‌رسید نقطه‌ی شروع، چند ارتباط در بستر شبکه بوده است، به همین خاطر شروع به بررسی این ارتباطات کردم. این بدافزار با دامنه‌ی زیر در ارتباط بوده:

hxxp://t[dot]awcna[dot]com/ipc[dot]jsp?h%22

بدافزار یک اسکریپت پاورشل را از لینک مذکور دانلود و اجرا می‌کند.

اسکریپت پاورشل Lemon Duck

اسکریپت پاورشل دانلود‌شده، چندین بار مبهم‌سازی شده بود. این مبهم‌سازی‌ها با تکنیک‌های مختلفی از جمله متد replace() و روش Character Reversing انجام شده بودند. تصویر زیر، فاز اول بدافزار را نشان می‌دهد که مبهم‌سازی شده است.

فاز اول حمله Lemon Duck

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

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

کد معکوس‌شده

به جامعه کارشناسان امنیت و تست نفوذ بپیوندید:

ولی صبر کنید، هنوز مشکل حل نشده! این کد دیگر چیست؟ این کد یک کد معکوس‌شده یا Reversed Code است. خنثی‌کردن این مکانیزم مبهم‌سازی کار سختی نیست! کافی‌ست IEX() را به Write-Output تبدیل کنیم.

بخش نیازمند تغییر

بخش نشان‌داده‌شده در تصویر بالا را به Write-Output تغییر می‌دهم. خروجی چیزی شبیه به تصویر زیر می‌شود:

خروجی مبهم‌سازی شده

این خروجی هم مبهم‌سازی شده است. دوباره همان تکنیک قبلی را استفاده می‌کنیم:

کد مبهم‌سازی شده

پنجره سمت چپ کد را نشان می‌دهد که باز هم مبهم‌سازی شده است! ولی قول می‌دهم این دفعه آخرین بار باشد:

مبهم‌سازی خنثی شده

دوباره همان تکنیک را به کار بردیم و این بار مکانیزم مبهم‌سازی به طور کامل خنثی شد! هورا! (ولی تمام فازهای بدافزار مثل این فاز مبهم‌سازی شده‌اند، به همین خاطر در فازهای بعدی دیگر این فرایند را توضیح نمی‎دهم).

سورس‌کد بدافزار lemon duck

حالا می‌توانیم سورس‌کد بدافزار را بخوانیم. در این فاز، بدافزار در حال آماده شدن برای فاز 0x02 است (یعنی تعریف متغیرها)، ضمن این که بدافزار با schtasks دو تسک تعریف می‌کند که اسکریپت را هر 1 ساعت اجرا می‌کنند. نام تسک‌ها به صورت تصادفی توسط بدافزار انتخاب می‌شود، بدافزار این کار را کرده تا مطمئن شود اجرای آن به درستی ادامه پیدا می‌کند.

فاز 2

در فاز 2 (یادتان باشد که این فاز هم مبهم‌سازی شده!) بدافزار اطلاعات مختلفی را راجع به سیستم آلوده‌شده مثل نوع سیستم‌عامل، نسخه سیستم‌عامل، پیکربندی شبکه و… به دست آورده و این اطلاعات را به سرور فرماندهی و کنترل (C2) هکر می‌فرستد. سرور هکر با یک اسکریپت پاورشل به این اطلاعات پاسخ می‌دهد؛ این اسکریپت همان پی‌لود فاز 0x03 است. تصویر زیر بخشی از اسکریپت فاز 0x02 است:

بخشی از اسکریپت فاز 0x02

خب وارد فاز 0x03 می‌شویم. در این فاز بدافزار باز هم اطلاعات بیشتری راجع به درایورهای سیستم هدف جمع‌آوری کرده و آن‌ها را برای استفاده در مراحل بعدی ذخیره می‌کند. این بدافزار بعدا از این اطلاعات برای آلوده‌کردن درایوهای متصل‌شده به سیستم مثل حافظه‌‎های USB و هاردهای اکسترنال استفاده می‌کند. در این فاز هم مجددا چند پارامتر به سرور C2 مهاجم ارسال شده و فاز 0x04 دانلود می‌شود. در فاز بعدی، مقداری اطلاعات به‌علاوه یک ماینر رمزارز در سیستم قربانی دانلود می‌شود. برای اجراشدن ماینر رمزارز، یک پروسس پاورشل به‌صورت مخفی با استفاده از Invoke-ReflectivePEInjection از ماژول PowerSploit ایجاد شده و ماینر رمزارز به این پروسس پاورشل تزریق می‌شود. از آن‌جایی که تزریق پروسس به صورت Reflective انجام شده است، فایل در ساب‌پروسس‌های پاورشل نمایش داده نمی‌شود و به راحتی نمی‌توان آن را شناسایی کرد.

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

سورس‌کد ماینر تزریق شده داخل پروسس

در روند تحلیل مشخص شد که این بدافزار علاوه بر آلوده‌کردن سیستم قربانی، سعی می‌کند باقی سیستم‌های شبکه را هم آلوده کند. در فاز نهایی، بدافزار با استفاده از تکنیک‌های مختلفی در شبکه منتشر می‌شود. بدافزار ابتدا سعی می‌کند با استفاده از اکسپلویت EternalBlue از فریم‌ورک Empire، سیستم‌عامل‌های دارای نسخه آسیب‌پذیر SMB را – که امکان حمله RCE را به وجود می‌آورند – اکسپلویت کند. توسعه‌دهنده‌ی بدافزار برای دورزدن آنتی‌ویروس‌ها و راهکارهای EDR، از یک مکانیزم مبهم‌سازی روی اکسپلویت EternalBlue استفاده کرده است. در تصویر زیر می‌توانید مقایسه‌ای بین اکسپلویت اصلی (سمت چپ) و اکسپلویت اصلاح‌شده (سمت راست) ببینید.

مقایسه میان اکسپلویت اصلی و اکسپلویت اصلاح‌شده
مقایسه میان اکسپلویت اصلی و اکسپلویت اصلاح‌شده

بدافزار از ابزاری به نام PingCastle برای اسکن شبکه و انجام عملیات Enumeration استفاده می‌کند. این ماژول به زبان C# توسعه داده شده است. تصویر زیر، تصویری از اسکریپت PingCastle است که داخل اسکریپت پاورشل قرار گرفته است (wrap شده است).

اسکریپت PingCastle

این بدافزار برای آلوده‌کردن دستگاه‌های متصل‌شده به سیستم قربانی که در فاز قبلی شناسایی شده بودند، از یک اسکریپت C# استفاده می‌کند. بدافزار در دستگاه‌های متصل‌شده، یک فایل lnk ایجاد می‌کند.

اسکریپت C#

شاید فکر کنید تا این‌جای کار تحلیل این بدافزار خیلی طولانی شده، اما صبر کنید، هنوز تحلیل تمام نشده!
بدافزار با استفاده از ابزار Powerdump از فریم‌ورک Nishang هش سیستم را دامپ می‌کند تا بتواند از آن در حمله PassTheHash (یا به اختصار حمله PTH) استفاده کند.

Powerdump

علاوه بر این، بخشی از فاز چهارم حمله هم صرف بروت‌فورس‌کردن دیتابیس‌های MsSql و RDP می‌شود.

بروت‌فورس‌کردن دیتابیس‌های MsSql و RDP

اگر بدافزار پسوردهای صحیح را پیدا کند، آن‌ها را به سرور C2 مهاجم ارسال می‌کند.

ارسال اطلاعات به سرور c2 هکر

این جا باید این نکته را هم بگویم که بدافزار فایلی به نام wf.cab را هم دانلود کرده و آن را در فولدر %TEMP% قرار داده و از حالت فشرده خارج می‌کند. از فایل wf.cab، ابزارهای Mimikatz و wfreerdp استخراج می‌شوند. Mimikatz برای حمله PTH (حمله PassTheHash) و wfreerdp برای حمله‌ی RDP و ایجاد بک‌دور استفاده می‌شود.

ارسال گزارش برای مهاجم

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

نحوه کارکرد بدافزار lemon duck

علاقمند به حوزه امنیت اطلاعات و آشنا به حوزه تست نفوذ
  • facebook
  • twitter
  • googleplus
  • linkedIn
  • flickr

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

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