کالبدشکافی LockBit 5.0 روی لینوکس
خلاصهٔ کاملتر
توی این پست، نویسنده یه تحلیل مرحلهبهمرحله از LockBit 5.0 نسخهٔ لینوکس (با برچسب داخلی LINUX Locker v1.01) رو مستند کرده. همهٔ تستها توی یه ماشین مجازی VirtualBox با توزیع REMnux و آداپتور Host-Only انجام شده، یعنی نمونه اصلاً به اینترنت دسترسی نداشته. اولین مانع هم همون اول کار خودش رو نشون داده: باجافزار ردیابی با strace رو تشخیص میده و بیسروصدا بلاک میکنه.
راهحل نویسنده پیوت به ابزارهای مبتنی بر eBPF بوده که توی فضای کرنل کار میکنن و از تلهٔ ptrace رد میشن. ردیابی دسترسی به فایلها پنج فاز مشخص رو لو داده: بارگذاری کتابخونهها (حضور libpthread یعنی اجرای چندنخی)، شناسایی و ضدتحلیل با خوندن /proc/self/status برای چک کردن TracerPid و /proc/ioports برای تشخیص ماشین مجازی، تولید کلید از /dev/urandom بههمراه خوندن تعداد هستههای CPU برای تعیین اندازهٔ thread pool، و بعدش رمزگذاری و نوشتن یادداشت باج.
توی تحلیل استاتیک با Ghidra، مهمترین یافته ثابت سیگمای ChaCha20 بوده که بهصورت دو مقدار ۶۴ بیتی توی دیتای باینری نشسته و کنار هم رشتهٔ استاندارد «expand 32-byte k» رو میسازه — یه نشونهٔ قطعی برای شناسایی الگوریتم:
_DAT_0065e2d0 = 0x3320646e61707865; // "expand 32-by"
_DAT_0065e2d8 = 0x6b20657479622d32; // "te k"پارسر آرگومانهای باینری هم یه رابط خط فرمان کامل داره: فلگ -r رمزگذاری جزئی بین ۱۰ تا ۹۰ درصد هر فایل رو فعال میکنه (سریعتره ولی فایل رو همچنان غیرقابل بازیابی میکنه)، -k خودتخریبی پیشفرض باینری رو خاموش میکنه، -w فضای خالی دیسک رو پاک میکنه تا ریکاوری فارنزیک جواب نده و -q حالت بیصداست: بدون تغییر پسوند و بدون یادداشت باج.
ساختار فایل رمزشده هم بررسی شده: ۲۴ بایت اول nonce، بعدش یه بلاب کلید که با Curve25519 بسته شده و از بایت ۰x80 به بعد محتوای رمزشده. نویسنده میگه طول ۲۴ بایتی nonce بهجای ۱۲ بایت، بیشتر به XChaCha20 اشاره داره تا ChaCha20 استاندارد، هرچند تأیید قطعیاش به فارنزیک حافظه نیاز داره. چون کلید عمومی Curve25519 داخل باینری هاردکد شده، رمزگذاری کاملاً آفلاین ممکنه و رمزگشایی بدون کلید خصوصی اپراتورها عملاً غیرممکنه.
عملیاتیترین یافته اما توی مانیتورینگ شبکه بوده: Wireshark صفر پکت، مانیتور سوکت صفر اتصال و شمارندهٔ ارسال کارت شبکه صفر بایت. یعنی کل رمزگذاری بدون یک بایت ترافیک تموم میشه و اگه ارتباط با C2 هم وجود داشته باشه، کار یه کامپوننت جداگونهست. جمعبندی نویسنده اینه که تشخیص شبکهای اینجا بیفایدهست و مدافعها باید روی سیگنالهای رفتاری اندپوینت تمرکز کنن.
نکات کلیدی:
- LockBit 5.0 لینوکس یه باینری ELF چندنخی x86-64 هست که strace رو تشخیص میده و بلاک میکنه
- تحلیل با ابزارهای eBPF بهجای ptrace انجام شده و همین دور زدن ضدتحلیل رو ممکن کرده
- رمزگذاری با ChaCha20 (احتمالاً XChaCha20) و بستهبندی کلید با Curve25519 انجام میشه
- کلید عمومی داخل باینری هاردکد شده، پس رمزگذاری کاملاً آفلاین کار میکنه
- توی کل اجرا صفر بایت ترافیک شبکه تولید شده — تشخیص شبکهای جواب نمیده
- نشانههای تشخیص: انفجار تغییر نام فایلها با پسوند ۱۶ کاراکتری هگز، پیمایش پیاپی /proc، و ساخته شدن فایل ReadMeForDecrypt.txt




