باجافزار لاکبیت (LockBit) یک خانواده شناختهشده از باجافزار است که در چند سال اخیر در سراسر جهان خرابیهای زیادی به بار آورده است. در مارس ۲۰۲۲، نوع جدیدی از باجافزار به نام LockBit3.0 با ترکیبی از کدهای قبلی از خانواده LockBit و کدهای باجافزار منقرضشده Black Matter ارائه شد.
این نسخه درست مانند نسخههای قبلی باجافزار لاکبیت، برای گسترش بینظمی و رمزگذاری تمام فایلها در سیستم آلوده ساخته شده است، در عین حال دارای لایههای جدید محافظتی و ترفندهایی است که تجزیهوتحلیل و تشخیص را دشوارتر میکند.
در این مقاله، تجزیهوتحلیل فنی باجافزار لاکبیت را در نمونهای با هش ed555f0162ea6ec5b8b8bada743cfc628d376274 ارائه خواهیم کرد.
جزییات فنی باجافزار لاکبیت
این نمونه یک برنامه کاربردی Win32 است که در سیستمعاملهای قدیمیتر نیز اجرا میشود. دارای یک لایه اولیه محافظتی است که ممکن است شبیه یک تکنیک جدید به نظر برسد، اما در واقع یک ترفند قدیمی است که در انواع دیگر بدافزارها استفاده میشود.
همه بدافزارها با یک لایه ناشناخته رمزگذاری میشوند که برای رمزگشایی و اجرای آن به کلید و آرگومان خاصی نیاز است.
در این مورد، بدافزار با آرگومان “-pass” اجرا و سپس با کلید، رمزگشایی میشود.
این نوع حفاظت برای پنهان شدن از دید کسانی که کلید ویژه را در اختیار ندارند، مفید است. با این وجود، اگر یک سیستم محافظتشده دارای هر نوع مکانیزم ثبت گزارش باشد که بتواند خط فرمان برنامه را ثبت کند، این کلید میتواند در گزارش نشان داده شود.
علاوهبراین لایه حفاظتی، بدافزار با استفاده از ترفندهای وام گرفته شده از Black Matter، مبهمسازی میشود.
شکل ۱ : جزئیات یک نمونه از بدافزار
پس از لایه اول، باجافزار لاکبیت شروع به بارگیری ماژولها و APIهای موردنیاز میکند.
کد LockBit3.0، مانند Black Matter از تکنیکی استفاده میکند تا APIها را با استفاده از Stack Obfuscation که مقادیر ۳۲ بیتی را به عنوان هش اجرا میکند، مبهمسازی کند.
با استفاده از این تکنیک، نمیتوان فهمید که کدام API و ماژول استفاده میشود، اما میتوان آنها را با یک دیباگر یا با استفاده از ابزارهایی مانند Hash DB مشخص کرد.
شکل ۲ : LockBit 3.0 ماژولها و APIهای جدید را بارگیری میکند.
باجافزار Black Matter معمولا APIها را با استفاده از یک Stub خاص که در زمان اجرا ساخته میشود، مبهمسازی میکند. این کار از طریق فرآیند زیر انجام میشود:
- حافظه را رزرو میکند.
- بدافزار یک عدد تصادفی انتخاب میکند و براساس آن، کد خاصی را آماده میکند که سعی میکند فراخوانیهای APIها را مخفی کند. ۰ میتواند پنج نوع کد بسازد. این کار برای دشوارتر کردن تشخیص انجام میشود.
- بدافزارلاکبیت آدرس حافظه API را بدست میآورد و آدرسی که Stub رمزگشایی و Jump میکند را مبهمسازی میکند. همچنین نقطه ورودی نهایی به API که بعدا در کد جدید فراخوانی میشود را مبهمسازی میکند تا تجزیه و تحلیل آن سختتر گردد.
شکل ۳ : LockBit 3.0 یک Stub مبهم برای مخفی کردن فراخوانیهای API ایجاد میکند.
درست مانند Black Matter، قبل از ساخت Stub، اتصال دیباگر بررسی میشود و اگر دیباگر وجود داشت، کار Stub متوقف میشود. در این حالت، بدافزار به محض فراخوانی هر API از کار میافتد.
ترفندی که برای بررسی دیباگر استفاده میشود، بررسی مقادیر xABABABABAB0 در حافظه است.
شکل ۴ : یک ترفند برای تشخیص دیباگر که توسط LockBit 3.0 استفاده میشود.
LockBit3.0 مکانیزم حفاظتی دیگری دارد و از یک API به نام “SetThreadInformation” استفاده میکند تا ببیند آیا رشته از دیباگر فرار میکند یا خیر. در این صورت، بدافزار لاکبیت اجرا خواهد شد و هر دیباگری از اشکالزدایی آن منع میشود.
شکل ۵ : ترفند دیگری برای شکار دیباگرها با استفاده از SetThreadInformation
با دنبال کردن این مراحل، بدافزار لاکبیت از یک API به نام “DbgUiRemoteBreaking” استفاده میکند تا اطمینان حاصل شود که دیباگر کار نمیکند. این کار به توسعهدهندگان بدافزار Black Matter در جهت دشوارسازی آنالیز نمونهها کمک میکند.
شکل ۶ : تلاشهای بیشتر برای فرار از دیباگرها با استفاده از DbgUiRemoteBreaking
LockBit3.0 دارای یک پیکربندی داخلی است که رمزگذاری شده و با بلوکهای مختلف فشرده شده است که میتوان آنها را نیز رمزگذاری کرد و در base64 کدگذاری کرد. ما این را در Black Matter نیز میبینیم، به جز در حالتی که Black Matter دارای ۱۰ پرچم است. LockBit3.0 دارای ۲۴ پرچم برای گسترش گزینههای موجود برای اپراتورهای بدافزار است.
با توجه به پرچمها و سایر بخشهای مهم در پیکربندی، این ساختار را داریم:
توضیحات فیلد
PUBLIC_KEY [0x80]
کلید عمومی RSA مورداستفاده در بدافزار لاکبیت
VICT_ID [0x10]
شناسه (ID) برای ردیابی قربانی که در Black Matter استفاده میشود ولی در LockBit v3 استفاده نمیشود.
AES_KEY [0x10]
AES KEY مورداستفاده در Black Matter، به عنوان میراث در بدافزار نگهداری میشود و از آن استفاده نمیشود.
FLAGS [0x18]
رفتار بدافزار را مدیریت میکند، دارای مقدار ۲۴ در LockBit v3 و مقدار ۱۰ در Black Matter است.
POINTER_STRUCT_TO_DATA
ساختاری که اندازه را به صورت بایت برای هر ساختار پیکربندی با رشتههای کدگذاری شده در base64 نگه میدارد.
DATA_ENCODED_IN_BASE64
ساختاری از بلوکهای مختلف که هر کدام از دادههای مختلف را بهصورت رشتههای کدگذاری شده (و رمزگذاریشده) نگه میدارد بهعنوان مثال:
- سرویسهای توقف و پایاندادن به فرآیند (Kill)
- فرآیند خاتمه
- قالب یادداشت باجگیری
- فایلها، پوشهها و برنامههای افزودنی که در فرآیند رمزنگاری باید از آنها اجتناب شود
LockBit3.0 همانند Black Matter، برای استخراج و آمادهسازی فیلدهای پیکربندی به کار زیادی نیاز دارد:
شکل ۷: LockBit 3.0 پرچمها و اطلاعات را از پیکربندی استخراج میکند.
جالب است بدانید که بدافزار لاکبیت در حافظه همزلع یل قالب یادداشت باجگیری، ایجاد شناسه قربانی و نوشتن یادداشت باجگیری را رمزگشایی میکند، قبل از اینکه دوباره در حافظه برای استفاده بعدی رمزگذاری شود.
با رمزگذاری یادداشت باجگیری در حافظه، کاربر میتواند از شناسایی توسط محصولات امنیتی که میتوانند این الگو را شناسایی کنند، دوری کند.
مانند سایر باجافزارها، LockBit3.0 پرچم را بررسی میکند تا زبان دستگاه قربانی را با یک لیست کدگذاریشده از زبانهای موجود در لیست سیاه مقایسه کند. اگر این پرچم فعال باشد، با استفاده از دو API به نامهای “ZwQueryInstallUILanguage” و “ZwQueryDefaultUILanguage” زبان را بررسی میکند.
با این دو تابع، زبان استفاده عادی و زبان نصب سیستم ویندوز را بررسی میکند. بررسیها براساس فهرستی از مقادیر کدگذاریشده انجام میشوند، که به منظور جلوگیری از شناسایی در دیسک و انجام تجزیهوتحلیل بسیار دشوارتر، مبهم شدهاند.
شکل ۸ : بررسی زبان ماشین به روش مبهم
برخی از زبانهایی که در LockBit3.0 مورد حمله قرار نمیگیرند، عبارتند از:
- روسی
- اوکراینی
- رومانیایی از مولداوی
- بلاروسی
- تاتاری
- گرجی
اگر بدافزار یکی از این زبانها را شناسایی کند، اجرا را متوقف و از آسیب رساندن به سیستم خودداری میکند.
همانطور که در مورد Black Matter میبینیم، LockBit3.0 نیز از ترفندهای مختلفی برای افزایش سطحدسترسی استفاده میکند:
- کپی کردن توکن از EXE و سایر فرآیندها مثل EXPLORER.EXE
- اگر سیستمعامل ۳۲ یا ۶۴ بیتی باشد، با استفاده از PEB، پوستههای مختلفی را راهاندازی میکند. در مورد ۳۲ بیت فقط یکبار استفاده میشود، اما در مورد ۶۴ بیت، دوبار استفاده میشود که باعث آرگومان دوم میشود.
سپس، بدافزار پسوند جدیدی برای فایلهای رمزگذاریشده، آیکون آنها و یادداشت باجگیری میسازد.
برخلاف Black Matter که “MachineGUID” را از رجیستری میخواند، این نسخه جدید بدافزار لاکبیت از بلوک کلید عمومی RSA استفاده میکند و هش MD5 را از آن محاسبه میکند.
این تغییر به دو دلیل انجام میشود:
- اول، برای جلوگیری از محافظتهای ضدویروس که بررسی میکنند که آیا “MachineGUID” دستکاری شده است تا از اجرای بدافزار لاکبیت جلوگیری شود. اگر این اتفاق با Black Matter بیفتد، بدافزار بدون هیچ آسیب واقعی در دستگاه قربانی متوقف میشود.
- دوم، ردیابی فایلهای پسوندی برای یک اپراتور بدافزار و قربانیان آسانتر است.
شکل ۹ : ساخت پسوند جدید برای فایلهای رمزگذاری شده
این رشته، نام فایل یادداشت باجگیری را میسازد و یک هش را به منظور بررسی یکپارچگی نام فایل محاسبه میکند.
شکل ۱۰ : ایجاد یادداشت باجگیری
سپس بدافزار یک فایل آیکون ویژه ایجاد میکند که بصورت باینری در سیستم قربانی و در پوشه %appdata% و با همان نام Ransom Note اما با پسوند «.ico» قرار میگیرد.
شکل ۱۱ : ساخت فایل آیکون ویژه
سپس LockBit3.0 فایلی مرتبط با فایلهای رمزگذاریشده به همراه پسوند جدید را در رجیستری قرار میدهد، تا کاربر تنها فایلهای رمزگذاریشده با نماد جدید را به منظور هشدار دریافت کند.
شکل ۱۲ : ساخت آیکون جدید با پسوند جدید برای فایلهای رمزگذاریشده
این تغییرات با استفاده از یک API به نام “SHChangeNotify” در سیستم اعمال میشود و سیستم را مجبور میکند تا تمام تغییرات را در لحظه فراخوانی به روز کند.
شکل ۱۳ : سیستم مجبور است تغییراتی را که فایل آیکون جدید را نشان میدهد، بهروزرسانی کند
LockBit3.0 دارای ۲۴ پرچم است که میتواند رفتار آن را تغییر دهد. برخی از این پرچمها عبارتند از:
FlagDescription
CRYPT_WITH_RANDOM_NAMES
در صورت فعال بودن، بدافزار فایلها را رمزگذاری میکند و نام آن را با نامی تصادفی اما با پسوند از قبل آمادهشده تغییر میدهد.
ENCRYPT_BIG_FILES
اگر این پرچم فعال باشد، فایلهای بزرگ رمزگذاری خواهند شد، در غیر این صورت از این نوع فایلها برای آسیبرساندن سریعتر به سیستم، اجتناب میشود. یک اپراتور خیلی سریع به فایلهای رمزنگاری نیازدارد، به همین دلیل اجتناب از فایلهای حجیم راهی است برای اطمینان از اینکه آسیب بزرگی میتواند خیلی سریع انجام شود.
AVOID_HIDDEN_FILES
در صورت فعال بودن، بدافزار از فایلهایی که دارای این پرچم در ویژگیهای فایل هستند، اجتناب میکند.
MAKE_LOGON
در صورت فعال بودن، بدافزارلاکبیت سعی میکند با اطلاعات اعتباری که در پیکربندی ذخیره میشوند، تلاشی برای ورود به سیستم انجام دهد. در صورت غیرفعال بودن این پرچم یا خالی بودن بلوک اطلاعات اعتباری، از آن اجتناب میشود.
CHECK_LANGUAGE
در صورت تنظیم، بدافزار زبان دستگاه قربانی را بررسی میکند.
ENCRYPT_SHARED_FOLDERS
در صورت تنظیم، بدافزار لاکبیت سعی میکند پوشههای اشتراکگذاریشده را رمزگذاری کند.
ENCRYPT_SERVER
در صورت تنظیم، بدافزار لاکبیت سعی میکند تمام فضاهای قابل نصب و همه سرورهای تبادلی موجود را رمزگذاری کند.
CREATE_MUTEX
در صورت تنظیم، بدافزارلاکبیت یک Mutex به منظور جلوگیری از اجرای چندگانه در دستگاه قربانی میسازد، به همان شیوه ای که در ساخت آنتیویروس استفاده میشود، این پرچم معمولا میتواند روی غیرفعال تنظیم شود.
DELETE_SERVICE
در صورت تنظیم، بدافزار سعی میکند سرویسها را در بلوک سرویس در پیکربندی پیدا، متوقف و حذف کند. این رفتار امنیتی برای جلوگیری از شناسایی و توقف فرآیند رمزگذاری است، اما یک رفتار نویزدار و پرسر و صداست.
KILL_PROCESSES
در صورت تنظیم، بدافزار سعی خواهد کرد، همانند سرویسها، فرآیندهای موجود در بلوک پیکربندی را پیدا کرده و خاتمه دهد. این کار به منظور جلوگیری از شناسایی و حفاظت از فرآیند رمزگذاری است، اما یک رفتار نویزدار است.
CHANGE_WALLPAPER
در صورت تنظیم، بدافزار تصویر زمینه دسکتاپ را در دستگاه قربانی تغییر میدهد تا به کاربران در مورد حمله هشدار دهد.
CHANGE_ICON
در صورت تنظیم، بدافزارلاکبیت سعی میکند فایل آیکون رمزگذاریشده ویژه را بسازد و این آیکون را به عنوان آیکون پیشفرض برای پسوند فایلهای رمزگذاریشده تنظیم کند. در برخی از نمونهها، این پرچم بررسی نمیشود و بدافزار همیشه آیکون را میسازد.
PRINT_RANSOM_NOTE
در صورت تنظیم، بدافزار سعی میکند یادداشت باجگیری را در همه چاپگرهای موجود چاپ کند تا به کاربران درباره حمله در دستگاه هشدار دهد. این رفتار میتواند بسیار نویزدار باشد و فعالیتهای دیگر شرکت را متوقف کند.
DELETE_MALWARE
اگر تنظیم شده باشد، بدافزار لاکبیت سعی میکند پس از پایان حمله، خود را حذف کند تا هیچ ردی از فایل بدافزار در دیسک باقی نماند.
DELETE_AV_SERVICES
در صورت تنظیم، بدافزار سعی میکند سرویسهای AV را که در یک بلوک پیکربندی ذخیره شده است، متوقف و حذف کند.
CONNECT_TO_C2
در صورت تنظیم، بدافزار سعی میکند ارتباط برقرار کرده و اطلاعات مربوط به قربانی، دستگاه و فایلهای رمزگذاریشده را ارسال کند. همانند کاری که Black Matter انجام میدهد.
فرآیند رمزگذاری بهطور قابلتوجهی مانند Black Matter است.
نتیجهگیری
LockBit3.0 نوع جدیدی از خانواده بدافزار لاکبیت است که با افزودن کدهایی به Black Matter، محافظت در برابر تشخیص را افزایش میدهد و تجزیهوتحلیل آن را سخت میکند. با افزایش تعداد پرچمها، اپراتورهای بدافزار انعطاف بیشتری برای استفاده از بدافزار در سناریوهای مختلف دارند. قابل ذکر است که این بدافزار در حملاتی مانند حمله به “Entrust” در ۱۸ ژوئن ۲۰۲۲ استفاده شده است.
این بدافزار تهدیدی جدی است که باید از طریق وصلههای امنیتی در برابر آسیبپذیریها، بستن اتصالهای RDP غیرضروری، آموزش فیشینگ به کارکنان و اتخاذ تدابیری برای محافظت از سرورها و ایستگاههای حیاتی، کنترل شود.