حمله قرن، SolarWinds Orion supply chain attack (ادامه)
هشتم دسامبر 2020، FireEye اعلام کرد که مورد هجوم حملات گستردهای واقع شده است که طی آنها بسیاری از ابزارها و اطلاعات این شرکت به سرقت رفته است.
FireEye: «این حمله متفاوت از تمامی دهها هزار رویدادی است که در این سالها با آنها مواجه شده و به آنها پاسخ دادهایم...»
روز سیزدهم دسامبر 2020، کریس بینگ (Chris Bing) از رویترز از نفوذ به وزارت خزانهداری ایالات متحده آمریکا پرده برداشت و کمی بعد، اِلن ناکاشیما (Ellen Nakashima) تحلیلگر بهنام امنیتی واشنگتنپُست با ارائه مدارکی، دو حمله فوقالذکر را به هم مرتبط دانست و مدعی شد که هر دو توسط یک گروه تهدید روسی به نام APT29 پیاده شدهاند و در هر دو حمله از SolarWinds Orion سوءاستفاده شده است.
محصول Orion شرکت SolarWinds، یک سیستم مدیریت شبکه (Network Management System) یا NMS است که قابلیتهای بسیاری برای نظارت و مدیریت سیستمهای شبکه از سرورها، ایستگاههای کاری، تا دیوایسهای شبکه مانند مسیریابها، دیوار آتش و ... دارد.
«SANS: « SolarWinds Orion is to NMS what Kleenex is to tissues
برای مهاجمین، NMSها اهداف بسیار مهمی هستند؛ چرا که:
- NMS بایستی با تمامی دستگاههای شبکه در ارتباط باشد و از این حیث مکانیزمهای لیست دسترسی یا ACLs بر آن اثر ندارد.
- بهعلاوه، NMS ها اغلب بهگونهای پیکربندی میشوند که بتوانند شبکه را نظارت کنند و به رویدادهای آن پاسخ دهند. در صورت نفوذ به NMS این امکان، قابلیتهای بسیاری را در اختیار مهاجم قرار خواهد داد.
- حتی اگر NMS فقط برای نظارت شبکه پیکربندی شده باشد؛ با بهدست آوردن اعتبارنامهها، مهاجم سطح دسترسی خوبی در شبکه هدف خواهد داشت.
«در صورت نفوذ، هر کاری که NMS قادر به انجام آن است؛ مهاجم نیز میتواند انجام دهد».
حمله زنجیره تأمین SolarWinds
حمله زنجیره تأمین، حملهای است که برای نفوذ به یک نهاد/سازمان/شرکت از ضعیفترین عنصر (ضعیفترین حلقه ) در زنجیره هدف سوءاستفاده میشود. در SolarWinds Supply Chain attack نیز از SolarWinds بهعنوان حلقه ضعیف برای نفوذ به بزرگترین نهادها و سازمانها مانند پنتاگون آمریکا، ناتو، اتحادیه اروپا، چندین وزارتخانه ایالات متحده آمریکا، چندین شرکت دارویی فعال در تولید واکسن کووید-19 وخوشنامترین شرکتها مانند Microsoft، VMware، Cisco، Intel، FireEye و ... استفاده شد.
با سوءاستفاده از Orion، کد دلخواه مهاجم به DLL بهروزرسانی نرمافزار SolarWinds Orion در سرور SolarWinds تزریق و از این راه در کلیه نهادهایی که بهروزرسانیها را دریافت میکردند، توزیع شد. این اولین بار نیست که یک گروه تهدید از بهروزرسانی نرمافزاری برای تحویل پیلود بدخواه خود استفاده میکند. پیشتر برای تحویل بدافزارهایی همچون NotPetya و BadRabbit روسی و ShadowHammer، ShadowPad و Ccleaner چینی نیز از این روش استفاده شده است.
برای تزریق کد بایستی مکان مناسبی در DLL انتخاب میشد. جایی که بهصورت دورهای فراخوانی و اجرا شود و بدافزار را در سیستم قربانی، مانا یا Persistent کند. بدین منظور تابع RefreshInternal برای آغاز اجرای بدافزار انتخاب و کد سبکی به آن تزریق شد تا بهصورت موازی thread اجرا کند و روند اجرای تابع RefreshInternal را مختل نسازد. شکل زیر، این تابع را پیش از تزریق نشان میدهد.
شکل زیر تابع را پس از تزریق کد نشان میدهد.
تابع RefreshInternal از این رو انتخاب خوبی بود که بخشی از کلاس SolarWinds.Orion.Core.BusinessLayer.BackgroundInventory.InventoryManager است که بهدنبال کلاس CoreBusinessLayerPlugin فراخوانی میشود. هدف از این کلاس آغاز سایر مولفهها و زمانبندی وظایف است. بدینترتیب مهاجمین با تزریق کد در این نقطه آغازین از مانایی و اجرای همیشگی بدافزار مطمئن خواهند بود. ولیکن بدافزار پیش از فاز اجرا، محیطی که در آن اجرا میشود را بررسی میکند تا مطمئن شود در محیط ارزیابی و تحلیل بدافزار و/یا Sandbox اجرا نخواهد شد:
- نام دامنه محیط میزبان را بازیابی کرده و آن را بررسی میکند که آیا دامِین سیستم Joined است؟
- فرایندها و درایوهای در حال اجرا را بررسی میکند که آیا مرتبط با نرمافزارهای امنیتی یا تحلیلی مثل Wireshark هستند؟
- درخواست ترجمه دامِین داده و بررسی میکند که آیا پاسخ آدرس IP همان مربوط به محیط است؟ چرا که محیطهای تحلیلی و Sandbox ترافیک نرمافزار موردبررسی را به خود برمیگردانند تا آن را نظارت و تحلیل کنند.
در تمامی این موارد در صورت مطلوب نبودن محیط اجرایی، بدافزار اجرا نخواهد شد و اگر همه شرایط موردبررسی مناسب بود؛ بدافزار وارد فاز اجرایی میشود. بیشتر آنکه اجرای بدافزار بهصورت رندوم از 12 تا 14 روز تأخیر خواهد داشت.
این بدافزار یک در پشتی است که FireEye آن را Sunburst یا آفتابسوختگی نامیده است (وجه تسمیه آن اشاره به نام شرکت SolarWinds یا بادهای خورشیدی است). Sunburst نیز مانند سایر backdoor ها بهمحض اجرا درصدد ارتباط با سرور فرمان و کنترل یا C2 برمیآید. برای اینکار اطلاعات اولیهای از سیستم تسخیرشده جمعآوری و برای دامنه C2 ارسال میکند. این دامنه با استفاده از مکانیزمهای DGA تولید و برای هر قربانی منحصربهفرد است تا فیلتر آن دشوار باشد. تولید دامنه از سه قسمت سخت-کدشده یا hard-coded و یک قسمت پویا که بصورت شبهرندوم از اطلاعات سیستم قربانی استخراج میشود، بدست میآید. شکل زیر مثالی از دامنه تولید شده است:
در صورت برقراری ارتباط با سرور C2 دستورات اولیه برای Sunburst ارسال میشود. ممکن است اطلاعات سرور C2 دیگری برای ارسال گزارشات و اطلاعات جمعآرویشده برای در پشتی فرستاده شود. مجموعه دستوراتی که Sunburst قادر به اجرای آنهاست؛ در ادامه آمده است. این دستورات، کنترل کامل سیستم قربانی را برای مهاجمین فراهم میسازد.
- Idle
- Exit
- SetTime
- CollectSystemDescription
- UploadSystemDescription
- RunTask
- GetProcessByDescription
- KillTask
- GetFileSystemEntries
- WriteFile
- FileExists
- DeleteFile
- GetFileHash
- ReadRegistryValue
- SetRegistryValue
- DeleteRegistryValue
- GetRegistrySubKeyAndValueNames
- Reboot
- None
بهعلاوه بدافزار، پیلودهای بدخواه دیگری همچون PowrShell، Rundll32 و ... را در سیستم هدف بارگذاری میکند تا در صورت بسته شدن در پشتی Sunburst، هنوز دری برای نفوذ مهاجم به سیستم وجود داشته باشد.
شکل زیر روند حمله SolarWinds Supply Chain Attack را بهطور کامل نشان میدهد:
پس از تسخیر هدف و فرصتهای تشخیص:
پس از دسترسی اولیه به سیستم هدف، مهاجمین از چندین روش برای پنهان کردن عملیات خود استفاده کردهاند. در ادامه برخی از این روشها و راهکارهای بالقوه شناسایی حمله بیان میشود.
بدافزار TEARDROP و BEACON
چندین نمونه از SUNBURST بازیابی و تحلیل شد و پیلودی که در سیستم هدف بارگذاری میکرد، استخراج شده است. در حداقل یکی از نمونهها، یک memory-only dropper موسوم به TEARDROP مشاهده شد که از آن برای استقرار ابزار Cobalt Strike BEACON استفاده میشود.
بدافزار TEARDROP یک memory only dropper است که بهعنوان یک سرویس اجرا میشود و یک thread را ایجاد و از فایل «gracious_truth.jpg» که احتمالاً دارای سرآیند جعلی JPEG است، میخواند. لازم به ذکر است که بدافزار TEARDROP با هیچ بدافزار دیگری که تا کنون مشاهده شده است، همپوشانی ندارد و بهنظر میرسد از آن برای اجرای نسخه سفارشی Cobalt Strike BEACON استفاده میشود. برای شناسایی این بدافزار، FireEye دو قانون Yara در GitHub ارائه کرده است. بایستی دو هشدار از FireEye HX دنبال شود: MalwareGuard و .WindowsDefender
اطلاعات فرایند بهصورت زیر است: file_operation_closed file-path*: “c:\\windows\\syswow64\\netsetupsvc.dll actor-process: pid: 17900 |
Window’s defender Exploit Guard log entries: (Microsoft-Windows-Security-Mitigations/KernelMode event ID 12) Process”\Device\HarddiskVolume2\Windows\System32\svchost.exe” (PID XXXXX) would have been blocked from loading the non-Microsoft-signed binary ‘\Windows\SysWOW64\NetSetupSvc.dll’ |
مطابقت نامهای میزبان مهاجم با محیط قربانی:
بازیگر این کمپین اسامی میزبان روی زیرساخت C2 را بهگونهای انتخاب میکند که با محیط قربانی مطابقت داشته باشد. این برای او این فرصت را فراهم میسازد تا با محیط یکی شود و از سوءظن اجتناب کند. لیکن نام میزبان پیکربندیشده از زیرساخت مهاجم به گواهی RDP SSL نشت میکند و فرصتی را برای شناسایی فراهم میسازد. اسکن در سطح اینترنت در جستجوی نامهای میزبان سازمان میتواند آدرسهای IP بدخواه را شناسایی کند که بهعنوان سازمان هدف نقاب زدهاند(لازم به ذکر است که پیشینه اسکن IP، اغلب جابهجایی IPها بین نامهای میزبان پیشفرض و نامهای میزبان قربانی را نشان میدهد). ارجاع متقابل (Cross-refrencing) در لیست IPهای شناساییشده در اسکن اینترنت با لاگهای دسترسی از راه دور ممکن است نشانهای از حمله در یک محیط باشد. احتمالاً در این لیست بهازای هر آدرس IP یک حساب واحد موجود است.
آدرسهای IP، واقع در کشورهای قربانی:
انتخاب بازه آدرسهای IP نیز برای جلوگیری از شناسایی، هوشمندانه است. مهاجمین در درجه اول تنها از آدرسهای مقیم کشور هدف و سرورهای خصوصی مجازی استفاده کردهاند. از این ویژگی نیز میتوان بهعنوان فرصتی برای شناسایی استفاده کرد. اگر از حساب کاربر قانونی تسخیر شده باشد و از آن برای ارتباط با مهاجم از راه دور استفاده شود؛ آدرسهای IP بهکاررفته برای دسترسی از راه دور نرخ جابهجایی زیادی را نشان میدهند. بهعلاوه از آنجا که مهاجم از چندین آدرس IP بهازای هر VPS provider استفاده میکند؛ بهمحض تشخیص ورود بدخواهانه از یک ASN غیرمعمول، جستجوی تمامی loginها از همان ASN میتواند به شناسایی حملات کمک کند. در کنار این بهتر است از baselining و normalization برای ASN مورداستفاده «دسترسی از راه دور قانونی» استفاده شود تا راحتتر تفکیک از «دسترسی بدخواهانه» صورت پذیرد.
حرکت جنبی با سوءاستفاده از اعتبارنامهها:
بهمحض آنکه مهاجم با اعتبارنامههای تسخیرشده به شبکه هدف دسترسی پیدا میکند؛ با اعتبارنامههایی دیگر پیشروی جنبی خود را ادامه میدهد. لازم به ذکر است که اعتبارنامههای پیشروی جنبی با اعتبارنامههای مورداستفاده برای دسترسی از راه دور متفاوت است. این نیز فرصتی برای شناسایی است؛ بدینترتیب که سازمانها با استفاده از مولفه HX’s LogonTracker تمامی فعالیتهای ورود به سیستم را ترسیم و تحلیل کنند. در گراف، رابطه یک به چند بین سیستم منبع و حسابها میتواند نشانهای از حمله باشد. چرا که این امر در حالت معمول کمتر رخ میدهد.
جانشینی موقت فایل و اصلاح موقت وظیفه:
مهاجم از روش تعویض یا جانشینی فایل بهصورت موقت برای اجرای از راه دور استفاده میکند. بهعبارت دیگر فایل هدف را بهصورت موقت با فایل خود تعویض کرده و پیلود فایل بدخواه را اجرا میکند و پس از انجام عملیات موردنظر، فایل را اصلی را بازمیگرداند. همچنین وظایف (tasks) دستکاریشده و برنامهریزیشده را با بهروزرسانی وظیفه قانونی موجود اجرا میکند تا بتواند ابزارهای خود را اجرا کند. پس از انجام وظیفه، بهصورت برنامهریزیشده، وظیفه را به پیکربندی اصلی برمیگرداند. بیشتر آنکه بهطور معمول ابزارهای مورداستفاده مهاجم حذف میشود. برای مثال درهای پشتی پس از بهدست آوردن دسترسی از راه دور مجاز حذف میکند.
از این ویژگی نیز میتوان برای شناسایی بدافزار استفاده کرد: اولاً لاگهای مربوط به نشستهای SMB که دسترسی به دایرکتوریهای قانونی را نشان میدهند را میتوان بررسی و الگوی حذف-ایجاد-اجرا-حذف-ایجاد را دنبال کرد. بهعلاوه میتوان وظایف برنامهریزیشده را نظارت کرد تا آنومالی یا ناهنجاریهای اصلاح وظایف استخراج شود. همچنین وظایف میتوانند از نقطهنظر اجرای کدهای باینری جدید یا ناشناس نظارت و کنترل شوند.