قصة كيف اندلعت غلاية Autoplay Media Studio 8.5.3.0

صورة

بما أنه ليس من الصعب التكهن ، فإن إبريق الشاي هو أنا.

في اليوم الآخر كنت أرغب في البحث عن مصدر أداة مساعدة واحدة ، من الواضح أنها صنعت باستخدام أدوات AMS (ملف .cdd بجوار .exe واثنين من lua * .dll). قبل عامين ، قمت بتحليل تفصيلي لبرنامج واحد تم إنشاؤه بوسائل مشابهة وفكرة حزم .cdd ، وهو أرشيف مضغوط منتظم بكلمة مرور ، متاح. حسنًا ، دون تردد ، دفعت AMSUnpacker وتلقيت خطأً في التفريغ. حسنًا ، منذ هذه اللحظة بدأ المرح ...

كان أول ما حدث بالنسبة لي هو أن الملف كان ممتلئًا بشيء آخر غير UPX (الذي قمت بتفكيكه بشكل طبيعي). حسنًا ، لم أقم بالتحقق من ذلك (DIE و Exeinfo PE و Nauz File Detector) والجميع يقنعني أنه لا ، إنه غير مكتظ. حسنًا ، أعتقد أنني سأقارن .exe banal باستخدام Total Commander مع البرنامج الذي تم فك حزمه مسبقًا وهذا البرنامج ، واتضح أن .exe مختلف تمامًا (اعتدت على مقارنة البرامج الأخرى على AMS وكان الفرق فقط في بايت واحد ، في الواقع ، في كلمة مرور مكتوبة بنص عادي فقط في .exe نفسها وفي جزء الموارد). أصبح من الواضح أن هذا هو إما نوع من التعديل ومجرد إصدار جديد من AMS. لقد كنت أؤمن بهذا الأخير بصعوبة ، مع العلم (جيدًا ، لقد اعتقدت في البداية أنني أعرف) أن المطورين قد تغلبوا على البرنامج لفترة طويلة ، لكنهم لم يبدأوا في التحقق مما إذا كان هذا أم لا ، وأنه بالكاد قد أعطى أي شيء.

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

صورة
(على اليسار هو الإصدار القديم ، على اليمين هو الإصدار الجديد)

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

صورة

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

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

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

صورة

استغرق الأمر الكثير من الوقت لفهم ما يجري هناك.

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

صورة

بشكل عام ، عند استبدال قيم الجدول السفلي بالقيم المقابلة من الجدول العلوي ، نحصل على مجموعة من البايتات: 7B 10 DD 5A 4D 26 72 EE B2 2A 04 2B 6E F7 14 E2 F9 14 F8 9E 8A 99 28 AE B8 4B C0 D7 AD .

ما الصفائف الفريدة الأخرى من البايت ، قبل وبعد كلمة المرور اللازمة لفك تشفير ، لم أفهم ، لكنني لم أذهب كثيرًا بالفعل. أظن أن هناك بعض اختباري ...

ومن ثم يعود الأمر لك لتحويله إلى سلسلة وفك ضغط أرشيف .cdd المحبوب بكلمة المرور هذه. كانت هناك مشكلة صغيرة تتمثل في تعذر إدخال السطر الناتج في الأرشيف عبر Ctrl + C -> Ctrl-V ، لأن الأحرف "كسر" في الحافظة (وخاصة لم الخوض في جوهر). التفريغ ممكن برمجيًا فقط. لحسن الحظ ، هناك بعض المعرفة بـ C # (المستوى الذي لا يختلف بشكل عام كثيرًا عن مستوى معرفة المصحح) وخبرة قليلة في دراسة مبدأ تشغيل AMSUnpacker الذي تم ذكره مسبقًا ، والذي تمت كتابته أيضًا في C # وليس من الصعب رؤية ما تقوم به هناك.

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

يمكنك تنزيله من هنا .

صورة

يقوم البرنامج ، على غرار AMSUnpacker المذكور سابقًا ، بإنشاء المجلد extracted_cdd بجوار .exe مع محتويات أرشيف .cdd.

بعد تفريغ ملف .cdd المطلوب بنجاح ، تعلمت أن هذا هو الإصدار "الجديد" (من نهاية 2018) AMS 8.5.3.0. وعلى الموقع الإلكتروني قرأوا عن الإصدار الجديد: الميزة: تعزيز أمان ملف بيانات الإصدار التجاري. . حسنًا ، يبدو أنه لم ينجح بشكل جيد ...

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

ملاحظة: أعرف أنه من الأسهل الحصول على الكود المصدري لبرامج lua (التي تستخدم AMS) من خلال lua * .dll المصحح ، والذي يتصفح الإنترنت و / أو الخطاف الخارجي للوظيفة lua_load () في نفس lua * .dll. هذا هو كل ما فعلت مرة واحدة. في هذه الحالة ، كان من مصلحة الرياضة البحتة معرفة كيفية الحصول على كلمة مرور ل .cdd. كما أنني أفهم جيدًا أنه من غير المحتمل أن يحتاجها أي شخص ولا يتحمل أي قيمة عملية.

أنا ربما مبالغ فيها فيما يتعلق ب "إبريق الشاي" ، لأنه هناك القليل من الخبرة في البرمجة والعكس ، ولكن هذه مجرد هواية صغيرة "لنفسي" وليس هناك الكثير من الوقت أو الرغبة في الخوض في هذا بعمق.

PPS هذا مقالتي الأولى عن حبري ، على الأرجح ، أولها من هذا النوع.

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


All Articles