فشل الإقبال: نأتي AgentTesla لتنظيف المياه. الجزء 3



مع هذه المقالة ، نكمل سلسلة من المنشورات المخصصة لتحليل البرامج الضارة. في الجزء الأول ، أجرينا تحليلًا تفصيليًا للملف المصاب الذي تم استلامه عن طريق البريد بواسطة شركة أوروبية ووجدنا برنامج التجسس AgentTesla هناك. الجزء الثاني وصف نتائج تحليل تدريجي لوحدة AgentTesla الرئيسية.

اليوم ، سيتحدث إيليا بوميرانتسيف ، أخصائي تحليل البرامج الضارة CERT Group-IB ، عن المرحلة الأولى من تحليل البرامج الضارة - التفريغ شبه التلقائي لعينات AgentTesla باستخدام ثلاث حالات صغيرة من ممارسة خبراء CERT Group-IB.

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

رقم العينة 1


الملف المصدر هو مستند MS Word يستغل مشكلة عدم الحصانة CVE-2017-11882.


نتيجة لذلك ، يتم تحميل الحمولة وإطلاقها.

يُظهر تحليل شجرة العملية وعلامات السلوك حقنة في عملية RegAsm.exe .



تتوفر علامات سلوكية خاصة بـ AgentTesla.


العينة التي تم تنزيلها هي ملف .NET قابل للتنفيذ محمي بواسطة واقي .NET Reactor .


افتحه في أداة dnSpy x86 وانتقل إلى نقطة الدخول.


بالانتقال إلى وظيفة DateTimeOffset ، نجد رمز التهيئة لوحدة .NET الجديدة. ضع نقطة توقف على الخط الذي يهمنا وقم بتشغيل الملف.


في أحد المخازن المؤقتة التي تم إرجاعها ، يمكنك مشاهدة توقيع MZ ( 0x4D 0x5A ). احفظه.


الملف القابل للتنفيذ الذي تم إلقاؤه هو مكتبة ديناميكية ، وهي أداة تحميل ، أي استخراج الحمولة من قسم الموارد وإطلاقها.


في الوقت نفسه ، لا تتوفر الموارد اللازمة نفسها في التفريغ. هم في العينة الأم.

تحتوي الأداة المساعدة dnSpy على ميزتين مفيدتين للغاية والتي ستساعدنا على إنشاء Frankenstein بسرعة من ملفين مرتبطين.

  1. الأول يتيح لك "لصق" مكتبة ديناميكية في العينة الأصل.

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


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

التفريغ الثاني هو ملف قابل للتنفيذ مكتوب في VB.NET محمي بواسطة حامية ConfuserEx التي نعرفها .



بعد إزالة المداس ، نستخدم قواعد YARA المكتوبة مسبقًا ونتأكد من أن البرامج الضارة التي لم يتم فكها هي بالفعل AgentTesla.



رقم العينة 2


الملف المصدر هو مستند MS Excel. يؤدي الماكرو المضمّن إلى تنفيذ تعليمات برمجية ضارة.


نتيجة لذلك ، يتم إطلاق البرنامج النصي PowerShell.



يقوم البرنامج النصي بفك تشفير الكود الموجود في C # وينقل التحكم فيه. الكود نفسه عبارة عن محمل ، والذي يظهر أيضًا في تقرير صندوق الحماية.



الحمولة هي ملف .NET قابل للتنفيذ.


عن طريق فتح الملف في dnSpy x86 ، يمكنك أن ترى أنه غامض . إزالة التشويش مع الأداة المساعدة de4dot والعودة إلى التحليل.

أثناء البحث عن الكود ، يمكنك اكتشاف الوظيفة التالية:


إن EntryPoint و Invoke السلاسل المشفرة ملفتة للنظر . نضع نقطة توقف على السطر الأول ، ونبدأ ونحفظ قيمة المخزن المؤقت byte_0 .

تفريغ هو مرة أخرى تطبيق .NET ومحمي بواسطة ConfuserEx .



إزالة التشويش مع de4dot وتحميل في dnSpy . نحن نفهم من وصف الملف الذي واجهناه محمل CyaX-Sharp .


يحتوي أداة تحميل التشغيل هذه على وظائف شاملة لمكافحة التحليل.


تتضمن هذه الوظيفة تجاوز أنظمة حماية Windows المضمنة ، وتعطيل Windows Defender ، بالإضافة إلى آليات لاكتشاف صناديق الحماية والأجهزة الظاهرية. من الممكن تحميل الحمولة النافعة من الشبكة أو تخزينها في قسم الموارد. يتم تنفيذ الإطلاق من خلال الحقن في العملية الخاصة أو في نسخة مكررة من العملية الخاصة أو في العمليات MSBuild.exe و vbc.exe و RegSvcs.exe ، اعتمادًا على المعلمة التي اختارها المهاجم.

