بدافزار Zloader (با نام مستعار Terdot ،DELoader یا Silent Night)، یک تروجان ماژولار است که بر اساس کد منبع ZeuS نوشته شده است. Zloader پس از یک وقفه تقریبا دو ساله با تکرار جدیدی که شامل تغییراتی در تکنیکهای مبهم سازی، الگوریتم تولید دامنه (DGA) و ارتباطات شبکهای است، مجددا پا به عرصه گذاشته است.
بدافزار Zloader اخیراً یک ویژگی ضد آنالیز، مشابه آنچه در کد اصلی ZeuS 2.x وجود داشت، معرفی کرده است. این ویژگی، اجرای باینری Zloader را به دستگاه آلوده محدود میکند و نمونه در سایر دستگاهها، قابل اجرا نخواهد بود. ما در این پست، نحوه عملکرد این ویژگی ضدآنالیز را مورد بررسی قرار خواهیم داد.
تحلیل فنی
نمونههای Zloader با نسخههای بالاتر از ۲.۴.۱.۰، در صورتی که پس از نفوذ اولیه بر روی سیستم دیگری کپی و اجرا شوند، به طور ناگهانی خاتمه مییابند. این، به دلیل بررسی رجیستری ویندوز برای وجود یک کلید (Key) و مقدار (Value) خاص است. تصویر زیر نشان میدهد که بررسی رجیستری ویندوز در سندباکس ناموفق بوده است.
کلید و مقدار رجیستری بر اساس یک seed هارکد شده که برای هر نمونه متفاوت میباشد، تولید میشوند. کد پایتون زیر، الگوریتم را برای تولید کلید رجیستری تکرار میکند.
#!/usr/bin/env python3
SEED = 0x1C5EE76F0FE82329
def calculate_registry_key(seed):
key = ""
key_length = 1 + seed % 8
if key_length < 4:
key_length = 4
for i in range(key_length):
key += chr(seed % 0x1A + 0x61)
seed = (((seed << 8) | (seed >> (64 - 8))) & 0xffffffffffffffff) + 1
key = key.capitalize()
return key
print(calculate_registry_key(SEED))
اگر جفت کلید/مقدار (key/value) رجیستری به صورت دستی ایجاد شود، آنگاه Zloader، خود را با موفقیت به یک فرآیند جدید تزریق میکند. Zloader پس از اجرای چند دستورالعمل، مجددا خاتمه مییابد. علت این خاتمه، یک بررسی ثانویه در هدر MZ Zloader است.
بررسی هدر MZ
یک بررسی اضافی در کد وجود دارد که شامل حضور یک DWORD در هدر MZ در آفست 0x30 میباشد. DWORD تنها پس از تزریق به یک فرآیند جدید اجرا میشود. DWORD مورد استفاده در نمونه آنالیز شده در تصویر زیر نشان داده شده است.
DWORD در آفست 0x30، بخشی از ده DWORD رزرو شده میباشد که از آفست 0x28 به آفست 0x3C هدر MZ منتقل میشود. این بایت ها معمولا null میباشند.
کاری که توسعه دهندگان بدافزار در اینجا انجام دادهاند، استفاده از هدر MZ اضافی DWORD به عنوان یک پوینتر به آفست seed است که هدف از بررسی را توضیح میدهد.
باینری اولیه برای نفوذ به سیستم میبایست دارای یک seed با مقدار null باشد. آفست نیز با استفاده از یک QWORD شبه تصادفی تولید شده از طریق الگوریتم Mersenne Twister، مقداردهی اولیه میشود و یک seed هاردکد شده باقی میماند که در هر نمونه متفاوت است.
شکل زیر، کد دیکامپایل شدهای را نشان میدهد که seed در آن در حال تولید و نوشتن میباشد.
بدون تنظیم مقادیر صحیح برای seed و هدر MZ، نمونه Zloader بر روی سایر دستگاهها اجرا یا نصب نخواهد شد. ZLoader در نسخههای اخیر، رویکردی پنهانی برای نفوذ به سیستم اتخاذ کرده است. این تکنیک جدید ضد آنالیز، ZLoader را برای شناسایی و تجزیه و تحلیل، چالش برانگیزتر میکند.