ESET: New OceanLotus Cybergroup Backdoor مخططات التسليم

في منشور ما ، سوف نصف كيف استخدمت مجموعة OceanLotus cybergroup (APT32 و APT-C-00) مؤخرًا أحد الاستغلالات العامة لـ CVE-2017-11882 ، مشكلة عدم حصانة تلف الذاكرة في Microsoft Office ، وكيف توفر البرامج الضارة للمجموعة الثبات في الأنظمة المشكوك فيها دون أن تترك أي آثار . بعد ذلك ، وصفنا كيف استخدمت المجموعة ، منذ بداية عام 2019 ، محفوظات الاستخراج الذاتي لتشغيل الشفرة.

OceanLotus متخصصة في التجسس الإلكتروني ، مع الأهداف ذات الأولوية في جنوب شرق آسيا. يقوم المهاجمون بتزوير المستندات التي تجذب انتباه الضحايا المحتملين من أجل إقناعهم بأداء مستتر ، وكذلك العمل على تطوير الأدوات. تختلف الطرق المستخدمة لإنشاء الأفخاخ في هجمات مختلفة - من الملفات ذات "الامتداد المزدوج" ، والمحفوظات التي يتم استخراجها ذاتيًا ، والمستندات ذات وحدات الماكرو إلى عمليات الاستغلال المعروفة.


باستخدام استغلال في محرر المعادلات Microsoft


في منتصف عام 2018 ، أطلقت OceanLotus حملة باستخدام الضعف CVE-2017-11882. تم تحليل إحدى الوثائق الخبيثة لمجموعة cybergroup من قبل خبراء مركز 360 Threat Intelligence ( دراسة باللغة الصينية ) ، بما في ذلك وصف مفصل للاستغلال. في المنشور أدناه ، نظرة عامة على هذا المستند الضار.

المرحلة الاولى


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. شكل تسجيل FONT

من الممكن حدوث تجاوز في حقل الاسم ، لأنه لم يتم تحديد حجمه قبل النسخ. اسم طويل للغاية يؤدي إلى ثغرة أمنية. كما يتضح من محتويات ملف RTF (الإزاحة 0xC26 في الشكل 2) ، يتم تعبئة المخزن المؤقت برمز shell ، متبوعًا بأمر وهمية ( 0x90 ) وعنوان المرسل 0x402114 . العنوان عنصر حوار في EQNEDT32.exe يشير إلى عبارة RET . يؤدي هذا إلى EIP للإشارة إلى بداية حقل الاسم الذي يحتوي على كود القشرة.


الشكل 4. بداية استغلال shellcode

يخزن العنوان 0x45BD3C حتى يصل إلى مؤشر إلى بنية MTEFData المحملة حاليًا. هنا هو بقية كود القشرة.

الغرض من كود shell هو تنفيذ الجزء الثاني من كود shell المضمن في وثيقة مفتوحة. أولاً ، يحاول shellcode المصدر العثور على واصف الملف للمستند المفتوح ، NtQuerySystemInformation على جميع واصفات النظام ( NtQuerySystemInformation مع وسيطة SystemExtendedHandleInformation ) والتحقق مما إذا كانت واصف PID وعملية WinWord NtQuerySystemInformation مع PID وما إذا كان قد تم فتح المستند باستخدام قناع الوصول - 0x12019F .

لتأكيد الكشف عن واصف الصحيح (وليس واصف مستند مفتوح آخر) ، يتم عرض محتويات الملف باستخدام دالة CreateFileMapping ، والتحقق من رمز shell لمعرفة ما إذا كانت وحدات البايت الأربع الأخيرة من المستند تتوافق مع " yyyy " (طريقة صيد البيض). بمجرد العثور على تطابق ، يتم نسخ المستند إلى مجلد مؤقت ( GetTempPath ) كـ ole.dll . ثم تتم قراءة آخر 12 بايت من المستند.


الشكل 5. علامات نهاية الوثيقة

