بدافزار BlackLotus از سال پیش در انجمن های هک تبلیغ میشه و ویژگی هایی مثله فرار از تشخیص آنتی ویروس ها ، مقاوم در برابر حذف کردن و غیر فعال کردن ویژگی های امنیتی مثله BitLocker و HVCI و Defender و … داره و به قیمت 5000 دلار عرضه میشه.
این بدافزار از نوع UEFI bootkit هستش و از اکسپلویت آسیب پذیری CVE-2022-21894 استفاده میکنه. UEFI bootkit ها به دلیل اینکه قبل از لوود سیستم عامل اجرا میشن بسیار خطرناک هستن چون میتونن ویژگی های امنیتی مانند BitLocker و HVCI و آنتی ویروس دیفندر مایکروسافت دستکاری یا غیرفعال کنن.
آسیب پذیری CVE-2022-21894 که با نام Baton Drop هم شناخته میشه ، امکان دور زدن ویژگی های Secure Boot Security و استقرار فایلهای مخرب در EFI System Partition (ESP) که توسط فریمور UEFI اجرا میشه ، رو فراهم میکنه و در ژانویه 2022 افشاء و اصلاح شده. این به بازیگر تهدید این امکان رو میده که :
- بتونه از طریق ثبت Machine Owner Key (MOK) ، خودش پرسیست کنه.
- با غیر فعال کردن HVCI ، قابلیت یه درایور کرنلی مخرب رو داره.
- از درایور مخرب برای استقرار یه دانلودر HTTP در حالت کاربر استفاده کنه که بتونه پیلودهای بعدی رو دانلود و اجرا کنه.
- با غیر فعال کردن Bitlocker امکان دور زدن tamper protection رو داشته باشه.
- آنتی ویروس دیفندر رو غیر فعال کنه تا از تشخیص های بعدی در امان باشه.
با توجه به مطالب بالا ، بازیگران تهدید از این بدافزار برای پرسیست و دور زدن محصولات امنیتی استفاده میکنن. این بدافزار برای دسترسی اولیه توسعه داده نشده و بعد از اینکه مهاجم وارد سیستم شد و امتیازی بالایی داشت یا دسترسی فیزیکی به سیستم قربانی داشته باشه، قابل استفاده هست.
در این راهنما دو موضوع بررسی شده :
- بررسی اینکه آیا به این بدافزار آلوده شدید یا نه؟
- ارائه راهکارهایی برای بازیابی و پیشگیری
1- روش های تشخیص بدافزار :
مایکروسافت با آنالیز این بدافزار، راههای مختلفی برای شناسایی اون از نصب تا اجرا به دست آورده. برای این منظور نیاز به بررسی شواهد زیر هستش:
- بررسی فایلهای bootloader که اخیرا نوشته شدن.
- بررسی دایرکتوری هایی که زمان استقرار ایجاد شدن
- کلیدهای رجیستری که اصلاح شدن.
- بررسی لاگهای Windows Event
- رفتار شبکه
- بررسی لاگ Boot Configuration
قبل از پرداختن به هر جزء ، این نکته مهمه که مشاهده این موارد در کنار هم ، اطمینان بالایی برای آلوده بودن سیستم رو ایجاد میکنه اما بصورت تکی شاید با اطمینان نشه گفت که سیستم آلوده شده.
1-1- بررسی اینکه فایلهای bootloader به تازگی ایجاد و قفل شدن :
BlackLotus فایلهای مخرب رو در ESP مینویسه و اونارو قفل میکنه تا از دستکاری و حذف محافظت کنه. اگه روی دستگاهی مشاهده کردید که فایلهای ESP اخیرا دستکاری و قفل شدن، بخصوص اگه با فایلهای BlackLotus مطابقت داشته باشن، اون دستگاه رو از شبکه خارج کنید و موارد دیگه رو بررسی کنید تا مطمئن بشید که آلودگی حتمیه.
خب برای اینکه بتونید ، ESP رو بررسی کنید میتونید از ابزارهایی مثله mountvol استفاده کنید و تاریخ فایلهارو بررسی کنید. فایلهایی که زمان ایجاد نامناسبی دارن و همچنین اونایی که نامهایی دارن که توسط درایور کرنل BlackLotus ، همونطور که در شکل زیر نشون داده شده، مطابقت دارن، خیلی مشکوک میتونه باشه. LastModified فایلها در ESP باید باهم مقایسه بشن.
فایلهایی که توسط درایور این بدافزار محافظت میشن :
1 2 3 |
ESP:\EFI\Microsoft\Boot\winload.efi ESP:\EFI\Microsoft\Boot\bootmgfw.efi ESP:\EFI\Microsoft\Boot\grubx64.efi |
همچنین میتونید timestamp و نام مواردی که در ESP هستش رو با مواردی که در مسیر زیر هستش ، مقایسه کنید :
1 |
C:\Windows\Boot\EFI |
اگه به شکل بالا نگاه کنید ، فایل winload.efi با اینکه جزء فایلهای محافظت شده توسط بدافزار هستش اما از لحاظ زمانی تغییر نکرده. برای همین ، پیشنهاد شده از طریق ابزار CertUtil هش این فایلها رو بررسی کنید. همونطور که بالا اشاره شد، بدافزار فایلها رو قفل میکنه، بنابراین هر دسترسی به این فایلها غیر ممکن هستش و خطای ERROR_SHARING_VIOLATION با متن The process cannot access the file because it is being used by another process نمایش میده، یعنی این برنامه توسط یه برنامه دیگه در حال استفاده هستش. شکل زیر نشون دهنده بررسی هش فایل winload.efi با certutil هستش که همونطور که مشاهده می کنید پیام خطا میده.
خب اگه با ابزار CertUtil ، فایلها رو بررسی کنید و خطای بالا رو بده که باید مشکوک بشید، بخصوص اگه با نام فایلهای محافظت شده مطابقت داشته باشن، اما اگه هش فایل داد، یعنی درسته.
1-2- بررسی دایرکتوریهای ایجاد شده توسط بدافزار:
در زمان نصب BlackLotus دایرکتوری در مسیر ESP:/system32/ ایجاد میشه. البته فایلهای داخل اون بعد از نصب پاک میشن اما خود دایرکتوری می مونه که میتونه برای شناسایی استفاده بشه. البته از طریق فارنزیک میشه این فایلها رو تا حدودی شناسایی کرد، شکل زیر این موضوع رو نشون میده:
1-3- تغییرات رجیستری:
بدافزار برای اینکه بتونه HVCI رو غیر فعال کنه ، مقدار Enabled در مسیر زیر برابر 0 میکنه، البته اگه این کلید از قبل وجود داشته باشه. این مسیر هم میتونه برای شناسایی استفاده بشه.
1 |
HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity |
1-4- بررسی Event log ها :
BlackLotus ، دیفندر رو از طریق دستکاری درایورش و کاهش امتیاز پروسس اصلیش غیر فعال میکنه. این باعث ایجاد لاگهایی در Microsoft-Windows-Windows Defender/Operational در Event log ها میشه. همونطور که در شکل زیر مشاهده میکنید، لاگها نشون میدن که Antimalware به دلایل نامعلومی متوقف شده.
غیرفعال کردن آنتی ویروس دیفندر منجر به متوقف شدن سرویسش هم میشه که منجر به ایجاد لاگ با Event ID 7023 با Provider Name برابر Service Control Manager در System event log میشه. در این لاگ ، Microsoft Defender Antivirus Service بعنوان سرویس آسیب پذیر مشخص شده.
1-5- بررسی رفتار شبکه :
بدافزار یسری لاگ برای فعالیتهای شبکه ایش هم ایجاد میکنه. اگه پروسس winlogon.exe ارتباطات خارجی بخصوص روی پورت 80 داشته باشه، میتونه مشکوک باشه. این میتونه نشون دهنده این موضوع باشه که دانلودر HTTP بدافزار ، اقدام به اتصال به C2 میکنه یا در حال بررسی پیکربندی شبکه هستش. مایکروسافت این مورد از طریق Sysmon کشف کرده. شکل زیر نشون میده که پروسس winlogon.exe به api.ipify.org میخواد وصل بشه تا آدرس public IP دستگاه رو بدست بیاره.
این رویداد در پیکربندی SwiftOnSecurity Sysmon هم هستش :
از طریق netstat هم میشه این رویداد رو کشف کرد. فقط این نکته رو در نظر بگیرید که این اتصال بصورت متناوب هستش.
1-6-بررسی لاگ Boot configuration :
لاگ های Trusted Computing Group (TCG) که بعنوان لاگ های MeasuredBoot هم شناخته می شن ، لاگهای Windows Boot Configuration هستن که حاوی اطلاعاتی در خصوص فرایند بوت سیستم عامل رو نشون میدن. برای دسترسی به این گزارشها حداقل باید ویندوز 8 داشته باشید و ماژول Trusted Platform Module (TPM) فعال شده باشه.
ویژگی Measured Boot در ویندوز 8 معرفی شد و بعنوان راهی که سیستم عامل بتونه یکپارچگی مولفه های نرم افزاری (کرنل ویندوز ، درایورهای راه اندازی اولیه Anti-Malware، درایور های بوت) و اطلاعات پیکربندی TPM رو در زمان راه اندازی اولیه تایید کنه ، بکار میره.
بدافزار BlackLotus داریور بوت داره که در زمان بوت لوود میشه. لاگهای MeasuredBoot ، مولفه های بدافزار رو بعنوان EV_EFI_Boot_Services_Application لیست میکنن.
این لاگها در دایرکتوری C:\Windows\Logs\MeasuredBoot قرار داره و حاوی چندین فایل .log برای هر بوت هستش. میتونید این داده ها رو با هم مقایسه کنید تا ببینید آیا موردی حذف یا اضافه نشده.
در زمان نصب BlackLotus ، وقتی بدافزار روی سیستمی فعال میشه، دو درایور grubx64.efi و winload.efi اضافه میشه. این مورد میتونید تو شکل زیر ببینید (تبدیل به فایل csv میشه) :
نکته ای که هست اینه که لاگهای MeasuredBoot در یه سیستمی که در حال اجرا باشه، قابل دسترس نیست. اونارو یا باید از طریق image هایی که در فرایند فارنزیک گرفته میشه، بدست بیارید یا از طریق raw NTFS reader ها. بعد از استخراج هم باید تبدیل به XML/JSON بشن برای اینکار میتونید از TCGLogTools استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$TCGLogBytes = Get-TCGLogContent -LogType SRTMCurrent $TCGLog = ConvertTo-TCGEventLog -LogBytes $TCGLogBytes $PCR4 = $TCGLog.Events.PCR4 foreach ($Event in $PCR4) { if ($Event.EventType -eq "EV_EFI_BOOT_SERVICES_APPLICATION") { $DevicePath = $Event.Event.DevicePath if ($DevicePath -is [array]) { foreach ($Device in $DevicePath) { if (($Device.Type -eq "MEDIA_DEVICE_PATH") -and ($Device.SubType -eq "MEDIA_FILEPATH_DP")) { Write-Host "Boot application:", $Device.DeviceInfo.PathName } } } else { $PathName = $DevicePath.DeviceInfo.PathName Write-Host "Boot application:", $PathName } } } |
نمونه خروجی این اسکریپت از یه ماشین آلوده رو در شکل زیر میتونید ببینید :
2- جزییات تشخیص:
دیفندر این بدافزار رو با شناسه های زیر مشخص میکنه، البته براساس نمونه های شناخته شده این بدافزار :
Microsoft Defender for Endpoint هم هشدار زیر در زمان فعالیت این بدافزار منتشر میکنه . همچنین Network protection این ابزار اتصال به C2های بدافزار رو مسدود میکنه.
Possible vulnerable EFI bootloader
3- روشهای بازیابی و پیشگیری :
اگه مشخص بشه که دستگاه به BlackLotus آلوده شده در قدم اول باید اونو از شبکه جدا کنید و پارتیشن های سیستم عامل و پارتیشن EFI دوباره فرمت بندی کنید یا از یه بکآپ تمیز پارتیشن EFI ، استفاده کنید.
برای پیشگیری از آلوده شدن به BlackLotus یا بدافزارهایی که از اکسپلویت آسیب پذیری CVE-2022-21894 استفاده میکنن موارد زیر رعایت کنید :
- اصول حداقل امتیاز و مدیریت اعتبارنامه ها در محیط سازمانی رو رعایت کنید. استفاده از اکانتهای سرویس هایی که در سطح ادمین یا دومین هستن، خودداری کنید. امتیازهای local administrative رو کاهش بدید تا جلوی نصب برنامه های ناخواسته رو بگیرید.سازمان باید استراتژی defense-in-depth رو اعمال کنه . این امر میتونه شامل شناسایی /پیشگیری در مراحل مختلف قبل از استقرار BlackLotus باشه، از جمله :
- شناسایی بازیگر تهدیدی که از طریق فیشینگ ، نقض دستگاهها یا سایر بردارهای حمله ، دسترسی اولیه میگیره.
- شناسایی بازیگر تهدیدی که اعتبارنامه های کاربران یا سرویسها رو در شبکه نقض میکنه.
- شناسایی بازیگر تهدیدی که از طریق اکانت های غیر مجاز یا غیرمعمول، سوء استفاده از برنامه های دسترسی از راه دور یا سایر روشها در شبکه حرکت جانبی میکنه.
- شناسایی بازیگر تهدیدی که در حال افزایش امتیاز یا بدست آوردن امتیاز ادمین دامنه یا local administrative هستش.
- شناسایی بازیگر تهدیدی که فایلها مخرب بخصوص نصب کننده های BlackLotus یا فایلهای EFI رو روی سیستم ایجاد میکنه.
- کاربران باید محصولات امنیتیشون رو بروز نگه دارن. اگه بروزرسانی خودکار فعاله که اوکیه اما نه باید حداقل build 383.1029.0 یا جدیدتر رو نصب داشته باشید.
- اگه برای بوت شدن نیازی به Microsoft 3rd Party UEFI CA ندارید اونو از پیکربندی UEFI Secure boot حذف کنید. این کار آسیب پذیری رو از بین نمیبره اما اجرای BlackLotus رو متوقف میکنه.