در این پست به شما خواهیم گفت که چگونه گروه سایبری OceanLotus (APT32 و APT-C-00) اخیراً از یکی از اکسپلویت های عمومی در دسترس استفاده کرده است.
OceanLotus در جاسوسی سایبری تخصص دارد و اهداف اولویت آن کشورهای جنوب شرقی آسیا است. مهاجمان اسنادی را جعل می کنند که توجه قربانیان احتمالی را به خود جلب می کند تا آنها را متقاعد کنند که درب پشتی را اجرا کنند و همچنین در حال کار بر روی ابزارهایی هستند. روشهای مورد استفاده برای ایجاد هانیپاتها در حملات متفاوت است، از فایلهای با پسوند دوگانه، بایگانیهای خود استخراج، اسناد با ماکروها تا سوء استفادههای شناخته شده.
استفاده از اکسپلویت در Microsoft Equation Editor
در اواسط سال 2018، OceanLotus کمپینی را برای سوء استفاده از آسیبپذیری CVE-2017-11882 انجام داد. یکی از اسناد مخرب این گروه سایبری توسط متخصصان مرکز اطلاعات تهدید 360 مورد تجزیه و تحلیل قرار گرفت.
مرحله اول
سند FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) مشابه آنچه در مطالعه بالا ذکر شد است. جالب است زیرا کاربران علاقه مند به سیاست کامبوج را هدف قرار داده است (CNRP - حزب نجات ملی کامبوج، منحل شده در پایان سال 2017). با وجود پسوند .doc، سند در قالب RTF است (تصویر زیر را ببینید)، حاوی کد زباله است، و همچنین تحریف شده است.
شکل 1. "زباله" در RTF
اگرچه عناصر مخدوش وجود دارد، Word این فایل RTF را با موفقیت باز می کند. همانطور که در شکل 2 می بینید، یک ساختار EQNOLEFILEHDR در افست 0xC00، به دنبال آن یک هدر MTEF و سپس یک ورودی MTEF (شکل 3) برای فونت وجود دارد.
شکل 2. مقادیر ورودی FONT
شکل 3.
سرریز احتمالی در مزرعه نام، زیرا اندازه آن قبل از کپی بررسی نمی شود. نامی که بیش از حد طولانی باشد باعث ایجاد یک آسیب پذیری می شود. همانطور که از محتویات فایل RTF می بینید (تغییر 0xC26 در شکل 2)، بافر با کد پوسته و به دنبال آن یک دستور ساختگی پر شده است.0x90
) و آدرس را برگردانید 0x402114
. آدرس یک عنصر گفتگو در است EQNEDT32.exe
، دستورالعمل ها را نشان می دهد RET
. این باعث می شود EIP به شروع فیلد اشاره کند نامحاوی کد پوسته
شکل 4. آغاز کد پوسته اکسپلویت
نشانی 0x45BD3C
متغیری را ذخیره می کند که تا زمانی که به یک اشاره گر به ساختار بارگذاری شده فعلی برسد، ارجاع داده نمی شود MTEFData
. بقیه shellcode اینجاست.
هدف از shellcode اجرای دومین قطعه از shellcode است که در سند باز تعبیه شده است. کد پوسته اصلی ابتدا سعی میکند با تکرار روی تمام توصیفگرهای سیستم، توصیفگر فایل سند باز را پیدا کند.NtQuerySystemInformation
با استدلال SystemExtendedHandleInformation
) و بررسی اینکه آیا مطابقت دارند یا خیر PID توصیف کننده و PID روند WinWord
و اینکه آیا سند با ماسک دسترسی باز شده است - 0x12019F
.
برای تأیید اینکه دسته صحیح پیدا شده است (و نه دستگیره یک سند باز دیگر)، محتویات فایل با استفاده از تابع نمایش داده می شود. CreateFileMapping
و کد پوسته بررسی می کند که آیا چهار بایت آخر سند مطابقت دارند یا خیر.yyyy
(روش شکار تخم مرغ). پس از یافتن یک مطابقت، سند در یک پوشه موقت کپی می شود (GetTempPath
) چگونه ole.dll
. سپس 12 بایت آخر سند خوانده می شود.
شکل 5. نشانگرهای انتهای سند
مقدار 32 بیتی بین نشانگرها AABBCCDD
и yyyy
افست پوسته کد بعدی است. با استفاده از تابع نامیده می شود CreateThread
. همان کد پوسته ای را استخراج کرد که قبلاً توسط گروه OceanLotus استفاده می شد.
در مرحله دوم
حذف کامپوننت ها
نام فایل ها و دایرکتوری ها به صورت پویا انتخاب می شوند. کد به صورت تصادفی نام فایل اجرایی یا DLL را انتخاب می کند C:Windowssystem32
. سپس از منابع خود درخواست می کند و فیلد را بازیابی می کند FileDescription
برای استفاده به عنوان نام پوشه اگر این کار نکرد، کد به صورت تصادفی یک نام پوشه را از فهرست ها انتخاب می کند %ProgramFiles%
یا C:Windows
(از GetWindowsDirectoryW). از استفاده از نامی که ممکن است با فایلهای موجود تضاد داشته باشد اجتناب میکند و تضمین میکند که حاوی کلمات زیر نباشد: windows
, Microsoft
, desktop
, system
, system32
یا syswow64
. اگر دایرکتوری از قبل وجود داشته باشد، "NLS_{6 کاراکتر}" به نام اضافه می شود.
منابع 0x102
تجزیه و تحلیل می شود و فایل ها به داخل ریخته می شوند %ProgramFiles%
یا %AppData%
، به یک پوشه به طور تصادفی انتخاب شده است. زمان ایجاد تغییر کرد تا مقادیر مشابهی داشته باشد kernel32.dll
.
به عنوان مثال، در اینجا پوشه و لیست فایل هایی است که با انتخاب فایل اجرایی ایجاد می شوند C:Windowssystem32TCPSVCS.exe
به عنوان منبع داده
شکل 6. استخراج اجزای مختلف
ساختار منابع 0x102
در یک قطره چکان بسیار پیچیده است. به طور خلاصه شامل:
- نام فایل ها
- اندازه و محتوای فایل
- فرمت فشرده سازی (COMPRESSION_FORMAT_LZNT1
، توسط تابع استفاده می شود RtlDecompressBuffer
)
فایل اول به عنوان بازنشانی می شود TCPSVCS.exe
، که مشروع است AcroTranscoder.exe
(مطابق با FileDescription
SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
ممکن است متوجه شده باشید که برخی از فایل های DLL بزرگتر از 11 مگابایت هستند. این به این دلیل است که یک بافر پیوسته بزرگ از داده های تصادفی در داخل فایل اجرایی قرار می گیرد. ممکن است این راهی برای جلوگیری از شناسایی توسط برخی محصولات امنیتی باشد.
تضمین ماندگاری
منابع 0x101
در قطره چکان شامل دو عدد صحیح 32 بیتی است که مشخص می کند چگونه پایداری باید ارائه شود. مقدار اول مشخص می کند که چگونه بدافزار بدون حقوق سرپرست باقی می ماند.
جدول 1. مکانیسم ماندگاری بدون حقوق مدیر
مقدار عدد صحیح دوم مشخص میکند که بدافزار چگونه باید در هنگام اجرا با حقوق سرپرست به ماندگاری دست یابد.
جدول 2. مکانیسم پایداری با حقوق مدیر
نام سرویس، نام فایل بدون پسوند است. نام نمایشی نام پوشه است، اما اگر از قبل وجود داشته باشد، رشته "Revision 1
” (تعداد افزایش می یابد تا زمانی که یک نام استفاده نشده پیدا شود). اپراتورها مطمئن شدند که پایداری از طریق سرویس قوی است - در صورت خرابی، سرویس باید پس از 1 ثانیه راه اندازی مجدد شود. سپس مقدار WOW64
کلید رجیستری سرویس جدید روی 4 تنظیم شده است که نشان می دهد یک سرویس 32 بیتی است.
یک کار برنامه ریزی شده از طریق چندین رابط COM ایجاد می شود: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. در اصل، بدافزار یک کار مخفی ایجاد می کند، اطلاعات حساب را همراه با اطلاعات کاربر فعلی یا مدیر تنظیم می کند و سپس ماشه را تنظیم می کند.
این یک کار روزانه با مدت زمان 24 ساعت و فواصل بین دو اجرا 10 دقیقه است، به این معنی که به طور مداوم اجرا می شود.
بیت مخرب
در مثال ما، فایل اجرایی TCPSVCS.exe
(AcroTranscoder.exe
) نرم افزار قانونی است که DLL هایی را که به همراه آن ریست شده اند بارگیری می کند. در این مورد، مورد توجه است Flash Video Extension.dll
.
عملکرد آن DLLMain
فقط تابع دیگری را فراخوانی می کند. برخی از محمولات فازی وجود دارد:
شکل 7. محمول های فازی
پس از این بررسی های گمراه کننده، کد یک بخش دریافت می کند .text
فایل TCPSVCS.exe
، دفاع خود را به PAGE_EXECUTE_READWRITE
و آن را با افزودن دستورالعمل های ساختگی بازنویسی می کند:
شکل 8. توالی دستورالعمل ها
در پایان به آدرس تابع FLVCore::Uninitialize(void)
، صادر شد Flash Video Extension.dll
، دستورالعمل اضافه شده است CALL
. این بدان معنی است که پس از بارگذاری DLL مخرب، زمانی که زمان اجرا فراخوانی می شود WinMain
в TCPSVCS.exe
، نشانگر دستورالعمل به NOP اشاره می کند و باعث می شود FLVCore::Uninitialize(void)
، مرحله بعد.
این تابع به سادگی یک mutex ایجاد می کند که با آن شروع می شود {181C8480-A975-411C-AB0A-630DB8B0A221}
پس از آن نام کاربری فعلی. سپس فایل *.db3 را که حاوی کد مستقل از موقعیت است می خواند و از آن استفاده می کند CreateThread
برای اجرای محتوا
محتویات فایل *.db3 کد پوسته ای است که گروه OceanLotus معمولاً از آن استفاده می کند. ما دوباره با موفقیت بار بار آن را با استفاده از اسکریپت شبیه ساز که منتشر کردیم، باز کردیم
فیلمنامه مرحله نهایی را استخراج می کند. این مؤلفه یک درب پشتی است که قبلاً در آن تحلیل کرده ایم {A96B020F-0000-466F-A96D-A91BBF8EAC96}
فایل باینری پیکربندی بدافزار هنوز در منبع PE رمزگذاری شده است. تقریباً همان پیکربندی را دارد، اما سرورهای C&C با سرورهای قبلی متفاوت هستند:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
تیم OceanLotus دوباره ترکیبی از تکنیک های مختلف را برای جلوگیری از شناسایی نشان می دهد. آنها با یک نمودار "تصفیه شده" از روند عفونت بازگشتند. با انتخاب نامهای تصادفی و پر کردن فایلهای اجرایی با دادههای تصادفی، تعداد IoCهای قابل اعتماد (براساس هشها و نام فایلها) را کاهش میدهند. علاوه بر این، به لطف استفاده از بارگذاری DLL شخص ثالث، مهاجمان فقط باید باینری قانونی را حذف کنند. AcroTranscoder
.
بایگانی های خود استخراج
پس از فایلهای RTF، گروه به آرشیوهای خود استخراجی (SFX) با نمادهای سند رایج رفت تا کاربر را بیشتر گیج کند. Threatbook در این مورد نوشته است ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. از اواسط ژانویه 2019، OceanLotus از این تکنیک استفاده مجدد کرده است، اما برخی از تنظیمات را در طول زمان تغییر داده است. در این بخش در مورد تکنیک و تغییرات صحبت خواهیم کرد.
ایجاد یک فریب
سند THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) اولین بار در سال 2018 یافت شد. این فایل SFX عاقلانه ایجاد شده است - در توضیحات (اطلاعات نسخه) می گوید این یک تصویر JPEG است. اسکریپت SFX به شکل زیر است:
شکل 9. دستورات SFX
بدافزار بازنشانی می شود {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
) و همچنین یک عکس 2018 thich thong lac.jpg.
تصویر فریب به این صورت است:
شکل 10. تصویر طعمه
ممکن است متوجه شده باشید که دو خط اول در اسکریپت SFX دو بار فایل OCX را فراخوانی می کند، اما این یک خطا نیست.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
جریان کنترل یک فایل OCX بسیار شبیه به سایر اجزای OceanLotus است - بسیاری از توالی دستورات JZ/JNZ
и PUSH/RET
متناوب با کد زباله.
شکل 11. کد مبهم
پس از فیلتر کردن کدهای ناخواسته، صادر کنید DllRegisterServer
، تماس گرفت regsvr32.exe
، به شرح زیر است:
شکل 12. کد نصب کننده اصلی
اصولاً در اولین تماس DllRegisterServer
صادرات مقدار رجیستری را تنظیم می کند HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
برای افست رمزگذاری شده در DLL (0x10001DE0
).
هنگامی که تابع برای بار دوم فراخوانی می شود، همان مقدار را می خواند و در آن آدرس اجرا می شود. از اینجا منبع و بسیاری از اقدامات در RAM خوانده و اجرا می شود.
کد پوسته همان لودر پلی اتیلن است که در کمپین های قبلی OceanLotus استفاده می شد. با استفاده از آن می توان آن را شبیه سازی کرد db293b825dcc419ba7dc2c49fa2757ee.dll
، آن را در حافظه بارگذاری کرده و اجرا می کند DllEntry
.
DLL محتویات منبع خود را استخراج می کند، (AES-256-CBC) را رمزگشایی می کند و (LZMA) آن را از حالت فشرده خارج می کند. منبع دارای فرمت خاصی است که به راحتی قابل کامپایل کردن است.
شکل 13. ساختار پیکربندی نصب کننده (KaitaiStruct Visualizer)
پیکربندی به صراحت مشخص شده است - بسته به سطح امتیاز، داده های باینری در آن نوشته می شود %appdata%IntellogsBackgroundUploadTask.cpl
یا %windir%System32BackgroundUploadTask.cpl
(یا SysWOW64
برای سیستم های 64 بیتی).
ماندگاری بیشتر با ایجاد یک کار با نام تضمین می شود BackgroundUploadTask[junk].job
جایی که [junk]
مجموعه ای از بایت ها را نشان می دهد 0x9D
и 0xA0
.
نام برنامه کار %windir%System32control.exe
، و مقدار پارامتر مسیر فایل باینری دانلود شده است. وظیفه پنهان هر روز اجرا می شود.
از نظر ساختاری، یک فایل CPL یک DLL با نام داخلی است ac8e06de0a6c4483af9837d96504127e.dll
، که یک تابع را صادر می کند CPlApplet
. این فایل تنها منبع خود را رمزگشایی می کند {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
، سپس این DLL را بارگیری می کند و تنها صادرات آن را فراخوانی می کند DllEntry
.
فایل پیکربندی Backdoor
پیکربندی درب پشتی رمزگذاری شده و در منابع آن جاسازی شده است. ساختار فایل پیکربندی بسیار شبیه به فایل قبلی است.
شکل 14. ساختار پیکربندی درب پشتی (KaitaiStruct Visualizer)
اگرچه ساختار مشابه است، بسیاری از مقادیر فیلد از مقادیر نشان داده شده در به روز شده اند
اولین عنصر آرایه باینری حاوی یک DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
تحقیقات تکمیلی
در حین جمع آوری نمونه ها متوجه برخی ویژگی ها شدیم. نمونه ای که به تازگی توضیح داده شد در حدود ژوئیه 2018 ظاهر شد و نمونه های مشابه آن اخیراً در اواسط ژانویه تا اوایل فوریه 2019 ظاهر شدند. بایگانی SFX به عنوان یک بردار عفونت، حذف یک سند فریبنده قانونی و یک فایل مخرب OSX استفاده شد.
حتی اگر OceanLotus از مهرهای زمانی جعلی استفاده می کند، ما متوجه شدیم که مهر زمانی فایل های SFX و OCX همیشه یکسان است (0x57B0C36A
(08/14/2016 @ 7:15 UTC) و 0x498BE80F
(به ترتیب 02/06/2009 @ 7:34 صبح UTC)). این احتمالاً نشان میدهد که نویسندگان نوعی «طراح» دارند که از همان الگوها استفاده میکند و به سادگی برخی ویژگیها را تغییر میدهد.
در میان اسنادی که از ابتدای سال 2018 مطالعه کردهایم، اسامی مختلفی وجود دارد که کشورهای مورد علاقه مهاجمان را نشان میدهد:
— اطلاعات تماس جدید رسانه کامبوج (New).xls.exe
— 李建香 (个人简历).exe (سند پی دی اف جعلی یک CV)
- بازخورد، رالی در ایالات متحده آمریکا از 28-29 ژوئیه، 2018.exe
از آنجایی که درب پشتی کشف شد {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
و با انتشار تجزیه و تحلیل آن توسط چندین محقق، تغییراتی را در داده های پیکربندی بدافزار مشاهده کردیم.
ابتدا، نویسندگان شروع به حذف نام ها از DLL های کمکی کردند (DNSprov.dll
و دو نسخه HttpProv.dll
). سپس اپراتورها بسته بندی DLL سوم (نسخه دوم) را متوقف کردند HttpProv.dll
) تنها یکی را انتخاب کنید.
ثانیاً، بسیاری از فیلدهای پیکربندی درب پشتی تغییر کردند، که احتمالاً با در دسترس قرار گرفتن بسیاری از IoCها، از شناسایی فرار میکنند. فیلدهای مهم اصلاح شده توسط نویسندگان عبارتند از:
- کلید رجیستری AppX تغییر کرد (به IoCها مراجعه کنید)
- رشته رمزگذاری mutex ("def"، "abc"، "ghi")
- شماره پورت
در نهایت، تمام نسخههای جدید تحلیلشده دارای C&Cهای جدید هستند که در بخش IoCs فهرست شدهاند.
یافته ها
OceanLotus به توسعه خود ادامه می دهد. تمرکز گروه سایبری بر پالایش و گسترش ابزار و فریب است. نویسندگان بارهای مخرب را با استفاده از اسناد جلب توجه که موضوع آنها مربوط به قربانیان مورد نظر است، پنهان می کنند. آنها طرح های جدیدی را توسعه می دهند و همچنین از ابزارهای در دسترس عموم مانند بهره برداری Equation Editor استفاده می کنند. علاوه بر این، آنها در حال بهبود ابزارهایی برای کاهش تعداد مصنوعات باقی مانده در دستگاه های قربانیان هستند و در نتیجه شانس شناسایی توسط نرم افزار آنتی ویروس را کاهش می دهند.
شاخص های سازش
شاخص های سازش و همچنین ویژگی های MITER ATT&CK در دسترس هستند
منبع: www.habr.com