القيمة 32 بت بين علامات AABBCCDD و yyyy هي إزاحة AABBCCDD التالي. يطلق عليه باستخدام الدالة CreateThread . استخرج رمز القشرة نفسه المستخدم من قبل OceanLotus من قبل. لا يزال سيناريو محاكاة بيثون الذي أصدرناه في مارس 2018 يعمل على تفريغ المرحلة الثانية.

المرحلة الثانية


استخراج المكونات


يتم تحديد أسماء الملفات والدليل بشكل حيوي. تحديد رمز بشكل عشوائي اسم ملف قابل للتنفيذ أو DLL في C:\Windows\system32 . ثم يقدم طلبًا إلى موارده ويسترجع حقل FileDescription لاستخدامه كاسم للمجلد. إذا لم ينجح هذا ، فإن الرمز يحدد بشكل عشوائي اسم المجلد من دلائل %ProgramFiles% أو C:\Windows (من GetWindowsDirectoryW). إنه يتجنب استخدام اسم قد يتعارض مع الملفات الموجودة ، ويضمن أنه لا يحتوي على الكلمات التالية: windows أو Microsoft أو desktop أو system أو system32 أو syswow64 . إذا كان الدليل موجودًا بالفعل ، تتم إضافة "NLS_ {6 أحرف}" إلى الاسم.

0x102 تحليل المورد 0x102 ويتم تفريغ الملفات في %ProgramFiles% أو %AppData% ، إلى مجلد محدد بشكل عشوائي. تم تغيير وقت الإنشاء ليكون له نفس قيم kernel32.dll .

على سبيل المثال ، إليك مجلد وقائمة بالملفات التي تم إنشاؤها عن طريق تحديد الملف القابل للتنفيذ C:\Windows\system32\TCPSVCS.exe كمصدر للبيانات.


الشكل 6. استخراج المكونات المختلفة

بنية المورد 0x102 في القطارة معقدة للغاية. باختصار ، يحتوي على:
- أسماء الملفات
- حجم ومحتوى الملفات
- تنسيق الضغط ( COMPRESSION_FORMAT_LZNT1 المستخدمة من قبل وظيفة RtlDecompressBuffer )

تتم إعادة تعيين الملف الأول كـ TCPSVCS.exe ، وهو AcroTranscoder.exe الشرعي (وفقًا FileDescription ، SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3 ).

ربما لاحظت أن بعض ملفات DLL أكبر من 11 ميغابايت. وهذا بسبب وجود مخزن مؤقت كبير من البيانات العشوائية داخل الملف القابل للتنفيذ. من الممكن أن تكون هذه طريقة لتجنب الكشف بواسطة بعض منتجات الأمان.

ضمان استمرار


يحتوي المورد 0x101 في القطارة على عدد صحيحين 32 بت يحددان كيفية الحفاظ على الثبات. تشير قيمة الأولى إلى كيفية الحفاظ على استمرار البرامج الضارة دون حقوق المسؤول.


جدول 1. آلية الثبات بدون حقوق المسؤول

تشير قيمة العدد الصحيح الثاني إلى الطريقة التي يجب أن تضمن بها البرامج الضارة الثبات أثناء العمل كمسؤول.


جدول 2. آلية الثبات مع حقوق المسؤول

اسم الخدمة هو اسم ملف بدون امتداد ؛ اسم العرض هو اسم المجلد ، ولكن إذا كان موجودًا بالفعل ، تتم إضافة السلسلة " Revision 1 " إليه (يزيد العدد حتى يتم العثور على اسم غير مستخدم). تأكد المشغلون من أن الثبات خلال الخدمة كان مستقرًا - في حالة حدوث عطل ، يجب إعادة تشغيل الخدمة بعد ثانية واحدة. ثم ، يتم تعيين قيمة WOW64 لمفتاح تسجيل الخدمة الجديد إلى 4 ، مما يشير إلى أنها خدمة 32 بت.

