در اواسط سال 2023، محققای Volexity با یسری رخداد امنیتی مواجه شدن که در اونا، چندین سیستم با بدافزارهای مرتبط با گروه هکری StormBamboo آلوده شدن. در این حوادث چندین خانواده بدافزاری روی سیستم های ویندوزی و macOS در شبکه سازمانی قربانیان مستقر شده.
گروه هکری StormBamboo یک گروه هکری چینی هستش که با نامهای Evasive Panda و Daggerfly و StormCloud هم معروفه و حداقل از سال 2012 فعالیت میکنه. عمده فعالیتهاشون هم جاسوسی از سازمانهای چینی، هنگ کنگ، ماکائو، نیجریه و کشورهای جنوب شرقی و شرق آسیاست.
در ابتدا، کشف بردار آلودگی برای این بدافزار سخت بوده، اما بعدا مشخص شده که یک حمله از نوع DNS Poisoning در سطح ISP رخ داده. محققای Volexity متوجه شدن که گروه هکری StormBamboo، پاسخ کوئری های DNS رو برای دامنه های خاصی که مربوط به مکانیسمهای بروزرسانی خودکار نرمافزارها هستن رو تغییر دادن. به نظر میرسه StormBamboo نرمافزارهایی رو هدف قرار میده که از مکانیسمهای بروزرسانی ناامن مانند HTTP استفاده میکنن و امضای دیجیتال نصبکنندهها رو به درستی اعتبارسنجی نمیکنن. بنابراین، هنگامی که این برنامهها برای دریافت بروزرسانیهای خودشون اقدام میکنن، به جای نصب بروزرسانی مورد نظر، نرمافزارهای مخرب از جمله MACMA و POCOSTICK (معروف به MGBot) رو نصب میکنن. روند کلی عملیاتشون مشابه یک رخداد قبلی هستش که توسط Volexity مورد بررسی قرار گرفته و به DriftingBamboo، یک بازیگر تهدید که احتمالاً با StormBamboo مرتبط هستش، نسبت دادن.
در آوریل 2023، ESET گزارشی درباره یک خانواده بدافزار منتشر کرد که Volexity از سال 2018 با نام POCOSTICK ردیابیش میکنه. ESET شواهد مستقیمی نداشت اما محتمل ترین منبع عفونت رو یک حمله ی Adversary-In-The-Middle (AiTM) ارائه کرد. محققای Volexity اکنون میتونن این سناریو رو در یک مورد واقعی تایید و ثابت کنن که مهاجم قادر به کنترل زیرساخت DNS ارائه دهنده اینترنت قربانی، به منظور اصلاح پاسخ های DNS در شبکه سازمانی قربانی بوده.
این پست بردار آلودگی و یک نمونه از اینکه StormBamboo چطوری از بروزرسانی خودکار سوء استفاده کرده رو ارائه میده.
حمله ی DNS poisoning :
مسموم سازی دی ان اس (DNS Poisoning) نوعی حمله سایبری هستش که در اون مهاجم به عمد پاسخهای نادرست رو به کوئریهای DNS تزریق میکنه. DNS سیستمی هستش که آدرسهای اینترنتی رو به آدرسهای IP قابل فهم برای کامپیوترها ترجمه میکنه.
این حمله به این صورت رخ میده که، مهاجم با نفوذ به سرورهای DNS یا شبکههایی که درخواستهای DNS رو پردازش میکنن، پاسخهای نادرست رو به جای پاسخهای صحیح ارائه میده. به این ترتیب، هنگامی که شما آدرس یک وبسایت معتبر رو در مرورگرتون وارد میکنید، بجای اون سایت، به یک سایت جعلی هدایت میشید که توسط مهاجم کنترل میشه.
مهاجمین با این حمله میتونن کارهای زیر رو انجام بدن:
- سرقت اطلاعات: ممکنِ از وبسایتهای جعلی برای سرقت اطلاعات شخصی، رمزهای عبور و اطلاعات حساس دیگه استفاده کنن.
- نصب بدافزار: میتونن از این روش برای نصب بدافزار روی دستگاههای کاربران استفاده کنن.
- تخریب وجهه برندها: با هدایت کاربران به سایتهای حاوی محتوای نامناسب یا مخرب، میتونن به وجهه برندها آسیب بزنن.
- منع سرویس: در برخی موارد، مهاجم ممکنِ با هدف ایجاد اختلال در خدمات آنلاین، پاسخهای DNS رو بطور کامل مسدود کنه.
بررسی کلی:
در یکی از رخدادهای مورد بررسی توسط Volexity، کشف شد که StormBamboo با استفاده از یک مکانیسم بروزرسانی خودکار HTTP، درخواستهای DNS رو مسموم کرده تا بدافزاری رو مستقر کنه و پاسخهای جعلی برای نامهای میزبان (Hostname) قانونی که بعنوان C2های مرحله دوم استفاده میشن، ایجاد کنه.
رکوردهای DNS طوری مسموم شده بودن که به یک سرور تحت کنترل مهاجم در هنگ کنگ با آدرس IP:103.96.130[.]107 متصل میشدن. در ابتدا، Volexity مشکوک شده که فایروال سازمان قربانی ممکنِ هک شده باشه. با این حال، تحقیقات بیشتر نشون داد که مسمومیت DNS در زیرساخت هدف انجام نشده ، بلکه در سطح ISP بالادست انجام شده.
محققای Volexity به ISP مربوطه اطلاع دادن و ISP دستگاههای مختلفی رو که خدمات مسیریابی ترافیک رو در شبکه اشون ارائه میکردن رو بررسی کرده. ISP با راهاندازی مجدد دستگاهها و خارج کردن اجزای مختلف شبکه، مسمومیت DNS رو بلافاصله متوقف کرده. در این مدت، شناسایی دستگاه خاصی که به خطر افتاده بود امکانپذیر نبوده، اما اجزای مختلف زیرساخت، بروزرسانی یا خاموش شدن که منجر به توقف فعالیت مخرب شده.
این اولین موردی نیست که Volexity با مهاجمی مواجه شده که از مسمومیت DNS برای تسهیل دسترسی اولیه به یک شبکه استفاده میکنه. در Cyber Session ماه مه ۲۰۲۳، Volexity جزئیاتی از یک خانواده بدافزار به نام CATCHDNS ارائه کرد که بدافزار مسمومیت DNS هستن که توسط DriftingBamboo استفاده و در یک دستگاه شبکه (در اون مورد، یک فایروال Sophos XG) مستقر شده بود.
Volexity نمیتونه تأیید کنه که چه مکانیزمی توسط StormBamboo روی روترهای ISP برای تغییر پاسخهای DNS استفاده شده؛ با این حال، CATCHDNS میتونه ابزاری مناسب برای دستیابی به این هدف در یک محیط ISP باشه. یک تحلیل از CATCHDNS رو میتونید اینجا مشاهده کنید.
مسمومیت DNS برای سوء استفاده از مکانیسم بروزرسانی خودکار ناامن
در حمله قبلی که از CATCHDNS برای تغییر پاسخهای DNS استفاده شده بود، هدف نهایی حملات تغییر محتوای صفحات مشاهده شده توسط کاربران بود. این منجر به یک پاپ آپ جاوا اسکریپت در صفحه میشد که از کاربر میخواست مرورگر خودش رو بروزرسانی کنه، که یک فایل مخرب رو از سرور مهاجم دانلود میکرد. در این حمله اخیر، روش مهاجم برای تحویل بدافزار پیچیدهتر بود و از مکانیسمهای بروزرسانی خودکار ناامن موجود در نرمافزار در محیط قربانی سوء استفاده میکنه، بنابراین نیازی به تعامل کاربر نیست.
منطق پشت سوء استفاده از بروزرسانیهای خودکار برای همه برنامه ها یکسان هستش. برنامه قانونی یک درخواست HTTP برای بازیابی یک فایل مبتنی بر متن (فرمت متفاوت هستش) حاوی آخرین نسخه برنامه و یک لینک به فایل نصب کننده انجام میده. از اونجاییکه مهاجم کنترل پاسخهای DNS رو برای هر نام DNS مشخص رو داره، از این طرح سوء استفاده میکنه و درخواست HTTP رو به یک سرور C2 که فایل متنی جعلی و یک نصبکننده مخرب رو میزبانی میکنه، هدایت میکنه. جریان کار AiTM در زیر نشون داده شده.
محققا مشاهده کردن که StormBamboo از برنامه های مختلفی که از فرایند بروزرسانی ناامن استفاده میکنن، سوء استفاده میکنه. یکی از این برنامه ها 5KPlayer هستش که وقتی اجرا میشه بررسی میکنه که آیا نسخه ی جدیدی از YoutubeDL وجود داره یا نه. تصویر زیر درخواست HTTP برای ارتقاء Youtube.config رو نشون میده.
شکل زیر هم محتوای Youtube.config رو نشون میده:
اگه نسخه جدیدی در دسترس باشه، از URL مشخص شده دانلود و توسط برنامه قانونی اجرا میشه. StormBamboo از مسمومیت DNS برای میزبانی یک فایل پیکربندی دستکاری شده استفاده میکنه که نشون میده یک بروزرسانی جدید در دسترس هستش. این منجر به دانلود یک بسته ارتقاء از سرور StormBamboo توسط نرم افزار YoutubeDL میشه.
همونطور که میشه انتظار داشت، بسته YoutubeDL از طریق تزریق کد مخرب در بخش میانی فایل YouTubeDL.py که به عنوان بخشی از فرآیند ارتقاء استفاده میشه، سیستم رو با بکدور آلوده میکنه. تصویر زیر کد مخرب تزریق شده رو از خط ۱۶۴ نشون میده.
هدف این کد، دانلود مرحله بعدی هستش که براساس نوع سیستم عامل، یک فایل PNG حاوی MACMA (macOS) یا POCOSTICK (Windows) رو دانلود میکنه.
MACMA برای اولین بار در سال 2021 توسط Google TAG به صورت عمومی گزارش شد. در سه سال گذشته، MACMA با اضافه کردن ویژگیهای بیشتر برای راحتی اپراتور و بازسازی برخی از معماری ها، تغییراتی داشته. مثلا، پروتکل شبکه کاملاً تغییر کرده. نسخه اصلی از یک سرور توزیع داده (DDS) استفاده میکرد که در یک سری کلاس سفارشی با پیشوند رشته «CDDS» پیادهسازی شده بود. الان، به نظر میرسه MACMA از پروتکل UDP kNET برای ارتباطات شبکه استفاده میکنه. در طول تجزیه و تحلیل Volexity، این شرکت شباهتهای قابل توجهی بین آخرین نسخه MACMA و خانواده بدافزار GIMMICK که قبلاً توسط Volexity گزارش شده بود، مشاهده کرده.
فعالیت بعدی:
در یک مورد، بعد از آلوده کردن یک دستگاه macOS ، محققا مشاهده کردن که StormBamboo یک افزونه گوگل کروم رو روی دستگاه قربانی نصب کرده. محققا این افزونه مخرب رو با نام RELOADEXT ردیابی کردن. این افزونه با استفاده از یک فایل اجرایی سفارشی (ee28b3137d65d74c0234eea35fa536af) توسعه یافته توسط مهاجم نصب شده. این نصبکننده از پارامترهای زیر پشتیبانی میکنه:
پارامتر | توضیحات |
-p / --plugin |
Path of the plugins (must be a ZIP archive) |
-f / --force |
Kill Chrome and install the plugin |
نصب کننده این افزونه رو با تغییر فایل Secure Preferences مستقر میکنه. نصبکننده همچنین مقادیر protections.macs و protections.super_mac رو در SecurePreferences جدید دستکاری میکنه. این مقادیر برای جلوگیری از دستکاری تنظیمات مرورگر کاربر طراحی شدن، اما میشه اونارو جعل کرد. اگه این مقادیر حاوی مقادیر مورد انتظار نباشن، کروم فایل SecurePreferences رو بازنویسی میکنه.
افزونه ی ارسال شده به این ابزار در مکان زیر ذخیره میشه:
1 |
$HOME/Library/Application Support/Google/Chrome/Default/Default/CustomPlug1n/Reload/ |
بعد از پیکربندی، میشه در فایل SecurePreferences کاربر مشاهده کرد، همونطور که در شکل زیر مشاهده میکنید:
در نهایت، نصب کننده، افزونه (6abf9a7926415dc00bcb482456cc9467) رو توسط دستور AppleScript زیر فعال میکنه:
1 |
osascript -e tell application “Google Chrome” to activate |
این افزونه خودش رو به عنوان افزونهای معرفی میکنه که یک صفحه رو در حالت سازگار با اینترنت اکسپلورر لوود میکنه.
عملکرد اصلی، جاوا اسکریپتی که در این افزونه مورد استفاده قرار گرفته، توسط Obfuscator.io مبهم شده و هدفش استخراج کوکی های کاربر و ارسال اون به یک اکانت Google Drive تحت کنترل مهاجم هستش.
اطلاعات مربوط به اکانت گوگل درایو مانند client_id و client_secret و refresh_token همگی داخل افزونه موجود هستن. این مقادیر علاوه بر Obfuscator.io، توسط الگوریتم AES و کلید chrome extension رمز شدن.
داده های استخراج شده که قراره به گوگل درایو ارسال بشن هم با AES و کلید opizmxn!@309asdf رمز میشن و قبل از ارسال base64 میشن.
شناسایی بدافزار:
برای شناسایی بدافزار مورد استفاده در این حمله خاص میتونید از قوانین YARA و IOCهای گزارش شده استفاده کنید.