محققان کسپرسکی در ماه می 2024، یک گروه APT جدید به نام CloudSorcerer را شناسایی کردند که تمرکز آن بر روی نهادهای دولتی روسیه میباشد. این، یک بدافزار جاسوسی سایبری پیچیده است که برای نظارت مخفیانه، جمعآوری و استخراج داده از طریق زیرساختهای ابری Microsoft Graph، Yandex Cloud و Dropbox طراحی شده است.
CloudSorcerer از منابع ابری به عنوان سرورهای فرماندهی و کنترل (C2) خود استفاده میکند و از طریق APIها و با استفاده از توکنهای احراز هویت به آنها دسترسی دارد. علاوه بر این، CloudSorcerer از GitHub نیز به عنوان سرور C2 خود استفاده کرده است.
روش کار CloudSorcerer یادآور CloudWizard APT میباشد. با این حال، کد بدافزار CloudSorcerer کاملاً متفاوت است. از این رو، CloudSorcerer به عنوان یک APT جدید در نظر گرفته میشود که روش مشابهی را برای تعامل با سرویسهای ابر عمومی اتخاذ کرده است.
یافتههای کسپرسکی به طور خلاصه به شرح زیر میباشد:
- CloudSorcererاز سرویسهای ابر عمومی به عنوان C2های اصلی خود استفاده میکند.
- این بدافزار با استفاده از دستورات خاص با C2 خود تعامل داشته و دستورات را توسط جدول charcode هاردکد شده، رمزگشایی میکند.
- این APT از اینترفیسهای آبجکت COM مایکروسافت برای انجام عملیات مخرب خود استفاده میکند.
- CloudSorcerer بسته به فرآیندی که در حال اجرا است به عنوان ماژولهای مجزا (ماژول ارتباطی، ماژول جمع آوری داده) عمل میکند، اما توسط یک فایل اجرایی، اجرا میشود.
جزییات فنی CloudSorcerer
راه اندازی اولیه
MD5 | |
SHA1 | f1a93d185d7cd060e63d16c50e51f4921dd43723 |
SHA256 | e4b2d8890f0e7259ee29c7ac98a3e9a5ae71327aaac658f84072770cf8ef02de |
Link time | N/A |
Compiler | N/A |
File type | Windows x64 executable |
File size | 172kb |
File name | N/A |
CloudSorcerer به صورت دستی توسط مهاجم بر روی دستگاهی که قبلاً آلوده شده است، اجرا میشود. این بدافزار یک باینری اجرایی انتقال پذیر (PE) میباشد که به زبان C نوشته شده است. عملکرد آن بسته به فرآیندی که در آن اجرا میشود، متفاوت میباشد.
CloudSorcerer پس از اجرا، تابع GetModuleFileNameA را فراخوانی میکند تا نام فرآیندی را که در آن اجرا میشود، مشخص کند. CloudSorcerer سپس نام فرآیند را با مجموعهای از رشتههای هاردکد شده (browser ، mspaint.exe و msiexec.exe) مقایسه میکند.
این بدافزار بسته به نام فرآیند شناسایی شده، عملکردهای مختلفی را فعال میکند:
- اگر نام فرآیند، exe باشد، آنگاه CloudSorcerer به عنوان یک ماژول بکدور عمل میکند و فعالیتهایی مانند جمع آوری داده و اجرای کد را به انجام میرساند.
- چنانچه نام فرآیند، exe باشد، آنگاه بدافزار CloudSorcerer، ماژول ارتباطی C2 خود را راه اندازی میکند.
- و در نهایت، اگر نام فرآیند، حاوی رشته « browser » باشد یا با هیچ یک از نامهای مشخصشده مطابقت نداشته باشد، بدافزار سعی میکند تا قبل از پایان یافتن فرآیند اولیه، shellcode را به فرآیندهای exe، mspaint.exe یا explorer.exe تزریق کند.
تمامی تبادل دادهها بین ماژولها از طریق pipe های ویندوز انجام میشود؛ مکانیزمی برای ارتباطات بین فرآیندی (IPC) که اجازه میدهد دادهها بین فرآیندها منتقل شوند.
ماژول بکدور CloudSorcerer
ماژول بکدور با جمع آوری اطلاعات مختلف سیستم در مورد ماشین قربانی آغاز به کار میکند که در یک رشته جداگانه اجرا میشود. این اطلاعات عبارتند از:
- نام کامپیوتر
- نام کاربری
- اطلاعات ویندوز
- آپ تایم سیستم
تمام دادههای جمع آوری شده در یک ساختار خاص ذخیره میشوند. هنگامی که جمع آوری اطلاعات کامل شد، دادهها در pipe نامگذاری شده \\.\PIPE\[1428] که به فرآیند ماژول C2 متصل است، نوشته میشوند.
توجه به این نکته مهم است که تمام تبادل دادهها با استفاده از ساختارهای کاملاً تعریف شده با اهداف مختلف مانند ساختار دستورات بکدور و ساختار جمع آوری اطلاعات، سازماندهی میشوند.
بدافزار سپس تلاش میکند تا دادهها را از \\.\PIPE\[1428] بخواند. CloudSorcerer در صورت موفقیت، دادههای ورودی را در ساختار COMMAND تجزیه میکند و یک بایت را از آن میخواند که نشان دهنده یک COMMAND_ID است.
بدافزار بسته به COMMAND_ID، یکی از اقدامات زیر را انجام میدهد:
- 0X1- جمع آوری اطلاعات در مورد هارد دیسک در سیستم، از جمله نام منطقی درایو، ظرفیت و فضای خالی آن.
- 0X2- جمع آوری اطلاعات در مورد فایلها و فولدرها مانند نام، اندازه و نوع آنها.
- 0X3- اجرای دستورات shell با استفاده از ShellExecuteExW API.
- 0X4- کپی، انتقال، تغییر نام یا حذف فایلها.
- 0X5- خواندن دادهها از هر فایل.
- 0X6- ایجاد و نوشتن داده در هر فایل.
- 0X7- اجرای عملکردهای پیشرفته اضافی.
- 0X8- یک کد shell را از pipe دریافت کرده و با تخصیص حافظه و ایجاد یک رشته جدید در یک فرآیند راه دور، آن را به هر فرآیندی تزریق میکند.
- 0X9- یک فایل PE دریافت میکند، یک بخش را ایجاد و آن را در فرآیند راه دور نگاشت میکند.
تمام اطلاعات جمعآوری شده یا نتایج تسکهای انجام شده به یک ساختار ویژه اضافه میشود و از طریق یک pipe نامگذاری شده به فرآیند ماژول C2 ارسال میگردد.
ماژول C2
ماژول C2 با ایجاد یک pipe ویندوز جدید به نام \\.\PIPE\[1428] آغاز به کار میکند و سپس، اتصال به سرور C2 را با ارائه آرگومانهای لازم به دنبالهای از توابع API ویندوز که مسئول اتصالات اینترنتی هستند، پیکربندی میکند:
- InternetCrackUrlA
- InternetSetOptionA
- InternetOpenA
- InternetConnectA
- HttpOpenRequestA
- HttpSendRequestA
CloudSorcerer نوع درخواست (“GET”) را تنظیم، اطلاعات پروکسی را پیکربندی و هدرهای هاردکد شده را تنظیم میکند و URL مربوط به C2 را ارائه میدهد.
بدافزار سپس به سرور C2 اولیه متصل میشود که یک صفحه GitHub است و در https://github[.]com/alinaegorovaMygit قرار دارد. بدافزار با فراخوانی InternetReadFile، کل صفحه وب را در بافر حافظه میخواند.
مخزن GitHub شامل فورکهای سه پروژه عمومی است که اصلاح یا به روزرسانی نشدهاند. هدف آنها صرفاً قانونی و فعال جلوه دادن صفحه GitHub است. با این حال، بخش نویسنده صفحه GitHub دارای یک رشته هگز جالب میباشد:
کسپرسکی دادههایی را یافته است که شبیه به یک رشته هگز هستند که با همان الگوی بایت یعنی ” CDOY” آغاز شده و به پایان میرسد. پس از اینکه بدافزار کل صفحه HTML گیت هاب را دانلود کرد، شروع به پردازش آن میکند و به طور خاص دنباله کاراکتر ” CDOY” را جستجو مینماید.
CloudSorcerer هنگامی که این کاراکتر را یافت، تمام کاراکترها را تا جدا کننده دوم “CDOY” کپی کرده و سپس آنها را در بافر حافظه ذخیره میکند. بدافزار در مرحله بعد، این کاراکترها را تجزیه میکند و آنها را از مقادیر رشتهای به مقادیر هگز تبدیل خواهد کرد.
CloudSorcerer سپس رشته را رمزگشایی میکند. هر بایت از رشته تجزیه شده به عنوان یک شاخص در جدول charcode عمل میکند و به یک بایت جایگزین اشاره دارد؛ بنابراین یک آرایه هگز جدید ایجاد میگردد.
CloudSorcerer در روش دیگری، به جای اتصال به GitHub، سعی میکند همان دادهها را از hxxps://my.mail[.]ru/ که یک سرور میزبان عکس مبتنی بر ابر روسی است، دریافت کند. نام آلبوم عکس شامل همان رشته هگز است.
اولین بایت رمزگشایی شده از رشته هگز یک عدد است که به بدافزار میگوید از کدام سرویس ابری استفاده کند. به عنوان مثال، اگر مقدار بایت “1” باشد، بدافزار از ابر Microsoft Graph استفاده میکند. چنانچه مقدار آن “0” باشد، بدافزار از ابر Yandex استفاده میکند. بایتهای بعدی، برای احراز هویت با API ابری استفاده میشوند.
بدافزار در مرحله بعد، از طریق زیر به API ابر متصل میشود:
- راه اندازی اتصال اولیه با استفاده از InternetOpenA و InternetConnectA؛
- تنظیم تمام هدرهای مورد نیاز و توکن مجوز دریافت شده از صفحه GitHub؛
- پیکربندی مسیرهای API در درخواست؛
- ارسال درخواست با استفاده از HttpSendRequestExA و بررسی خطاهای پاسخ.
- خواندن دادهها از ابر با استفاده از InternetReadFile.
سپس بدافزار دو رشته مجزا ایجاد میکند که یکی مسئول دریافت دادهها از pipe ویندوز و دیگری مسئول ارسال دادهها به آن است. این رشتهها تبادل ناهمزمان داده بین ماژولهای C2 و بکدور را تسهیل میسازند.
ماژول C2 در نهایت، با خواندن دادهها، دریافت دستورات رمزگذاری شده، رمزگشایی آنها با استفاده از جدول کد کاراکتر (charcode ) و ارسال آنها از طریق pipe نامگذاری شده به ماژول بکدور، با سرویسهای ابری تعامل خواهد داشت.
ماژول C2، نتایج اجرای فرمان یا دادههای استخراج شده را از ماژول بکدور دریافت میکند و آنها را در فضای ابری مینویسد.
زیر ساخت CloudSorcerer
صفحه GitHub
صفحه گیت هاب در هفتم می 2024 ایجاد گردید و دو مخزن در همان روز در آن فورک شدند. یک مخزن دیگر نیز در 13 می 2024، فورک گردید اما هیچ تعاملی با GitHub رخ نداد. ” Alina Egorova”، نام مخزن C2 میباشد که یک نام مونث روسی است. با این حال، عکس موجود در صفحه GitHub، یک عکس مردانه میباشد و از یک بانک عکس عمومی کپی شده است.
زیرساختهای ابری
سرویس | URL اصلی | مسیر اولیه |
Yandex Cloud | cloud-api.yandex.net | /v1/disk/resources?path= |
Microsoft Graph | graph.microsoft.com | /v1.0/me/drive/root:/Mg/%s/%s:/content |
Dropbox | content.dropboxapi.com | /2/files/download |
انتساب CloudSorcerer
استفاده از سرویس ابری، مسئله جدیدی نیست و ما نمونهای از آن را پیشتر در CloudWizard APT مشاهده کردهایم.
در حالی که شباهتهایی در نحوه عملکرد CloudSorcerer با CloudWizard گزارش شده است، اما تفاوتهای قابل توجهی در کد و عملکرد CloudSorcerer وجود دارد.
از این رو، احتمال نسبت دادن CloudSorcerer به یک مهاجم یا گروه سایبری شناخته شده، کم است. بنابراین فعلا اینگونه فرض میکنیم که CloudSorcerer یک گروه APT جدید است که تکنیک تعامل با سرویسهای ابر عمومی را برای خود اتخاذ کرده است.
قربانیان CloudSorcerer
سازمانهای دولتی روسیه، قربانیان CloudSorcerer میباشند.
نتیجه گیری
بدافزار CloudSorcerer مجموعه ابزار پیچیدهای را نشان میدهد که متمرکز بر نهادهای دولتی روسیه میباشند. استفاده از سرویسهای ابری مانند Microsoft Graph، Yandex Cloud و Dropbox برای زیرساختهای C2، همراه با GitHub برای ارتباطات اولیه C2، نشان دهنده یک رویکرد برنامه ریزی شده به منظور جاسوسی سایبری است.
توانایی بدافزار برای تطبیق پویای رفتار خود بر اساس فرآیندی که در آن اجرا میشود، همراه با استفاده از ارتباطات پیچیده بین فرآیندی از طریق pipe های ویندوز، پیچیدگی آن را پر رنگتر میکند.
IoCها
هش فایل (اسناد مخرب، تروجانها، ایمیلها، فریبها):
CloudSorcerer |
دامنهها و IPها
hxxps://github[.]com/alinaegorovaMygit | CloudSorcerer C2 |
hxxps://my.mail[.]ru/yandex.ru/alinaegorova2154/photo/1 | CloudSorcerer C2 |
MITRE ATT&CK
تاکتیک | تکنیک | نام تکنیک |
اجرا | T1059.009 | Command and Scripting Interpreter: Cloud API |
اجرا | T1559 | Inter-Process Communication |
اجرا | T1053 | Scheduled Task/Job |
اجرا | T1047 | Windows Management Instrumentation |
تداوم دسترسی | T1543 | Create or Modify System Process |
تداوم دسترسی | T1053 | Scheduled Task/Job |
فرار دفاعی | T1140 | Deobfuscate/Decode Files or Information |
فرار دفاعی | T1112 | Modify Registry |
کشف و شناسایی | T1083 | File and Directory Discovery |
کشف و شناسایی | T1046 | Network Service Discovery |
کشف و شناسایی | T1057 | Process Discovery |
کشف و شناسایی | T1012 | Query Registry |
کشف و شناسایی | T1082 | System Information Discovery |
جمع آوری | T1005 | Data from Local System |
فرماندهی و کنترل | T1102 | Web Service |
فرماندهی و کنترل | T1568 | Dynamic Resolution |
استخراج | T1567 | Exfiltration Over Web Service |
استخراج | T1537 | Transfer Data to Cloud Account |