العربية  

books encoding shell code

If you do not find what you're looking for, you can use more accurate words.

View more

ترميز كود القشرة (Info)


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

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

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

ترميز النسبة المئوية

تعمل الهجمات التي تستهدف المتصفحات في العادة على ترميز كود القشرة في سلسلة JavaScript باستخدام ترميز النسبة المئويةأو ترميز "/uXXX" أو ترميز الكيان. وتقوم بعض الهجمات كذلك بالتشويش على سلسلة كود القشرة الذي تم ترميزه للحيلولة دون اكتشافه من قبل نظام اكتشاف التطفل IDS. على سبيل المثال، في الهيكل أي إيه-32، إليك الصورة التي ستبدو عليها تعليمات NOP (بدون تشغيل)، حيث لا يتم ترميزها أولاً:

90 NOP 90 NOP

ثم يتم بعد ذلك ترميزها إلى سلسلة تستخدم ترميز النسبة المئوية (باستخدام وظيفة unescape() لفك التشفير).

unescape("%u9090");

ويتم بعد ذلك ترميزها في سلسلة باستخدام ترميز "uXXX":

"u9090";

وأخيرًا، يتم ترميزها داخل سلسلة باستخدام ميزة ترميز الكيان:

"邐"

أو

"邐"

كود القشرة بدون قيم خالية

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

B8 01000000 قائمة أوامر إكس 86 EAX,1 // يضبط المسجل EAX عند قيمة 0x000000001

والتي تشتمل على أصفار كجزء من تكوينها الحرفي (يتوسع 1 ليصير 0x00000001) عبر تلك التعليمات:

33C0 XOR EAX,EAX // يضبط المسجل EAX عند قيمة 0x000000000 40 INC EAX // يزيد المسجل EAX إلى 0x00000001

والتي تتمتع بنفس التأثير لكنها تحتاج لوحدات بايت أقل للترميز كما أنها بدون قيم خالية.

كود قشرة أبجدي رقمي قابل للطباعة

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

كود قشرة دليل يونيكود

تستخدم البرامج الحديثة سلاسل يونيكودللسماح بتدويل النص. ومع ذلك، ستقوم تلك البرامج بتحويل سلاسل أسكي إلى يونيكود قبل معالجتها. وتستخدم سلاسل يونيكود التي تم ترميزها في UTF-16 وحدتي بايت لترميز كل رمز (أو أربعة بايت لبعض الرموز الخاصة). وعند تحويل سلسلة UTF-16 إلى UTF-16، يتم إدخال وحدة بايت صفرية بعد كل بايت في السلسلة الأصلية. وقد أثبت Obscou في مجلة ]]Phrack 61[[ أنه بالإمكان كتابة كود قشرة بمقدوره أن يعمل بنجاح بعد عملية التحويل هذه. وهناك برامج يمكنها ترميز أي كود قشرة إلى كود قشرة دليل UTF-16، وذلك استنادًا لنفس مبدأ جهاز فك الترميز الصغير ذاتي التعديل الذي يفك ترميز كود القشرة الأصلي.

Source: wikipedia.org