همونطور که در خبرهای قبلی منتشر کرده بودیم، مجریان قانون از 11 کشور مختلف ، طی یک عملیات مشترک بنام Operation Cronos ، موجب اختلال در زیرساخت های گروه باج افزاری لاک بیت شدن و در ادامه دو نفر رو در لهستان و اوکراین دستگیر، سه حکم بازداشت بین المللی و 5 کیفرخواست علیه سایر عوامل این باند باج افزاری صادر کردن و همچنین یه رمزگشا هم توسعه دادن.
اقدام دیگه که در این عملیات انجام شد، آنالیز باج افزار جدید این گروه توسط محققای ترندمیکرو هستش، که در این پست بهش پرداختیم.
LockBit یه گروه باج افزاری هستش که باج افزارش رو بصورت Ransomware-as-a-Service (RaaS) در اختیار افلیتها قرار میده. در این نوع سرویس همه ی امور مربوط به باج افزار از جمله توسعه و نگهداری رمزکننده ، زیرساخت های مذاکره، سرورهای ذخیره فایل که معروف به Stealbit هستن و … توسط باند تامین میشه و افلیتها فقط حمله و آلوده سازی رو انجام میدن. در نهایت اگه قربانی باج رو پرداخت کنه، 60 تا 80 درصد باج برای افلیت و بقیه سهم باند هستش.
باج افزار این گروه ، خیلی از سازمانهای ریز و درشت در دنیا رو آلوده کرده. شکل زیر نشون دهنده تعداد قربانیانی هستش که در سایت نشت این گروه بعنوان قربانی ارائه شدن.
از لحاظ فنی چیزی که لاک بیت رو با بقیه ی باج افزارهای رقیب خاص میکرد، امکان آلوده کردن سیستم های مجاور (self-spreading) بود ، تکنیکی که در سایر محصولات باج افزاری وجود نداشت.
از دید گروههای مجرمانه، لاک بیت یک گروه نوآورانه هستش و تمایل به تست چیزهای جدیدی داره. مثلا یکی از کارهایی که کرده بودن این بود که یه مسابقه برگزار کردن و به بهترین ایده هایی که منجر به بهبود باج افزارشون بشه، بانتی میدادن. یک کار دیگه ای که کرده بودن، یک اینترفیس point-and-click در اختیار افلیتها قرار دادن که اونا میتونستن به سادگی و بدون دانش فنی، قبل از کامپایل رمزکننده، گزینه های مدنظرشون رو بهش اضافه کنن.
یکی دیگه از کارهاشون که انجام دادن، پرداخت پول به کسایی بود که LockBit رو خالکوبی کنن یا یه جایزه یک میلیون دلاری برای شناسایی هویت LockBitSupp برگزار کردن که حتی جایزه رو تا 10 میلیون دلار هم ارتقاء دادن.
نوآوری دیگه ای که کردن این بوده که چندین نسخه از باج افزار رو توسعه دادن:
- نسخه اولیه LockBit 1.0 – ژانویه 2020
- LockBit 2.0 معروف به RED – ژوئن 2021
- LockBit 3.0 معروف به BLACK – مارس 2022
- LockBit Linux – برای هدف قراردادن لینوکس و VMWare ESXi – اکتبر 2021
- LockBit Green – یه نسخه میانی که از روی باج افزار Conti توسعه داده شده بود – ژوئن 2023
با این حال ، در سالهای اخیر این گروه باج افزاری با مسائل مختلفی روبرو شده که موجب کاهش اعتماد و فعالیت توسط افلیتها و ترک اونا از این برنامه شد. جزییات این مسائل رو میتونید اینجا مشاهده کنید.
همونطور که اشاره کردیم در جریان اقدامات مجریان قانون، یه نسخه جدید و در حال توسعه از این باج افزار هم کشف شد و برای آنالیز در اختیار محققای ترندمیکرو قرار گرفته.
محققا اسم این نسخه رو LockBit-NG-Dev (NG for Next Generation) گذاشتن و احتمال میدن بعد از تکمیل ممکنه حتی بعنوان Lockbit 4.0 ارائه بشه. در ادامه به بررسی این نسخه ی جدید پرداختن و اونو با نسخه Green مقایسه کردن.
آنالیز فنی LockBit-NG-Dev :
نسخه ی جدیدی که محققای ترندمیکرو بررسی کرده با استفاده از پکر MPRESS پک شده، تا بتونه از شناسایی استاتیک فرار کنه. بعد از اینکه این نسخه رو آنپک کردن، متوجه شدن که با Net. توسعه داده شده و احتمالا با CoreRT کامپایل شده، که نسبت به نسخه های قبلی که با ++C/C توسعه داده شده بودن ، متفاوت هستش.
این نسخه هم مثله نسخه های قبلی یه پیکربندی داخلی داره که روتین هایی که قراره توسط بدافزار انجام بده رو مشخص کرده. پیکربندی با فرمت JSON هستش و در زمان اجرا رمزگشایی میشه و شامل اطلاعاتی مانند محدوده تاریخ اجرا، فایل و محتوای متن باج، شناسه منحصر به فرد باج افزار، کلید عمومی RSA و یسری دیتای دیگه هستش. لیست کامل این پیکربندی ها رو میتونید در جدول زیر مشاهده میکنید.
فیلد | توضیحات |
MinDate | Minimum Date where ransomware will execute (format. MM/DD/YYYY) |
MaxDate | Maximum Date where ransomware will execute (format. MM/DD/YYYY) |
AppendedExtension | Extension that will be appended on encrypted files ex.locked_for_LockBit) |
NoteFilename | Filename of the ransom note |
ID | Unique identifier for the ransomware |
ChangeFilename | If true, change filename of encrypted files to a random one |
EncryptNetworkShares | if true, include network drives in encryption |
SkipHiddenFiles | if true, will not encrypt files with attribute hidden |
DeleteVolumeShadowCopies | If true, delete shadow copies by executing vssadmin command |
DeleteWindowsSystemBackups | If true, delete windows backup by executing wbadmin command |
EfficiencyMode | Flag to check if will use enough or more resources during encryption |
SelfDelete | If true, overwrite contents of ransomware with null bytes |
DropNoteBeforeEncryption | If true, ransom note will be dropped first before encrypting |
DropNoteInEveryDirectory | if true, drop ransom note on every directory |
DropNoteInSpecificDirectories | if true, drop note only on the specified directory in field DirectoriesToDropNoteIn |
DirectoriesToDropNoteIn | List of file path to drop ransom note in |
RegexDropNoteInSpecificDirectories | if true, drop note on directory if it matches the regex expressions under the DirectoriesToDropNoteInRegexQueryString |
DirectoriesToDropNoteInRegexQueryString | List of regex expression of desired directories to drop ransom note |
StopProcesses | If true, terminate processes under the ProcessesToStop field |
ProcessesToStop | List of process names to stop |
StopServices | If true, stop services under the ServicesToStop field |
ServicesToStop | List of service name to stop |
IncludeFiles | If true, include the files under FileSet in encryption routine, otherwise avoid encrypting if set to false |
FileSet | List of files that would be excluded in encryption if IncludeFiles is set to false |
RegexIncludeFiles | If true, include the files that matches the regular expression under FilesRegexQueryString in encryption routine, otherwise avoid encrypting if set to false |
FilesRegexQueryString | Regular expression of files to include or avoid in encryption |
IncludeDirectories | If true, include the directories under DirectoryList in encryption routine, otherwise avoid encrypting if set to false |
DirectoryList | List of directories that would be excluded in encryption if IncludeDirectories is set to false |
RegexIncludeDirectories | If true, include the directories that matches the regular expression under DirectoriesRegexQueryString in encryption routine, otherwise avoid encrypting if set to false |
DirectoriesRegexQueryString | Regular expression of directories to include or avoid in encryption |
IncludeExtensions | If true, include the files with extension under NoneSet in encryption routine, otherwise avoid encrypting if set to false |
NoneSet | List of file extension to avoid during encryption, if IncludeExtensions is False |
FastSet | List of extension of files that are targeted to only be encrypted with the first x bytes where x is value set in BufferSize |
IntermitttentSet | List of extension of files that would only be partially encrypted depending on the value of Percent |
FullSet | List of extension of files that would be fully encrypted regardless of size |
BufferSize | Size to encrypt for files listed in FastSet (ex. 4096) |
Percent | Percentage value of intermittent encryption to perform |
Segmentation | Value to compute offset of blocks to encrypt under |
Intermittent | Encryption (ex. 256) |
PublicKey | RSA public key |
شکل زیر هم نشون دهنده پیکربندی Json دیکریپت شده هستش.
بعد از دیکریپت شدن، LockBit یه mutex با مقدار فیلد ID در پیکربندی ، بعنوان نام mutex ایجاد میکنه. اگه mutex وجود داشته باشه، پروسس برای جلوگیری از اجرای چند نمونه ازش به اجراش خاتمه میده. شکل زیر بررسی Mutex رو نشون میده.
یکی از رفتارهای جدیدی که در این نسخه شاهدش هستیم، بررسی محدوده ی تاریخ برای فعالیت هستش. اگه اجرا در این محدوده نباشه، برنامه به اجراش خاتمه میده. نمونه ای که محققا بررسیش کردن، بین یه تاریخ شروع و پایان، کار میکنه. این کار احتمالا به این دلیل انجام میشه که افلیت ها نتونن از باج افزار استفاده مجدد کنن و اگه این محدوده تموم بشه، افلیتها دوباره اقدام به خریداری باج افزار کنن. البته میشه بعنوان یه تکنیک ضدسندباکس و ضدآنالیز هم در نظر گرفت ، اما دور زدن اون در طول فرایند مهندسی معکوس برای یه آنالیزگر کار سختی نیست. اما ممکنه برای یه افلیت این کار چالشی باشه. در شکل زیر، بررسی این محدوده رو مشاهده میکنید.
در ادامه مثله سایر باج افزارها، پروسس ها رو میبنده، سرویس هایی که ممکنه به فایلها دسترسی داشته باشن که میخواد اونارو رمز کنه یا پروسس های مرتبط با محصولات امنیتی یا سرویس هایی که مانع از اجرای باج افزار میشه رو میبنده. برای انجام این کار، ابتدا فلگ های StopProcesses و StopServices رو در فایل کانفیگ بررسی میکنه تا ببینه True هستن یا نه. اگر True تنظیم شده باشه، پروسس هایی که اسمشون در فیلد ProcessesToStop و سرویس هایی که اسشمون در فیلد ServicesToStop (در فایل کانفیگ) موجود هست رو میبنده. شکل زیر بررسی اینکه پروسس ها و سرویس ها قراره بسته بشن یا نه رو نشون میده.
لاک بیت قبل از رمزگذاری فایلها ، از طریق روالهای زیر، مانع بازیابی از طریق Shadow Copy و بکآپها میشه :
- در فایل پیکربندی فیلد DeleteVolumeShadowCopies رو بررسی میکنه ببینه که آیا True تنظیم شده یا نه، اگه True باشه از طریق دستور زیر shadow copyها رو پاک میکنه :
1 |
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe vssadmin Delete Shadows /All /Quite |
- برای حذف بکآپ های ویندوز، فیلد DeleteWindowsSystemBackups رو در فایل پیکربندی چک میکنه، اگه True باشه از طریق دستور زیر ، اونارو پاک میکنه :
1 |
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe wbadmin DELETE BACKUP –keepVersions:0 -quiet |
یکی از روالهایی که در نسخه های قبلی هم وجود داشته، امکان تغییر نام فایلهای رمز شده با یه نام تصادفی هستش. برای این کار ،باج افزار فیلد ChangeFilename رو در فایل پیکربندی چک میکنه و اگه True باشه، از طریق یه تابع این کار انجام میده.
نام فایل اصلی بعد از قسمت رمز شده فایل قرار میگیره. برای فایلهایی که بصورت کامل رمز نشده باشن، نام فایل به محتواش اضافه میشه و برای فایلهایی که بصورت کامل رمز شده باشن، در بافر رمزشده RSA قرار میگیره.
LockBit سه حالت رمزگذاری داره: Fast ، Intermittent و Full . فایلها معمولا در حالت Fast رمز میشن تا سرعت رمزگذاری رو افزایش بدن ، چیزی که افلیتها دوسش دارن، اما میشه براساس پسوند فایل ، نوع رمزنگاری رو هم پیکربندی کرد. نمونه ای که محققا بررسی کردن، فایلهای txt رو در حالت full ، فایلهای csv و sql رو در حالت intermittent رمز میکرده.
سه حالت رمزگذاری بصورت زیر هستش :
- Fast : در این حالت 0x1000 بایت از ابتدای فایل رمز میشه. سایزی که برای رمزگذاری فایلهایی که در FastSet لیست شدن رو ، میشه از طریق فیلد Buffersize تنظیم کرد.
- Intermittent : فقط درصد مشخصی از فایلها رو که در فیلد Percent مشخص شده رو رمز میکنه. همچنین میشه از طریق فیلد Segmentation فاصله بین بلوکهای رمزگذاری رو هم مشخص کرد.
- Full : همه ی فایل رو رمز میکنه.
مثله بقیه باج افزارها، LockBit-NG-Dev هم از رمز شدن یسری دایرکتوری و فایل و پسوند فایل اجتناب میکنه. این فایلها در فایل پیکربندی از طریق فیلدهای DirectoryList ، FileSet و NoneSet مشخص میشن. همچنین فیلدهای پیکربندی IncludeFiles ، IncludeDirectories و IncludeExtensions باید روی false تنظیم بشن. همچنین دارای یه گزینه ی regex هم هستش که برای فایلها و دایرکتوریهایی هستش که باید در فیلد FilesRegexQueryString و DirectoriesRegexQueryString از اونا اجتناب کنه.
اگه فیلد EnableNetworkShares با True مشخص شده باشه ، Network Share هارو هم رمز میکنه.
LockBit-NG-Dev فایلهارو از طریق الگوریتم AES رمز میکنه و کلید AES رو هم با کلید عمومی RSA که در فایل پیکربندی هستش، رمز میکنه. کلیدهای AES برای هر فایلی که باید رمز بشه، بصورت تصادفی ایجاد میشه.
محتوای متن باج و نام فایل هم در فایل پیکربندی هستش. همچنین میشه در پیکربندی تنظیم کرد تا فایل متن در همه ی دایرکتوری ها قرار بگیره یا فقط در دایرکتوری هایی با مسیر/مسیرهای مشخص شده از طریق regular expression ، قرار بگیره.
گزینه ای هم وجود داره که میشه، فایل متن باج رو قبل از رمزنگاری در دایرکتوری های هدف یا همه ی دایرکتوری های پیمایش شده، قرار داد. اگه این گزینه فعال باشه، قرار دادن یه فایل text مشابه، در چندین دایرکتوری ، میتونه بعنوان یه رفتار مشکوک برای ابزارهای امنیتی باشه و اجرای برنامه رو قبل از رمزگذاری متوقف کنن. در شکل زیر روال بررسی اینکه متن باج قبل از رمزگذاری در دایرکتوریها قرار گرفته رو مشاهده میکنید.
در نهایت اگه مقدار فیلد Self-delete در پیکربندی True باشه، ردپای باج افزار رو با 0 کردن محتوای اون از طریق دستور پاورشلی زیر پاک میکنه :
1 |
powershell.exe -Stop-Process -Id {process id} -Force; fsutil.exe file setZeroData offset=0 length=9999999999 “{Path of ransomware}” |
متن گزارش رو میتونید از این لینک یا کانال تلگراممون دانلود کنید.
IoCهای گزارش :
با عنوان Ransom.Win64.LOCKBIT.YXDLS شناسایی میشه.
SHA256: f56cba51a4e86f3be5208dfce598d0d6a86cbbc820b214d5d5df7d327e580b82
TLSH:T1615533707F603835DB3BD27B546D0D8892FB39789A198BFAC0661F87185691F0907A8F
منابع :