يتم إنشاء المهمة المجدولة من خلال عدة واجهات COM: ITask و ITaskTrigger و ITaskTrigger و IPersistFile و ITaskScheduler . في جوهره ، يقوم البرنامج الضار بإنشاء مهمة مخفية ، ويقوم بتعيين معلومات الحساب إلى جانب معلومات حول المستخدم أو المسؤول الحالي ، ثم يقوم بتعيين المشغل.

هذه مهمة يومية مدتها 24 ساعة وفواصل زمنية بين شوطين مدة كل منهما 10 دقائق ، مما يعني أنه سيتم تنفيذها بشكل مستمر.

قليلا الخبيثة


في المثال الخاص بنا ، الملف القابل للتنفيذ TCPSVCS.exe ( AcroTranscoder.exe ) هو برنامج شرعي يقوم بتنزيل ملفات DLL التي تم إلقاؤها بها. في هذه الحالة ، يعد Flash Video Extension.dll موضع اهتمام.

دالة DLLMain به ببساطة استدعاء دالة أخرى. بعض التوقعات غامضة موجودة:


الشكل 7. يتنبأ غامض

بعد هذه الاختبارات المضللة ، تتلقى التعليمة البرمجية القسم TCPSVCS.exe ملف TCPSVCS.exe ، وتغيير حمايتها إلى TCPSVCS.exe ، مضيفة إرشادات وهمية:


الشكل 8. تسلسل التعليمات

في النهاية ، تتم إضافة تعليمة CALL إلى عنوان الدالة FLVCore::Uninitialize(void) التي يتم تصديرها بواسطة Flash Video Extension.dll . هذا يعني أنه بعد تحميل ملف DLL الضار ، عندما يستدعي وقت التشغيل WinMain في TCPSVCS.exe ، TCPSVCS.exe مؤشر التعليمات إلى NOP ، مما يؤدي إلى استدعاء FLVCore::Uninitialize(void) ، الخطوة التالية.

تقوم الوظيفة ببساطة بإنشاء مزامنة تبدأ بـ {181C8480-A975-411C-AB0A-630DB8B0A221} متبوعة باسم المستخدم الحالي. ثم تقوم بقراءة الملف الذي تم تفريغه بملحق * .db3 ، والذي يحتوي على رمز مستقل عن الموضع ، ويستخدم CreateThread لتنفيذ المحتويات.

محتويات ملف * .db3 هي كود القشرة الذي تستخدمه عادة مجموعة OceanLotus. مرة أخرى ، نجحنا في تفريغ حمولتها باستخدام البرنامج النصي للمحاكي الذي نشرناه على GitHub .

يسترد البرنامج النصي المرحلة النهائية. هذا المكون هو الباب الخلفي الذي قمنا بتحليله بالفعل في دراسة سابقة لـ OceanLotus . يمكن تحديد ذلك بواسطة GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} الملف الثنائي. لا يزال يتم تشفير تكوين البرامج الضارة في مورد PE. لديه نفس التكوين تقريبًا ، ولكن خوادم C&C مختلفة عن سابقاتها:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz


يوضح OceanLotus مرة أخرى مجموعة من التقنيات المختلفة لتجنب الاكتشاف. عادوا مع مخطط "المكرر" لعملية العدوى. عن طريق اختيار أسماء عشوائية وملء الملفات القابلة للتنفيذ ببيانات عشوائية ، فإنها تقلل من عدد نقاط Io الموثوقة (استنادًا إلى التجزئة وأسماء الملفات). علاوة على ذلك ، وبفضل استخدام تحميل DLL لجهة خارجية ، لا يحتاج المهاجمون إلا إلى إزالة AcroTranscoder الثنائي الشرعي.

المحفوظات استخراج ذاتي


