محققای Sekoia یه گزارش منتشر کردن در خصوص کرم PlugX که از طریق USB منتشر میشه. با توجه به اینکه ایران در لیست آلوده ترین کشورها به این کرم است، به بررسی این گزارش پرداختیم.
نکات کلیدی :
- در سپتامبر 2023، محققا تونستن یک سرور C2 متعلق به کرم PlugX رو Sinkhole کنن. Sinkhole تکنیکی است که در اون، برای از کار انداختن سایت یا سرور، ترافیک اونو به یک سرور یا IP جعلی هدایت میکنن. محققا با پرداخت تنها 7 دلار، تونستن IP منحصر به فرد یک نوع از این کرمهارو که در گزارش Sophos بهش اشاره شده رو بدست بیارن.
- تقریبا بعد از 4 سال از راه اندازی اولیه این کرم، حدود 90 هزار تا 100 هزار IP عمومی منحصربه فرد هنوز آلوده هستن و هر روز درخواستهایی مرتبط با PlugX رو به سرور محققا ارسال میکنن.
- محققا موقع بررسی رمزنگاری ارتباطات PlugX ، متوجه شدن که امکان ارسال دستورات برای پاکسازی ایستگاههای کاری آلوده وجود داره. دو رویکرد داشتن: یک رویکرد پاکسازی ایستگاه کاری آلوده و رویکرد دوم پاکسازی ایستگاه آلوده و درایو USE
- با وجود اینکه این کرم بطور کامل قابل توقف نیست، محققا امکان پاکسازی رو با مفهومی از فرایند پاکسازی حاکمیتی به کشورهای آسیب دیده ارائه دادن.
در مارس 2023، محققای Sophos، گزارشی با عنوان A border-hopping PlugX USB worm takes its act on the road در خصوص یک نوع از PlugX که قابلیت کرم بودن رو داره، منتشر کردن.
این نوع جدید، در سال 2020 و با هدف انتشار از طریق فلش های آلوده، دور زدن Air gapها، آلوده کردن شبکه های دور از اینترنت و سرقت اسناد از اونا توسعه داده شده.
طبق گزارش Sophos همه ی این نمونه های PlugX ، با یک آدرس IP:45.142.166[.]112 ارتباط میگیرن که توسط GreenCloud میزبانی میشن.
در سپتامبر 2023، محققا تونستن این IP رو بدست بیارن تا بتونن این بات نت رو sinkhole کنن. اولش فکر میکردن که تعداد قربانیان متصل به این سرور، همانند sinkholeهای معمولیشون، چند هزار قربانی باشه. اما با راهاندازی یک وب سرور ساده، شاهد جریان مداوم درخواستهای HTTP شدن که در طول روز متغییر بوده.
در ادامه محققا اومدن درخواستهارو در یک دیتابیس ذخیره کردن، تا بتونن آلودگی رو تحلیل کنن. در مجموع از سپتانبر 2023، حدود 90 هزار تا 100 هزار IP منحصر به فرد، بصورت روزانه درخواستهای مختلفی مرتبط با PlugX رو به این سرور ارسال میکردن.
نکته ای که وجود داره اینه که، این بات نت یک بات نت مرده هستش، یعنی اپراتورهاش دیگه اونو کنترل نمیکنن. بنابراین هرکسی که قابلیت رهگیری یا مالکیت این سرور داشته باشه، میتونه دستورات دلخواه رو به میزبانهای آلوده ارسال کنه و دوباره فعالیت های مخرب این بات نت رو در اختیار بگیره.
با توجه به این مطالب، محققا به مجریان قانون و CERTها پیشنهاد کردن که با توجه به کنترل سرور C2، بدافزار رو از طریق راه دور از روی سیستم های قربانیان پاکسازی کنن.
در این گزارش نحوه ی Sinkhole یک IP، تکنیک های مورد استفاده برای جمع آوری تله متری از ایستگاههای کاری آلوده و عملکرد ارتباطات رمزنگاری شده PlugX ، که امکان پاکسازی آلودگی از راه دور ایستگاههای کاری رو میده، بررسی شده.
PlugX یک سلاح سایبری قدیمی چینی:
اولین نسخه ی شناخته شده ی PlugX ، برمیگیرده به گزارش Trend Micro در سال 2008 که در اون اشاره شده بود که چینی ها از این بدافزار برای هدف قرار دادن کاربران مرتبط با دولت و یک سازمان خاص در ژاپن استفاده کردن.
تا سال 2012، اغلب برای آلوده کردن کاربران آسیایی مورد استفاده قرار میگرفته اما به تدریج اهداف غربی رو هم شامل شده. این بدافزار اغلب از تکنیک DLL Side-Loading لوود میشه. در این روش، یک فایل اجرایی معتبر یک DLL مخرب یا دستکاری شده رو لوود میکنه. این DLL بعدش، مولفه ی اصلی PlugX رو که در یک قطعه باینری رمزگذاری شده در سیستم فایل قرار داره رو در حافظه نگاشت کرده و اجرا میکنه [T1574.002].
رابط مدیریتی PlugX، این امکان رو به اپراتور میده تا چندین میزبان آلوده رو با عملکردهایی که معمولا در بکدورها وجود داره مانند اجرای دستورات از راه دور، آپلود و دانلود فایل، جستجوی سیستم فایل و … کنترل و مدیریت کنه.
این بکدور که اولین بار توسط Zhao Jibin معروف به WHG توسعه یافته، در طول زمان به انواع مختلفی تکامل یافته. PlugX بین چندین گروه هکری به اشتراک گذاشته شده که اکثر اونا به شرکتهای پوششی مرتبط با وزارت امنیت داخلی چین نسبت داده شدن.
اضافه کردن قابلیت کرمی به PlugX:
در جولای ۲۰۲۰، طبق گزارش چندین محقق، بازیگران پشت گروه هکری Mustang Panda ایده ی اضافه کردن قابلیت کرمی رو به PlugX در سر داشتن. این اقدام احتمالا برای هدف قرار دادن چندین کشور بطور همزمان در یک حمله و یا گسترش تواناییهای اون برای دسترسی به شبکه های دور از اینترنت به منظور سرقت فایل از ایستگاههای کاری آلوده صورت گرفته.
این مولفه ی کرمی، درایو های فلش USB متصل رو با اضافه کردن موارد زیر آلوده میکنه:
- یک فایل میانبر ویندوز که نامش همون نام درایو فلش آلوده است.
- سه تا فایل برای DLL sideloading (شامل یک فایل اجرایی معتبر، یک DLL مخرب و یک قطعه باینری) که درون پوشه مخفی RECYCLER.BIN درایو قرار میگیرن.
محتوای اصلی USB به یک پوشه جدید منتقل میشه که نامش کاراکتر non-breaking space (کد اسکی: 0xA0) است.
در خصوص کرم Raspberry Robin USB، وقتی کاربر یک فلش آلوده رو باز میکنه:
- کاربر یک شورتکات با نام دستگاه فلش رو مشاهده میکنه.
- کاربر با کلیک روی اون، منجر به شروع زنجیره آلودگی PlugX میشه.
- PlugX اولش پنجره فعلی رو میبنده و در یک پنجره جدید، دایرکتوری حاوی فایلهای معتبر که بالا اشاره شد (اسمش 0xA0 بود) رو باز و نمایش میده.
- در ادامه خوش در مسیر زیر کپی میکنه :
1 |
%userprofile%/AvastSvcpCP/ |
- برای پرسیست، از مسیر رجستری زیر استفاده میکنه:
1 |
HKCU[…]\CurrentVersion\Run |
- در نهایت، نسخه ای که در هاست کپی کرده رو اجرا میکنه و خودش رو که از USB در حال اجرا بود، خاتمه میده.
- بدافزار وقتی از هاست اجرا میشه، هر 30 ثانیه فلش مموری های جدید رو بررسی میکنه تا اگه مورد جدید به سیستم متصل شد، اونو آلوده کنه.
چیزی که باعث میشه، ایده ی کرمی اشتباه باشه اینه که، با توجه به اینکه هدف این بدافزار شبکه های خاص هستش، این هدف منجر به غیرقابل کنترل شدن بدافزار میشه. یعنی بدافزار خودش از طریق USB در خیلی از شبکه ها تکثیر میکنه و از طرفی عملکرد داخلی و رابط مدیریتی PlugX برای مدیریت هزاران میزبان آلوده طراحی نشده (DDOS میشه)، در نتیجه باعث میشه تا اپراتورها، C2 منحصربه فرد خودشون رو کنار بزارن.
اینکه اپراتورها، C2 رو بدلیل حمله ی DDOS قربانیان کنار گذاشتن یا اینکه کمپین موفقیت آمیز بوده و مهاجمین به اهدافشون رسیدن و در نتیجه اونو کنار گذاشتن، برای محققین مشخص نیست.
نکته ای که وجود داره اینه که، یک بازه زمانی بسیار کوتاهی، تنها یک ماه ، بین تاریخ کامپایل wsc.dll و آدرس IP:45.142.166[.]112 ، بعنوان C2 برای PlugX، توسط یک منبع معتبر مشاهده شده.
Sinkhole کردن کرم PlugX :
در حوزه هوش تهدید، Sinkhole کردن برخی از اجزای زیرساختهای مخرب با ثبت دامنه های منقضی شده یا دامنه های ثبت نشده (در مورد الگوریتمهای تولید دامنه یا زیرساختهای پشتیبان)، روش کاملاً رایجی است. برای مثال، محققا اخیراً یکی از بردارهای آلودگی بات نت Raspberry Robin رو با این روش از کار انداختن. با این حال، بدست آوردن مالکیت یک آدرس IP خاص کمتر رایجه و گاهی اوقات حتی میتونه چالش برانگیز باشه.
محققا بعد از اینکه با استفاده از nmap بررسی کردن که از این IP دیگه استفاده نمیشه، از شرکت هاستینگ خواستن تا مالکیت سرور C2 استفاده شده در این حمله (IP:45.142.166[.]112) رو در اختیار محققا قرار بده. به لطف پشتیبانی کارآمد شرکت هاستینگ، محققا تونستن ظرف چند دقیقه و با پرداخت تنها ۷ دلار، یک دسترسی کنسولی روی سیستم با این آدرس IP خاص بدست بیارن که این امر به محققا این امکان داده تا تحقیقات اولیه خودشون رو شروع کنن.
وقتی SSH شما تاخیر داره، نشونه یک اتفاق بدِ:
محققا بعد از برقراری ارتباط با سرور، تأخیر قابل توجهی رو مشاهده کردن که نشون دهنده تلاشهای متعدد برای دسترسی به اون بوده. با راهاندازی یک وب سرور موقتی برای چند ثانیه، مورد هجوم هزاران درخواست HTTP از ایستگاههای کاری آلوده با سرعت تقریبی ۲ مگابایت بر ثانیه قرار گرفتن. این موضوع نتیجه گیری محققا رو تایید میکنه که اگرچه C2 از سال ۲۰۲۰ غیرفعاله، اما این کرم همچنان در حال گسترش در سطح جهانیه.
کرم PlugX برای برقراری ارتباط از طریق پروتکل خام TCP یا HTTP از سه پورت TCP متفاوت (۱۱۰، ۴۴۳، ۸۰) استفاده میکنه. درخواستهای HTTP با چهار هدر متمایز (*-se، *-st، *-si، *-sn) برای ایمپلنتهای PlugX استفاده میشه، همونطور که در زیر نشون داده شدن. اگه دقت کنید متوجه اشتباه تایپی در مقدار هاردکد شده ی User-Agent میشید.
1 2 3 4 5 6 7 8 9 10 11 |
POST /[a-f0-9]{8} HTTP/1.1 Accept: */* jsp-se: 0 jsp-st: 0 jsp-si: 61456 jsp-sn: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64;x64)AppleWebKit/537.36 Host: 45.142.166.112:443 Content-Length: 0 Connection: Keep-Alive Cache-Control: no-cache |
محققا برای مدیریت این حجم از اتصالات و ردیابی منبع دستگاههای آلوده، یک زیرساخت ساده ایجاد کردن. معماریشون شامل یک سرور Nginx بود که اتصالات رو به یک اسکریپت کوچک هدایت میکرد. این اسکریپت با بررسی آدرس اینترنتی (URI) و هدرهای دریافتی، تأیید میکنه که اتصالات HTTP ارسالی توسط یک نمونه از PlugX بوده.
اگه درخواستی مطابق با درخواستهای PlugX باشه، آدرس IP دستگاه به سرور دوم، که قویتره، فرستاده میشه. این سرور تلاش میکنه تا موقعیت جغرافیایی ایستگاه کاری آلوده رو شناسایی و اونو به یک دیتابیس اضافه کنه. این پایگاه داده شامل معیارهای مختلفی مانند سیستم مستقل، اولین و آخرین زمان مشاهده، تعداد دفعات برقراری ارتباط و کشور است.
یک نکته ای هم که محققا در خصوص راه اندازی Sinkhole بهش اشاره کردن اینه که ، سرور باید در برابر پهنای باند مصرفی توسط ایستگاههای کاری بهینه باشه. مثلا در این نمونه، محققا متوجه شدن که پهنای باند مصرفی در طول روز بین 2 تا 0.8 مگابایت بر ثانیه متغیره، در نتیجه مجبور شدن سرورشون رو در سطوح مختلف بهینه کنن و برای حفط سرورشون، به همه درخواستها پاسخ ندن.
برای مقابله با این موضوع، محققا دو رویکرد رو آزمایش کردن:
- رویکرد اولشون این بود که درخواستهارو تنها در صورتی به بکاند ارسال کنن که خروجی random.randint(0,30) عدد ۱۵ باشه. با توجه به اینکه PlugX بطور مداوم ارتباط برقرار میکنه، این استراتژی رو موثر میدونستن. با این حال، ۲۵ درصد از ایستگاههای کاری آلوده رو از دست دادن، چون PlugX اغلب قبل از قرنطینه شدن توسط یک راهکار امنیتی، برای مدت کوتاهی ارتباط برقرار میکنه.
- رویکرد دیگه در سطح Transportبوده. این رویکرد شامل استفاده از ماژول hashlimit در iptables است که امکان مدیریت تنها یک درخواست در دقیقه از یک منبع IP و پورت منحصر به فرد رو فراهم میکنه. درخواست های بعدی و پاسخهای محققین با استفاده از DROP کنار گذاشته میشن.
هدف نهایی این کرم چیه؟ آیا جواب این سوال ربطی به کشورهای آلوده داره؟
دیتابیسی که محققا ایجاد کردن، منجر به ایجاد یک نقشه جهانی، مطابق شکل زیر شده. تا زمان نگارش این پست، 170 کشور درگیر آلودگی توسط این کرم بودن که همونطور که مشاهده میکنید، ایران هم از غافله عقب نمونده.
محققا اعلام کردن که ارتباطات C2 این بدافزار، برخلاف نمونه های دیگه، فاقد شناسه های منحصربه فرد از قربانی هستش. در نتیجه تحلیلی که روی دیتابیسشون انجام دادن براساس IP قربانی هستش. این رویکرد چند تا محدودیت داره از جمله:
- چندین ایستگاه کاری آلوده میتونن از طریق یک آدرس IP مشابه ارتباط برقرار کنن: این سناریو در شبکه هایی با چندین ایستگاه آلوده رخ میده. همچنین، برخی مشترکین تلفن همراه و وایرلس ممکنه یک آدرس IP عمومی مشترک داشته باشن.
- آدرسدهی داینامیک IP همچنان وجود داره: بسیاری از مشترکین اینترنت هنوز از آدرسدهی داینامیک IP استفاده میکنن. بنابراین، یک ایستگاه کاری آلوده ممکنه در طول زمان، چندین آدرس IP عمومی مختلف داشته باشه.
- کشور واقعی منبع ممکنه گمراه کننده باشه: محققا اتصالات زیادی رو از سرورهای VPN و همچنین از سیستمهای مرتبط با ارتباطات ماهوارهای مشاهده کردن. بنابراین، برخی از کشورهایی که تلهپورتهای اینترنت ماهوارهای و شرکتهای هاستینگ بزرگ دارن، مثلا آمریکا، ممکنه در داده هاشون سوگیریهایی وجود داشته باشه.
ارائه تنها تعداد کل آلودگیها در مورد این بات نت درست نیست، چون این تعداد هر روز در حال افزایشه. با این حال، رتبهبندی کشورها بر اساس آدرسهای IP که به C2 متصل میشن، همچنان میتونه جالب باشه. چون میتونه کشورهایی رو که کرم در اونا فعالتره رو نشون بده. بنابراین، نمودار زیر، یک نمای کلی از آلودهترین کشورها در تاریخ ۳ آوریل ۲۰۲۴/پانزده فروردین رو نشون میده. این نمودار نشون دهنده مجموعا ۱۰۹،۹۵۲ آدرس IP منحصر به فرد است. ایران در رتبه چهارم قرار داره.
براساس این داده ها، 15 کشور بیش از 80 درصد آلودگی هارو تشکیل میدن. نکته ای که وجود داره، کشورهایی که بیشترین آلودگی رو دارن، شباهتهای زیادی با هم ندارن، این الگویی هستش که در کرم های USB قبلی مانند RETADUP که بیشترین آلودگی رو در کشورهای اسپانیایی زبون داره، هم مشاهده شده. این موضوع نشون میده که این کرم ممکنه از چندین نمونه اولیه آلودگی در کشورهای مختلف نشأت گرفته باشه.
پراکندگی جغرافیایی کشورهای آلوده، ممکنه نشون دهنده انگیزه ی احتمالی پشت این کرم باشه. اما این احتمال ضعیفه چون در این 4 سال فعالیتش، فرصت پخش در همه جارو داشته.
بسیاری از کشورهای آلوده، به جز هند، در ابتکار کمربند و جاده چین مشارکت دارن و اکثرشون دارای خطوط ساحلی هستن که سرمایه گذاریهای زیرساختی چین در اونا قابل توجه است. تحلیل توزیع جغرافیایی آلودگیها از منظر امنیتی نشون میده که کشورهای آلوده اغلب در مناطقی با اهمیت راهبردی برای امنیت ابتکار کمربند و جاده قرار دارند، مانند تنگه های مالاکا، هرمز، باب المندب یا پلاک.
در نتیجه، با اینکه چین در سراسر جهان سرمایه گذاری میکنه، این احتمال وجود داره که این کرم برای جمع آوری اطلاعات در کشورهای مختلف در مورد نگرانیهای استراتژیک و امنیتی مرتبط با ابتکار کمربند و جاده، بویژه در جنبه های دریایی و اقتصادی، توسعه یافته باشه. البته این فرضیه بطور قطع ثابت نشده.
این احتمال وجود داره که هدف فقط کشورهای درگیر در ابتکار کمربند و جاده باشه یا تهدید امنیتی برای اونا باشه، بخصوص اینکه کرم PlugX رو به Mustang Panda نسبت دادن که در هدف قرار دادن کشورهای درگیر در ابتکار کمربند و جاده شهرت داره.
از sinkhole تا پاکسازی:
دستیابی به کرم : سوالات کلیدی
با اینکه چندین سال سرور C2 غیرفعال بوده، اما این کرم همچنان در سطح جهان در حال گسترش است. بنابراین هر کسی که IP رو کنترل کنه یا در مسیر بین سرور و ایستگاه آلوده باشه، میتونه رفتار کرم رو دستکاری کنه، مثلا یک پیلود رو اجرا کنه.
بنابراین محققا با دسترسی که به سرور داشتن، روش های پاکسازی این کرم رو در نظر گرفتن. برای این منظور باید به سه سوال کلیدی زیر پاسخ بدن:
- آیا PlugX دارای مکانیزم خودکار حذف هستش. در صورت وجود، دیگه نیازی به پیلود حذف نیست و میشه با دادن دستور کرم رو حذف کرد. این نکته برای اجتناب از پیامدهای ناخواسته در طول فرآیند پاکسازی، حیاتیه.
- سؤال دوم روی امنیت پروتکلهای ارتباطی PlugX متمرکزه. هدف ما درک نحوه پیاده سازی این پروتکلها و تعیین این که آیا امکان ارسال یک پیلود پاکسازی به اون به روشی عملی و سرراست وجود داره یا نه.
- سؤال آخر به خود نوع PlugX مرتبطه. ما نیاز داریم تا مشخص کنیم که آیا PlugX هنگام راهاندازی از یک درایو فلش USB، قبل از آلوده کردن ایستگاه کاری، با C2 خودش ارتباط میگیره یا نه. در صورت مثبت بودن، باید بدونیم که آیا پاکسازی برای فایلهای روی دستگاه USB و همچنین ایستگاه کاری انجام میشه یا نه؟
دونستن این موارد برای جلوگیری از عوارض جانبی و برآورده کردن یک کمپین پاکسازی موفق، حیاتیه. مثلا پاکسازی PlugX از روی یک USB، تاثیرش بیشتر از پاکسازی اون از یک ایستگاه کاری هستش.
پاسخ به سوالات:
مقالات زیادی ویژگی های PlugX رو مستند کردن. با این حال، همه نسخه های PlugX تمام دستورات شناخته شده رو اجرا نمیکنن. در این مورد خاص، تعداد دستورات نسبتاً کم است. در نتیجه، پاسخ به اولین سوال آسونه: این نسخه از PlugX واقعاً دارای یک دستور حذف خودکار (با شناسه 0x1005) است.
این دستور نیاز به آرگومان خاصی نداره. وقتی PlugX دستور حذف 0x1005 رو در قالب یک پیلود رمزنگاری شده دریافت میکنه، کارهای زیر رو انجام میده:
- مسیر دایرکتوری جاری رو شناسایی و سعی میکنه همه ی فایلها و دایرکتوریهای داخل اونو حذف کنه.
- نام سرویس رو بدست میاره و کلیدهای رجیستر مربوطه رو حذف میکنه.
- فایل batch زیرو رو ایجاد میکنه تا بقیه فایلهارو حذف کنه.
1 |
%TEMP%/del_AsvastSvcpCP.bat |
- اسکریپت بالا رو قبل از خاتمه خودش اجرا میکنه.
نکته ای که وجود داره اینه که، حذف از پوشه اجرایی فعلی انجام میشه. با این حال، این نسخه از PlugX تنها زمانی با C2 ارتباط برقرار میکنه که از میزبان اجرا بشه. این موضوع جواب سوال دوم است: امکان حذف PlugX از میزبانها وجود داره اما از دستگاههای USB آلوده نه.
جواب دادن به سوال آخر، پیچیده است. همونطور که قبلا اشاره شد، PlugX از طریق پروتکل های TCP و HTTP ارتباط برقرار میکنه.
بررسی ارتباط TCP از لحاظ درک ساده تر است. هر پیام TCP به دو بخش تقسیم میشه:
- یک هدر 16 بایتی رمز شده.
- یک پیلود فشرده و رمز شده. این پیلود حاوی آرگومانهای دستورات هستش. دستور حذف خودکار آرگومانی نداره.
قسمت هدر شامل :
- شناسه دستور
- اندازه پیلود رمز شده
- اندازه پیلود بعد از رمزگشایی و خارج شده از حالت فشرده
برای رمزگشایی هدر و پیلود از الگوریتم RC4 و یک کلید یکسان استفاده میشه. کلید حاصل الحاق رشته هاردکد شده در کد (sV!e@T#L$PH%) و چهار بایت اول از هدر ارسالی توسط C2 است. بنابراین ارسال یک دستور حذف به سادگی امکانپذیره، بخصوص به این دلیل که میشه از همون 4 بایت (برای داشتن کلید یکسان برای همه قربانیان) استفاده مجدد کرد.
از لحاظ کاربردی، محققا ترجیح دادن به جای پروتکل TCP از پروتکل HTTP استفاده کنن. ارتباطات HTTP بر اساس همون اصول ارتباطات TCP عمل میکنه، اگرچه برای درک نحوه پیادهسازی ماشین حالت سرور (ماشین حالت سرور به مراحل مختلفی که یک وب سرور هنگام پردازش درخواستهای HTTP طی میکنه، اشاره داره.)، نیاز به فهمیدن هدرهای HTTP است.
با این حال، ارسال دستور حذف کاملا ساده است، چون میتونه بعنوان پاسخی به اولین درخواست POST وقتی میخواد یک جلسه رو باز کنه، ارسال بشه و تنها چند بایت نیاز داره. از اونجاییکه میتونیم از همون پسوند کلید برای همه قربانیان استفاده کنیم، میتونیم همین پیلود حذف رمزگذاری شده رو برای همه قربانیان ارسال کنیم تا ایمپلنت رو از اونها حذف کنیم.
یه نکته دیگه که محققا بهش اشاره کردن اینه که، با توجه به اینکه PlugX فایلهای کاربر در داخل فلش رو مخفی میکنه و تنها در صورتیکه PlugX اجرا بشه، این فایلها به کاربر نمایش داده میشن، بنابراین اگه یکی از راه حل های امنیتی، یکی از فایلها رو حذف کنه، PlugX اجرا نمیشه و در نتیجه کاربر دسترسی آسونی به فایلهاش در داخل فلش نخواهد داشت.
به همین دلیل، محققا دستور حذف خودکار رو کنار گذاشتن و به فکر پیادهسازی یک پیلود سفارشی برای ارسال به ایستگاههای کاری با استفاده از قابلیتهای PlugX افتادن. این پیلود وظیفه حذف PlugX (مشابه فرمان حذف خودکار) رو بر عهده داره، اما همچنین بررسی میکنه که آیا یک فلش آلوده متصل است یا نه. در صورت وجود فلش آلوده، پیلود علاوه بر حذف PlugX از ایستگاه کاری، ساختار دایرکتوری اصلی فلش رو هم بازیابی میکنه.
این روش جواب میده چون PlugX از طریق دستورات امکان آپلود و اجرای یک پیلود رو فراهم میکنه:
- 0x1002 : یک Thread برای شنود دستورات پیچیده ایجاد میکنه.
- 0x300e : برای توسعه ی یک متغیر محیطی استفاده میشه. در این نمونه برای توسعه %TEMP% استفاده میشه.
- 0x3007, 0x10003008, 0x10003009 : پیلود رو در دایرکتوری %TEMP% ذخیره میکنه. (CreateFile, WriteFile, CloseFile)
- 0x300c : یک پروسس از پیلود آپلود شده ایجاد میکنه.
این استراتژی برای ارسال نیازمند دستورات بیشتری نسبت به روش قبلیه، اما بدرستی عمل میکنه. با این حال، چند محدودیت وجود داره. محققا نمیخوان یک مکانیزم پرسیست به پیلودشون اضافه کنن، بنابراین فلش آلوده باید در زمان اجرای پیلود، به سیستم متصل باشه. علاوه بر این، این فرآیند با توجه به اینکه ساختار دایرکتوری فلش رو تغییر میده، بسیار تهاجمی است. به همین دلیله که پیادهسازی اون نیازمند احتیاط بالاییه و قبل از هر گونه استقرار، بررسی کد توسط بقیه همکاران ضروریه.
پیامدهای قانونی مکانیسم پاک سازی:
با توجه به چالش های قانونی احتمالی که میتونه ناشی از اجرای یک کمپین پاکسازی گسترده باشه، که شامل ارسال دستور خودسرانه به ایستگاههای کاری که متعلق به محققا نیست، محققا تصمیم گرفتن تصمیم در خصوص پاکسازی ایستگاههای کاری در کشورهای مربوطه رو به صلاحدید CERT، آژانس های اجرای قانون و مقامات امنیت سایبری اون کشورها موکول کنن.
اصل پشت مفهوم “پاکسازی حاکمیتی” بسیار ساده است. CERTهای ملی و/یا سازمانهای مجری قانون، درخواست میکنن تا دادههایی رو از Sinkhole محققین که مربوط به کشورهای خاص اونا میشه رو دریافت کنن. این کار به اونا اجازه میده تا ارزیابی کنن که آیا آغاز یک فرایند پاکسازی ضروریه یا نه.
از اونجایی که برخی از ایستگاههای کاری که در یک کشور قرار دارن، ممکنه از طریق کشور دیگری (مانند اتصال از طریق VPN یا شرکتهای ارائه دهنده اینترنت ماهوارهای) به اینترنت متصل شده باشن، این مقامات در ازای دریافت اطلاعات، فهرستی از سیستمهای مستقل رو ارائه میدن که پاکسازی اونا مشکلی نداره.
با در اختیار داشتن لیست پاکسازی، محققا میتونن به مسئولین مربوطه دسترسی سه ماه بدن تا پاکسازی رو شروع کنن. در طول این مدت، به هر درخواست کرم PlugX از یک سیستم مستقل که برای پاکسازی مشخص شده، یک دستور حذف یا یک پیلود حذف سفارشی، پاسخ داده خواهد شد.
اینکه محققا از طریق مرکز ماهر یا پلیس فتا یا مرکز افتا ، با ایران هم تماس گرفتن، ایران رتبه چهار آلودگی رو داشت، یا این مسئولین با محققا ارتباط برقرار کردن، مشخص نیست.
محدودیت های مکانیسم پاکسازی بعنوان نتیجه گیری :
همونطور که قبلا اشاره شد، برای هر دو روش پاکسازی، پاکسازی با دستور خودکار و پاکسازی با پیلود سفارشی، محدودیتهایی وجود داره.
اولا اینکه این کرم قابلیت حضور در شبکه های air-gap رو داره، بنابراین محققا نمیتونن به این شبکه های ایزوله دسترسی داشته باشن. دوما و شاید مهمترین محدودیت اینه که، کرم PlugX میتونه برای مدتها داخل فلش بدون اتصال به ایستگاه کاری باقی بمونه.
یکی از جنبه های مهم دیگه که باید در نظر گرفته بشه، محدودیت های قانونی است. مقابله با کرمها نیازمند راهحل هایی در سطح جهانی است، اما پیروی از قوانین این کار رو دشوار میکنه. چرا که پاکسازی صرفاً یک کشور خاص، اون کشور رو مستعد آلودگی مجدد قرار میده. بدیهیه که در تکرار این آلودگیها، تنها مسئله زمان است.
بنابراین، حذف کامل این کرم با ارسال یک دستور واحد به تمام ایستگاه های کاری آلوده، غیرممکن است.
محققا همچنین به شدت توصیه کردن که محققین امنیتی، قوانین تشخیص مؤثری رو در برابر این تهدید در سمت ایستگاه کاری تعریف کنن تا از استفاده مجدد از این باتنت در آینده جلوگیری بشه.
USBها همچنان ناقل آلودگی هستن:
فراتر از سناریوی کلیشه ای تیم قرمزی که از یک فلش آلوده که در پارکینگ افتاده برای نفوذ به شبکه استفاده میکنن، USBها همچنان بطور فعال برای آلوده کردن شبکه های ایزوله و غیر ایزوله توسط بازیگران تهدید و تحت حمایت دولتها مورد استفاده قرار میگیرن.
بنابراین محققا توصیه کردن، با ایجاد خط مشی هایی مانند جلوگیری از اجرای یک فایل از یک دستگاه قابل حمل یا غیر فعال کردن دستگاههای قابل حمل در سازمانها توسط خط مشی های Windows Group ، جلوی گسترش چنین بدافزارهایی رو بگیرید.
IoCهای گزارش:
هش فایلها :
اگه علاقمند به آنالیز بدافزار هستید، نمونه هایی این گزارش رو میتونید از گیتهابمون دانلود و تحلیل کنید.
1 2 3 4 5 6 7 |
432a07eb49473fa8c71d50ccaf2bc980b692d458ec4aaedd52d739cb377f3428 e8f55d0f327fd1d5f26428b890ef7fe878e135d494acda24ef01c695a2e9136d 3a53bd36b24bc40bdce289d26f1b6965c0a5e71f26b05d19c7aa73d9e3cfa6ff 2304891f176a92c62f43d9fd30cae943f1521394dce792c6de0e097d10103d45 8b8adc6c14ed3bbeacd9f39c4d1380835eaf090090f6f826341a018d6b2ad450 6bb959c33fdfc0086ac48586a73273a0a1331f1c4f0053ef021eebe7f377a292 b9f3cf9d63d2e3ce1821f2e3eb5acd6e374ea801f9c212eebfa734bd649bec7a |
زیرساختها:
1 2 3 4 |
45.251.240[.]55 45.142.166[.]112 (Sinkholed by Sekoia) 103.56.53[.]46 43.254.217[.]165 |
قوانین Yara:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
rule apt_MustangPanda_PlugXWorm_lnk { meta: id = "bea0b6e6-0999-431d-8ea2-324aa7497657" version = "1.0" malware = "PlugXWorm" intrusion_set = "MustangPanda" description = "Detects PlugXWorm Malicious LNK" source = "Sekoia.io" classification = "TLP:WHITE" strings: $ = "RECYCLER.BIN\\1\\CEFHelper.exe" wide condition: uint32be(0) == 0x4c000000 and filesize < 2KB and all of them } import "pe" rule apt_MustangPanda_MaliciousDLL_random_exports { meta: id = "d14ae417-bc6f-40b1-a027-084522fce516" version = "1.0" intrusion_set = "MustangPanda" description = "Detects malicious DLL used by MustangPanda" source = "Sekoia.io" classification = "TLP:WHITE" strings: $trait = { 66 89 55 FC } condition: pe.is_dll() and filesize < 100KB and for any e in pe.export_details: ( $trait in (e.offset..e.offset+50) and e.name matches /^[a-z]{10,}$/ ) and not pe.is_signed } |