ومع ذلك ، فهي بالنسبة لنا أقل أهمية من وظيفة AntiDump التي أضافها ConfuserEx . ويمكن الاطلاع على شفرة المصدر على جيثب .

لتعطيل الحماية ، استخدم ميزة dnSpy ، التي تسمح لك بتحرير كود IL .



نحفظ ونضع نقطة توقف على خط الاتصال لوظيفة فك تشفير الحمولة النافعة. هو في منشئ الطبقة الرئيسية.


إطلاق وتفريغ الحمولة. باستخدام قواعد YARA المكتوبة مسبقًا ، نتأكد من أن لدينا AgentTesla.



رقم العينة 3


الملف المصدر هو ملف قابل للتنفيذ VB PE32 الأصلي .


يوضح تحليل الكون وجود جزء كبير من البيانات المشفرة.


عند تحليل نموذج الطلب في VB Decompiler ، قد تلاحظ خلفية بكسل غريبة.



تتشابه مؤامرة إنتروبيا لصورة bmp مع مؤامرة إنتروبيا للملف المصدر ، والحجم 85٪ من حجم الملف.


يشير العرض العام للصورة إلى استخدام إخفاء المعلومات.

دعونا نلقي نظرة على مظهر شجرة العملية ، وكذلك لوجود علامة حقن.



هذا يشير إلى تفريغ. بالنسبة إلى برامج التحميل على Visual Basic (المعروف أيضًا باسم VBKrypt أو VBInjector ) ، من المعتاد استخدام كود القشرة لتهيئة الحمولة ، وكذلك لتنفيذ الحقن نفسه.

كشف التحليل في VB Decompiler عن وجود الحدث Load في النموذج FegatassocAirballoon2 .


دعنا نذهب إلى IDA pro على العنوان المحدد ودراسة الوظيفة. رمز غامض للغاية. تم عرض الجزء الذي يهمنا أدناه.


هذا هو المكان الذي يتم فيه تفحص مساحة العنوان للعملية للتوقيعات. هذا النهج مشكوك فيه للغاية.

أولاً ، عنوان بدء الفحص هو 0x400100 . هذه القيمة ثابتة ولا يتم ضبطها عند إزاحة القاعدة. في ظروف الاحتباس الحراري المثالية ، سوف يشير إلى نهاية رأس PE للملف القابل للتنفيذ. ومع ذلك ، فإن قاعدة البيانات ليست ثابتة ، يمكن أن تتغير قيمتها ، ويمكن أن يستغرق البحث عن العنوان الحقيقي للتوقيع المرغوب ، على الرغم من أنه لا يتسبب في تجاوز المتغير ، وقتًا طويلاً للغاية.

ثانياً ، قيمة توقيع iWGK . أعتقد أنه من الواضح أن 4 بايت صغير جدًا بحيث لا يضمن التفرد. وإذا أخذت في الاعتبار النقطة الأولى ، فإن احتمال ارتكاب خطأ كبير للغاية.

في الواقع ، يتم إرفاق الجزء المطلوب بنهاية صورة bmp الموجودة مسبقًا عند الإزاحة 0xA1D0D .


يعمل Shellcode على مرحلتين. أول فك تشفير الجسم الرئيسي. في هذه الحالة ، يتم تحديد المفتاح عن طريق البحث الشامل.


تفريغ Shellcode مشفرة وإلقاء نظرة على الخطوط.

أولاً ، نحن نعرف الآن وظيفة إنشاء عملية تابعة: CreateProcessInternalW .


ثانيا ، أصبحنا ندرك آلية الدمج في النظام.


العودة إلى العملية الأصلية. تعيين نقطة توقف إلى CreateProcessInternalW ومتابعة التنفيذ. بعد ذلك ، نلاحظ الحزمة NtGetContextThread / NtSetContextThread ، والتي تغير عنوان بدء التنفيذ إلى عنوان ShellCode .


نحن نتصل بالعملية التي أنشأها مصحح الأخطاء ، وننشط حدث Suspend on libraryu load / unload ، ونستأنف العملية وننتظر تحميل مكتبات .NET .

بعد ذلك ، باستخدام ProcessHucker ، نقوم بتفريغ المناطق التي تحتوي على تطبيق .NET تم فك حزمه.

نوقف جميع العمليات ونحذف نسخة من البرامج الضارة التي يتم إصلاحها في النظام.



يتم حماية ملف التفريغ بواسطة واقي .NET Reactor ، والذي يمكن إزالته بسهولة باستخدام الأداة المساعدة de4dot .


باستخدام قواعد YARA المكتوبة مسبقًا ، نتأكد من أن لدينا AgentTesla أمامنا.

لتلخيص


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

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

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

إذا كنت تريد أن تدرس مرة أخرى كيف يتم تفريغ عينات AgentTesla وترى كيف يقوم اختصاصي CERT Group-IB بذلك ، يمكنك تنزيل تسجيل الويبينار حول هذا الموضوع هنا .

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


All Articles