بعد ملفات RTF ، تحولت المجموعة إلى أرشيفات الاستخراج الذاتي (SFX) بأيقونات مستندات شائعة لزيادة إرباك المستخدم. كتب هذا بواسطة Threatbook ( الرابط باللغة الصينية ). بعد البدء ، يتم تفريغ ملفات RAR ذات الاستخراج الذاتي ويتم تنفيذ DLL مع الملحق .ocx ، وقد تم توثيق الحمولة النهائية الخاصة بها سابقًا {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll . منذ منتصف يناير 2019 ، أعادت OceanLotus استخدام هذه التقنية ، ولكن بمرور الوقت ، تغيرت بعض التكوينات. في هذا القسم سنتحدث عن التكنولوجيا والتغييرات.

خلق الطعم


تم THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE المستند 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 يستدعي ملف OSX مرتين ، لكن هذا ليس خطأ.

{9ec60ada-a200-4159-b310-8071892ed0c3} .ocx (ShLd.dll)


يتشابه تدفق التحكم في ملف OSX مع مكونات OceanLotus الأخرى - فهناك العديد من تسلسل أوامر JZ/JNZ و PUSH/RET بالتناوب مع التعليمات البرمجية غير الهامة.


الشكل 11. رمز غامض

بعد تصفية الكود غير DllRegisterServer يبدو تصدير DllRegisterServer يطلق عليه regsvr32.exe كما يلي:


الشكل 12. رمز المثبت الأساسي

في الواقع ، في المرة الأولى التي DllRegisterServer استدعاء DllRegisterServer التصدير بتعيين قيمة التسجيل HKCU\SOFTWARE\Classes\CLSID\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model المشفرة في DLL ( 0x10001DE0 ).

عندما يتم استدعاء وظيفة للمرة الثانية ، فإنها تقرأ نفس القيمة وتعمل على هذا العنوان. من هنا ، يتم قراءة المورد وتنفيذه والعديد من الإجراءات في ذاكرة الوصول العشوائي.

رمز القشرة هو محمل PE نفسه المستخدم في حملات OceanLotus السابقة. يمكن محاكاته باستخدام برنامجنا النصي . نتيجة لذلك ، قام بتفريغ db293b825dcc419ba7dc2c49fa2757ee.dll في الذاكرة وتشغيل DllEntry .

DLL استخراج محتويات مورده ، فك تشفير (AES-256-CBC) و unpacks (LZMA) عليه. يحتوي المورد على تنسيق محدد يسهل فك ترجمته.


الشكل 13. بنية تكوين برنامج التثبيت (KaitaiStruct Visualizer)

يتم تعيين التكوين بشكل صريح - وفقًا لمستوى الامتياز ، ستتم كتابة البيانات الثنائية على %appdata%\Intel\logs\BackgroundUploadTask.cpl أو %windir%\System32\BackgroundUploadTask.cpl (أو SysWOW64 للأنظمة 64 بت).

يتم ضمان الاستمرارية من خلال إنشاء مهمة باسم BackgroundUploadTask[junk].job ، حيث [junk] عبارة عن مجموعة من البايتات 0x9D و 0xA0 .

اسم تطبيق المهمة هو %windir%\System32\control.exe ، وقيمة المعلمة هي المسار إلى الملف الثنائي الذي تم إلغاء تحميله. المهمة الخفية تعمل كل يوم.

من الناحية الهيكلية ، يكون ملف CPL عبارة عن DLL يحمل الاسم الداخلي ac8e06de0a6c4483af9837d96504127e.dll ، الذي يقوم بتصدير وظيفة CPlApplet . يقوم هذا الملف بفك تشفير {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll الوحيد {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll ، ثم تحميل DLL هذا DllEntry تصدير DllEntry الوحيد الخاص به.

ملف التكوين مستتر


تكوين الباب الخلفي مشفر ومضمّن في موارده. تشبه بنية ملف التكوين إلى حد كبير البنية السابقة.


الشكل 14. هيكل التكوين مستتر (KaitaiStruct متخيل)

على الرغم من البنية المماثلة ، تم تحديث قيم العديد من الحقول مقارنة بالبيانات الواردة في تقريرنا القديم .

يحتوي العنصر الأول للصفيف الثنائي على DLL ( HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759 ) المحدد بواسطة Tencent . ولكن نظرًا لأن اسم التصدير قد تمت إزالته من الملف الثنائي ، فلا تتطابق التجزئة.

بحث إضافي


جمع العينات ، ولفت الانتباه إلى بعض الخصائص. ظهرت العينة الموصوفة للتو في حوالي يوليو 2018 ، وآخرون أعجبوا بها مؤخرًا ، في منتصف يناير - أوائل فبراير 2019. تم استخدام أرشيف SFX كناقل للعدوى ، حيث تم إلقاء وثيقة طعم شرعية وملف OSX ضار.

على الرغم من أن OceanLotus يستخدم طوابع زمنية مزيفة ، إلا أننا لاحظنا أن الطوابع الزمنية لملفات SFX و OCX هي نفسها دائماً ( 0x57B0C36A ( 0x57B0C36A @ 7:15 مساءً بالتوقيت العالمي المنسق) و 0x498BE80F (02/06/2009 @ 7:34 بالتوقيت العالمي المنسق ) على التوالي). ربما يشير هذا إلى أن المؤلفين لديهم "مُنشئ" معين يستخدم نفس القوالب ويغير ببساطة بعض الخصائص.

من بين الوثائق التي درسناها منذ بداية عام 2018 ، هناك العديد من الأسماء التي تشير إلى البلدان التي تهم الهجوم:

- معلومات الاتصال الجديدة من Cambodia Media (جديد) .xls.exe
- 李建 香 (个人 简历) .exe (ملف pdf وهمية لسيرة ذاتية)
- ردود الفعل ، رالي في الولايات المتحدة الأمريكية من 28-29 يوليو ، 2018.exe

منذ اكتشاف الباب الخلفي {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll ونشر تحليله من قبل العديد من الباحثين ، لاحظنا بعض التغييرات في بيانات تكوين البرامج الضارة.

أولاً ، بدأ المؤلفون في إزالة الأسماء من DLL DLL المساعدة ( DNSprov.dll من HttpProv.dll ). ثم توقف المشغلون عن حزم ملف DLL الثالث (الإصدار الثاني من HttpProv.dll ) ، واختيار تضمين واحد فقط.

ثانياً ، تم تغيير العديد من حقول التكوين مستتر ، ربما لتجنب الكشف ، كما أصبح العديد من IoCs المتاحة. من بين المجالات المهمة التي عدّلها المؤلفون ما يلي:

  • تم تغيير مفتاح التسجيل AppX (انظر IoCs)
  • سلسلة ترميز mutex ("def" ، "abc" ، "ghi")
  • رقم المنفذ

أخيرًا ، في جميع الإصدارات الجديدة التي تم تحليلها ، يتم سرد C & Cs جديدة في قسم IoCs.

النتائج


يستمر OceanLotus في التطور. تركز cybergroup على صقل وتوسيع الأدوات والسحر. يخفي المؤلفون الحمولات الخبيثة بمساعدة مستندات جذب الانتباه ذات الصلة بالضحايا المزعومين. يطورون تصميمات جديدة ويستخدمون أيضًا الأدوات المتاحة للجمهور ، مثل استغلال محرر المعادلات. علاوة على ذلك ، فهي تعمل على تحسين الأدوات اللازمة لتقليل عدد القطع الأثرية المتبقية على الأجهزة الضحية ، وبالتالي تقليل فرصة الكشف بواسطة برنامج مكافحة الفيروسات.

مؤشرات التسوية


تتوفر مؤشرات التسوية بالإضافة إلى سمات MITER ATT & CK على Welivesecurity وعلى GitHub .

Source: https://habr.com/ru/post/ar446604/


All Articles