أدوات المطور · التشفير ووحدة فك التشفير Base64
كيفية فك تشفير أمر Base64 PowerShell المشبوه دون تشغيله
· لماذا يهم
base64 حماية
يستخدم المهاجمون Base64 لإخفاء البرامج النصية من التفتيش العرضي. يوضح هذا المنشور كيفية فك تشفير حمولة -EncodedCommand دون تنفيذها، ولماذا قد يبدو الإخراج غريبًا في وحدة فك ترميز UTF-8، وما الذي يجب البحث عنه.
المهمة المجدولة باستخدام وسيطة مكونة من 2,000 - حيث تظهر الأوامر المشفرة وسبب اعتبارها علامة حمراء
يكتشف مسؤول النظام مهمة مجدولة تحتوي على وسيطة 2,000 مكونة من أحرف -EncodedCommand تبدو مريبة. تعمل المهمة ضمن حساب خدمة بامتيازات عالية.
يعد إغراء لصق الأمر في PowerShell وتشغيله لمعرفة ما يفعله أمرًا خطيرًا؛ إذا كان الأمر ضارًا، فإن تنفيذه يعرض النظام للخطر. الطريقة الأكثر أمانًا هي فك تشفير Base64 محليًا وقراءة الإخراج كنص قبل تحديد ما إذا كان سيتم تشغيل أي شيء أم لا. يشرح هذا المنشور كيفية فك تشفير أوامر PowerShell بأمان دون تنفيذها، ولماذا قد تبدو المخرجات مشوهة في وحدة فك الترميز القياسية UTF-8، وما الذي يجب البحث عنه لتقييم ما إذا كان الأمر آمنًا أو مشبوهًا.
فك التشفير، لا تنفذ أبدًا - القاعدة التي تحافظ على أمان التحليل، ولماذا تعتبر وحدة فك التشفير للمتصفح فقط مناسبة تمامًا
الفكرة الأساسية هي أن PowerShell يستخدم ترميز UTF-16LE لـ -EncodedCommand، وليس UTF-8، لذا فإن كل بايت آخر هو صفر تفسره الأدوات القياسية على أنها نهايات فارغة. قاعدة تحليل أي تعليمات برمجية مشبوهة بسيطة: فك التشفير، لا تنفذ أبدًا. ينطبق هذا على الأوامر المشفرة بـ Base64 والبرامج النصية المضغوطة والبرامج النصية من مصادر غير موثوقة وأي شيء في سلسلة من التشفير غير المألوف. تنفيذ البرنامج النصي هو نقطة اللاعودة؛ بمجرد تشغيله، حدثت تغييرات في النظام، وتم منح الوصول وتمت تصفية البيانات.
يتيح لك فك تشفير البرنامج النصي وقراءته كنص تقييمه قبل الخطوة التي لا رجعة فيها. القاعدة الثانية هي استخدام أداة يتم تشغيلها محليًا ولا تقدم أي طلبات للشبكة. تعتبر وحدة فك التشفير المستندة إلى المتصفح مثالية لأنها محمولة ولا تتطلب برامج إضافية وتحتفظ بالحمولة المشبوهة على جهازك دون تحميلها على أي خادم. إذا كانت الأداة من النوع الذي يقوم بالنشر إلى خدمة وحدة فك ترميز عن بعد، فلا تستخدمها؛ ثم تتعرض الحمولة لتلك الخدمة. تقبل معلمة PowerShell -EncodedCommand سلسلة Base64 التي تحتوي، عند فك تشفيرها، على برنامج PowerShell النصي.
لماذا تبدو وحدات البايت التي تم فك تشفيرها مختلفة عن نص UTF-8 - قم بفحص نمط البايت UTF-16LE بالشكل السداسي بدلاً من مطالبة أداة النص UTF-8 بتفسيره
ومع ذلك، لا يستخدم PowerShell ترميز UTF-8 لهذا الغرض؛ فهو يستخدم UTF-16LE (النهاية الصغيرة UTF-16). في UTF-16، يتم تمثيل كل حرف ASCII كبايتين: رمز الحرف متبوعًا بصفر بايت. الحرف A هو 41 00 بالنظام الست عشري. الحرف B هو 42 00. تظهر سلسلة مثل Hello كـ 48 00 65 00 6C 00 6C 00 6F 00 في UTF-16LE بايت. عندما يكون هذا مشفرًا بـ Base64، فإن النتيجة تحتوي على النموذج المشفر لكل تلك البايتات، بما في ذلك كافة الأصفار. يؤدي فك التشفير باستخدام وحدة فك الترميز القياسية UTF-8 إلى إنشاء نص مشوه أو اقتطاعه عند البايت الصفري الأول لأن UTF-8 يعامل البايتات الخالية كوحدات إنهاء سلسلة.
يبدو الإخراج مثل H e l o بدلاً من Hello، مع وجود أحرف تبدو عشوائية أو نص مفقود. مثال عملي يوضح المشكلة والحل. لنفترض أن أمر PowerShell يقوم بترميز السلسلة البسيطة Write-Host Hello. يقوم PowerShell UTF-16LE بترميز هذا إلى وحدات البايت بما في ذلك جميع الأصفار، بينما يقوم Base64 بترميز البايتات وينتج سلسلة طويلة مثل VwByAGkAdABlAC0ASwBvAHMAaAAgACIASABlAGwAbABvACIA. انسخ هذه السلسلة إلى برنامج التشفير ووحدة فك التشفير Base64 في متصفحك وانقر فوق فك التشفير. سيحاول برنامج فك التشفير الافتراضي تفسير النتيجة كنص UTF-8 وإنتاج مخرجات تالفة أو مقطوعة بسبب الأصفار المضمنة.
مثال عملي: فك تشفير أمر مشفر غير ضار - قراءة النص بعد البايتات الصفرية المتداخلة
الحل هو استخدام العرض السداسي بدلاً من ذلك. قم بالتبديل إلى العرض السداسي وسترى البايتات: 57 00 72 00 69 00 74 00 65 00 2D 00 4B 00 6F 00 73 00 68 00 20 00 22 00 48 00 65 00 6C 00 6C 00 6F 00 22 00. قراءة تلك البايتات كـ UTF-16LE أزواج تنتج W-r-i-t-e---K-o-s-h---H-e-l-l-o-. من خلال الخبرة، يمكنك قراءة UTF-16LE سداسي عشري مباشرةً، أو يمكنك كتابة البايتات إلى ملف وفك تشفيرها باستخدام برنامج PowerShell أو Python النصي الذي يعمل محليًا.
يتمثل النهج العملي في ملاحظة النمط وتذكر أن PowerShell يستخدم UTF-16LE. عندما تقوم بفك تشفير PowerShell -EncodedCommand في المتصفح ويبدو الإخراج خاطئًا، انظر إلى العرض السداسي بدلاً من عرض النص. يُظهر العرض السداسي كل بايت على حدة. يظهر كل حرف ASCII على هيئة بايتتين بينهما صفر. إذا كانت وحدات البايت توضح أوامر ضارة مثل New-AdminAccount، أو عمليات البحث العكسي لنظام أسماء النطاقات، أو تصدير بيانات اعتماد الأمان، فهذا يعني أن الأمر مريب. إذا كانت البايتات توضح شيئًا غير ضار مثل قائمة الدليل أو برنامج نصي بسيط، فمن المحتمل أن يكون الأمر حميدًا.
التشفير والضغط المتداخلان - Base64 داخل Base64، وتدفقات gzip التي لا يمكنك قراءتها كنص
من الصعب قراءة العرض السداسي أكثر من قراءة النص العادي، ولكنه أكثر أمانًا من التخمين من مخرجات UTF-8 التالفة. يضيف التشفير والضغط المتداخلان تعقيدًا إلى تحليل البرامج الضارة. قد يقوم أمر PowerShell بترميز Base64 لسلسلة Base64 أخرى، أو ضغط برنامج نصي باستخدام gzip ثم يقوم Base64 بتشفير النتيجة. في سيناريو متداخل، تقوم بفك تشفير Base64 الخارجي، وتقرأ النتيجة وتكتشف أنه هو نفسه base64. قم بفك تشفير ذلك أيضًا واستمر حتى تجد نصًا قابلاً للقراءة أو تنسيقًا ثنائيًا لا يمكنك تفسيره. يبدأ Gzip وتنسيقات الضغط الأخرى بالبايتات السحرية (1F 8B لـ gzip) المرئية في العرض السداسي.
إذا قمت بفك تشفير Base64 وبدأ العرض السداسي بـ 1F 8B، فإن البايتات عبارة عن دفق مضغوط يتطلب إلغاء الضغط. يُظهر لك برنامج التشفير ووحدة فك التشفير Base64 الشكل السداسي، مما يساعدك على تحديد هذه الأنماط دون تنفيذ أي شيء. تعتبر الحمولات المضغوطة أو المشفرة بشكل إضافي مشبوهة لأنها تضيف طبقات تشويش.
ما يجب تسجيله في تقرير الحادث - النص الذي تم فك تشفيره، والمصدر، والتجزئة بدلاً من الحمولة نفسها
نادرًا ما تتطلب الأوامر المشروعة خطوات ترميز متعددة. يتطلب تسجيل النتائج لتقرير الحادث الانضباط والدقة. قم بتدوين سلسلة Base64 التي قمت بتحليلها بالضبط، وأين وجدتها ومتى. إذا قمت بفك تشفيره ووجدت أوامر مشبوهة، فقم بوصف الأوامر ولكن لا تقم بتضمين النص الكامل في التقرير بعد؛ قد يكون النص معقدًا أو طويلًا.
قم بتضمين علامة التجزئة (SHA-256) للبرنامج النصي الذي تم فك تشفيره حتى يمكن التحقق من النتيجة وتتبعها. إذا كان الأمر ضارًا بشكل واضح أو يستخدم تقنيات استغلال معروفة، فقم بإشراك فرق الاستجابة للحوادث والأمن قبل اتخاذ أي إجراء. لا تقم أبدًا بتنفيذ الأمر بنفسك لترى ماذا يفعل. إذا احتاج المستجيبون للحوادث إلى تنفيذ ذلك للاختبار، فإنهم يفعلون ذلك في بيئة معزولة حيث يتم احتواء أي ضرر. مهمتك هي فك تشفير وتقييم المخاطر على مسافة آمنة. لا تغطي هذه المقالة النطاق الكامل لتحليل البرامج الضارة أو بيئات وضع الحماية أو إسناد الهجوم.
ما لا يغطيه هذا هو تنفيذ وضع الحماية وأدوات تحليل البرامج الضارة والإسناد
هذه موضوعات لمحترفي الأمن وفرق الاستجابة للحوادث. يركز النطاق هنا بشكل ضيق على فك تشفير أمر PowerShell المشفر بشكل آمن دون تنفيذه، حتى تتمكن من قراءة البرنامج النصي وتقييم ما إذا كان الأمر يستحق المزيد من التحقيق. تشفير Base64 هو تشويش وليس حماية. يمكن لأي شخص لديه التشفير ووحدة فك التشفير استخراج البرنامج النصي. يستخدم المهاجمون Base64 للتهرب من الاكتشاف الأساسي ولمنع التفتيش العرضي، وليس لإخفاء نواياهم من التحليل. يعد أمر PowerShell الذي تم فك تشفيره والذي يقوم بإحضار برنامج نصي عن بعد وتنفيذه ضارًا سواء قمت بفك تشفيره بنفسك أو قامت أداة أمان بذلك.
الخطوة العملية التالية بعد فك تشفير أمر مشبوه هي إبلاغ الفريق المناسب به. إذا كان النظام خاصًا بك، فحدد ما إذا تم إنشاء المهمة عن قصد ومن قام بذلك. تحقق من تاريخ الإنشاء والحساب الذي قام بجدولته. إذا كانت المهمة غير مصرح بها، فقم بتعطيلها، واحتفظ بتفاصيل الطب الشرعي وتحقق من كيفية حصول المهاجم على امتياز إنشائها. إذا كان الأمر يحتوي على طلبات شبكة أو آليات استمرارية مثل تغييرات التسجيل أو إنشاء مهمة مجدولة، فمن المؤكد تقريبًا أنه ضار.
الوجبات الجاهزة: Base64 عبارة عن تشويش، وليس حماية - كيف يقوم برنامج التشفير ووحدة فك التشفير Base64 بفك تشفير الحمولة محليًا دون أن تترك جهازك أبدًا
إذا كان يؤدي وظائف إدارية شرعية وكانت تفاصيل الإنشاء عادية، فقد يكون نصًا إداريًا شرعيًا تم ترميزه لأسباب تتعلق بسياسة الأمان أو التكامل مع أداة أتمتة أكبر. لا تنفذه في كلتا الحالتين؛ دع تقييمك للنص الذي تم فك تشفيره يبلغ قرارك. يتبع فك التشفير الآمن لأوامر Base64 PowerShell المشبوهة عملية مباشرة. استخدم برنامج التشفير ووحدة فك التشفير Base64 لفك تشفير السلسلة دون تحميلها أو تنفيذ أي شيء. انظر إلى العرض السداسي لفهم ما تمثله البايتات.
إذا رأيت أنماط UTF-16LE (صفر بايت متداخل) فتذكر أن PowerShell يستخدم UTF-16LE واقرأ وفقًا لذلك. حدد أي أنماط مشبوهة مثل طلبات الشبكة أو رفع الامتيازات أو آليات الثبات. قم بتسجيل التفاصيل بدقة لتقرير الحادث الخاص بك، بما في ذلك سلسلة Base64 الأصلية وتجزئتها. لا تنفذ الأمر بنفسك أبدًا؛ اترك ذلك للمستجيبين للحوادث في بيئة خاضعة للرقابة. ثق بفك التشفير المحلي الخاص بك وتقييمك للنص العادي، ودع ذلك يرشدك إلى الإجراء التالي.